Agent 推理模式对比:Extended Thinking vs Streaming Output,该如何选择?
成本、速度、准确率三角权衡
Agent 推理模式对比:Extended Thinking vs Streaming Output,该如何选择?
成本、速度、准确率三角权衡
2024 年最大的 AI 趋势是「推理模式」的分化。Claude 的 Extended Thinking(扩展思考)和 OpenAI 的 o1 采用「长链推理」策略,在数学、编程、科研任务上准确率高达 92%+,但成本是标准模型的 5-10 倍;而 GPT-4o 的流式输出(Streaming)则快速廉价,但在需要多步骤验证的任务上容易出错。本文帮你构建「选择矩阵」,根据任务类型、时延要求、成本预算来做正确的推理模式选择。
Agent 推理模式对比:Extended Thinking vs Streaming Output
核心差异一句话
为什么会有两种模式?
在 2023 年之前,所有 LLM 都采用「单次前向推理」:输入 prompt → 模型一次性生成所有 token 到 EOS(序列结束)。这导致:
2024 年,两个突破打破了这个平衡:
实战对比:修复一个复杂 Bug
场景
生产环境崩了,一个用户的订单状态显示错误。需要 Agent 分析数据库日志、追踪事务流、给出根因和修复方案。用法 1:Streaming(直接输出)
typescript
const response = await anthropic.messages.create({
model: 'claude-opus-4-1',
max_tokens: 1024,
messages: [
{
role: 'user',
content: `这是数据库日志... [1000 行日志]
请分析根因并给出修复方案`
}
]
});
输出(5 秒):
根据日志,订单 #12345 在 2024-05-15 14:32:15 时更新失败。
可能原因:并发竞态条件。
建议:添加乐观锁。
问题:太浅,没有追踪完整事务链。修复后发现其实是 deadlock。成本:$0.05,但修复失败,总成本 = $0.05 + 2 小时人工 debug。
用法 2:Extended Thinking(深度推理)
typescript
const response = await anthropic.messages.create({
model: 'claude-opus-4-1',
max_tokens: 10000,
thinking: {
type: 'enabled',
budget_tokens: 8000 // 最多用 8000 token 来思考
},
messages: [
{
role: 'user',
content: `这是数据库日志... [1000 行日志]
请彻底分析根因并给出修复方案`
}
]
});
思考过程(对用户不可见):
检查时间戳:订单创建 14:30:00,第一次更新 14:32:15
查看日志中的事务 ID:TX_5672_A 和 TX_5672_B 在同一毫秒启动
追踪 TX_5672_A:获取 orders 表读锁 → 更新 customers 表 → 等待 orders 写锁(BLOCKED)
追踪 TX_5672_B:获取 orders 表写锁 → 等待 customers 表读锁(BLOCKED)
结论:A 和 B 形成死锁环!
根本原因:事务持有时间过长,A 先获取 orders 读锁,B 同时获取 orders 写锁
修复方案:修改订单更新逻辑,改为单个事务内完成所有操作
最终输出(45 秒):
死锁根因已识别:
事务 TX_5672_A 持有 orders 表读锁,等待 customers 表写锁
事务 TX_5672_B 持有 orders 表写锁,等待 customers 表读锁 修复步骤:
重构订单更新逻辑为单一事务(见代码块)
添加锁超时配置(max_lock_wait = 5s)
恢复被锁定订单:UPDATE orders SET status='PENDING' WHERE locked_at < NOW()-1min
监控:添加慢查询告警,锁等待 > 100ms 时告警
成本对比:
结论:虽然 Extended Thinking 单次成本 10 倍,但总成本低 15 倍!
选择矩阵
混合策略:两阶段 Agent
最优实践是两阶段:
阶段 1:快速筛选(Streaming)
typescript
// 先用 Streaming 快速判断问题级别
const { problem_level } = await chatWithStreaming(`
根据这个错误日志,判断问题级别(critical/high/medium/low)并给出初步诊断
`);
阶段 2:深度诊断(Extended Thinking,只在 critical/high 时触发)
typescript
if (problem_level === 'critical') {
const { analysis } = await chatWithExtendedThinking(`
这是我的初步诊断... [日志]
请进行彻底分析并验证我的诊断是否正确
`);
}
效果:
API 调用示例
Streaming(当前标准 API)
typescript
import Anthropic from '@anthropic-ai/sdk';const client = new Anthropic();
async function quickResponse(prompt: string) {
const stream = client.messages.stream({
model: 'claude-opus-4-1',
max_tokens: 1024,
messages: [{ role: 'user', content: prompt }]
});
for await (const chunk of stream) {
if (chunk.type === 'content_block_delta' && chunk.delta.type === 'text_delta') {
process.stdout.write(chunk.delta.text); // 实时输出
}
}
}
quickResponse('解释一下什么是 MCP');
Extended Thinking(新增 API)
typescript
async function deepAnalysis(prompt: string) {
const response = await client.messages.create({
model: 'claude-opus-4-1',
max_tokens: 10000,
thinking: {
type: 'enabled',
budget_tokens: 5000 // 最多 5000 token 用于思考
},
messages: [{ role: 'user', content: prompt }]
}); // 提取思考过程和最终回复
let thinking = '';
let response_text = '';
for (const block of response.content) {
if (block.type === 'thinking') {
thinking = block.thinking;
} else if (block.type === 'text') {
response_text = block.text;
}
}
console.log('思考过程:\n', thinking);
console.log('\n最终回复:\n', response_text);
}
deepAnalysis('这是一个复杂的系统故障,请分析...');
成本计算
Streaming(标准 pricing)
例:1000 token 输入 + 500 token 输出 = $0.0075
Extended Thinking(新增 thinking tokens)
例:1000 token 输入 + 5000 token thinking + 500 token 输出 = (1000 × $0.003 + 5000 × $0.003 + 500 × $0.015) / 1M = $0.021/1M = $0.000021 per 调用(单次调用成本仍很低)
总结:何时升级到 Extended Thinking?
简单判断法:如果这个错误答案会导致财务损失、数据丢失或用户投诉,用 Extended Thinking。否则用 Streaming。
相关工具