Claude在3.7 Sonnet版本之后引入了一项叫Extended Thinking的能力,也就是大家常说的推理模式。开启这个模式后,模型不会直接给出答案,而是先花一段时间进行内部推理,把问题拆解、验证、再组织答案,最后才输出结论。这种机制让Claude在数学计算、代码调试、多步骤逻辑推理等场景下的表现明显提升。不过很多朋友虽然听说过这个功能,却不知道具体怎么开启、参数怎么配置、思考预算怎么控制,这篇文章就把这些问题一次性讲清楚。

Extended Thinking的工作原理是什么
要理解Extended Thinking,先要明白普通模式和推理模式的区别。在普通模式下,Claude收到问题后几乎是边生成边决策,每个token都是顺序产出的,模型没有专门的"草稿区"来反复推敲。而Extended Thinking相当于给模型开辟了一块专用的思考空间,模型会在这里展开分析:先拆解问题结构,列出可能的解决路径,逐一验证,发现错误时甚至会自我纠正,最后把思考收敛成正式回答。
思考内容默认以折叠的形式展示在回答上方,你可以展开查看模型的完整推理轨迹。这段思考过程不只是形式上的展示,它会真实影响答案质量。举个例子,面对一道需要多步换算的应用题,普通模式可能直接套用公式而忽略单位转换,推理模式则会在思考阶段主动检查每一步的量纲是否一致,从而避免低级错误。
需要注意的是,思考是有代价的。思考过程消耗的token会计入输出总量,也就是说开启推理模式后,响应时间会变长,费用也会相应增加。这就是为什么Anthropic提供了预算控制参数,让你在质量和成本之间做权衡。
网页端和API分别怎么开启
在Claude网页端(claude.ai)上,开启方式很简单。当你在模型选择器中选择支持扩展思考的模型(如Claude Sonnet 4系列)后,输入框附近会出现Extended Thinking的开关按钮,点击打开即可。开启后发送问题,回答上方会出现"thinking"折叠块,点开就能看到模型的完整推理过程。
如果通过API调用,需要在请求体中显式声明。以Python SDK为例,配置方式如下:
import anthropic
client = anthropic.Anthropic(api_key="your-api-key")
response = client.messages.create(
model="claude-sonnet-4-0",
max_tokens=16000,
thinking={
"type": "enabled",
"budget_tokens":10000 # 思考预算,最低1024
},
messages=[
{"role": "user", "content": "一个三位数,各位数字之和为18,百位比个位大3,求所有满足条件的数"}
]
)
# 思考内容和正式回答分别在不同的content块中
for block in response.content:
if block.type == "thinking":
print("思考过程:", block.thinking[:200])
elif block.type == "text":
print("最终回答:", block.text)
这段代码里有几个关键点。第一,thinking参数必须配合max_tokens使用,且思考预算不能超过max_tokens的值,否则请求会直接报错。第二,budget_tokens的最小值是1024,设置得越高,模型可用的思考空间越大,但消耗也越多。第三,响应结果被拆分成thinking块和text块,你需要按类型分别处理。
还有一个容易踩坑的地方:开启Extended Thinking后,temperature、top_p、top_k这些采样参数都不能随意设置,官方要求temperature固定为1,否则会返回400错误。这一点很多人第一次调用时会遇到,排查半天才发现是参数冲突。
思考预算怎么设置才合理
预算设置没有万能答案,但可以根据任务类型给出参考区间。简单的逻辑判断或单步计算,1000到2000 token足够;代码调试、算法设计这类中等复杂度任务,建议4000到8000;而涉及多约束条件的数学证明、长链条推理,可以放宽到10000以上。判断标准是:如果发现模型的思考过程经常被截断、答案仓促收尾,说明预算给少了。
一个实用技巧是先做小规模测试。用同一批问题分别跑不同预算档位,对比答案质量和总耗时,找到性价比最高的平衡点。对于线上服务,还可以根据问题长度动态调整预算,短问题给小预算,长问题给大预算,避免一刀切造成浪费。
下表给出了常见场景的推荐配置:
| 任务类型 | 推荐预算(token) | 说明 |
|---|---|---|
| 简单问答、格式转换 | 1024-2048 | 任务简单,无需深度思考 |
| 代码调试、Bug定位 | 4000-8000 | 需要逐行分析逻辑 |
| 数学证明、复杂规划 | 10000以上 | 推理链条长,需要充足空间 |
多轮对话与上下文管理的注意事项
在多轮对话场景下使用Extended Thinking,有一套特殊的处理规则。当对话历史中包含之前的思考内容时,你既可以把历史thinking块原样传回去,也可以只保留text块。实测表明,回传思考内容通常能让模型保持更连贯的推理上下文,但会增加token消耗,需要根据实际情况取舍。
另一个重点是上下文窗口的占用。思考内容虽然不一定回传,但它在生成当轮回答时是真实消耗上下文空间的。如果对话历史很长,再加上大额思考预算,很容易撞到上下文上限。建议的做法是:定期压缩历史消息,只保留关键结论,为思考过程腾出空间。
流式输出也支持思考模式。开启stream后,事件流中会先出现thinking_delta类型的增量,等思考结束才开始输出text_delta。前端界面可以根据事件类型做区分展示,比如把思考过程渲染成灰色斜体的折叠区域,让用户感知到模型正在认真分析,体验上反而更好。
# 流式接收思考与回答
with client.messages.stream(
model="claude-sonnet-4-0",
max_tokens=16000,
thinking={"type": "enabled", "budget_tokens": 8000},
messages=[{"role": "user", "content": "分析这段代码的时间复杂度并给出优化方案"}]
) as stream:
for event in stream:
if event.type == "content_block_delta":
if event.delta.type == "thinking_delta":
pass # 实时渲染思考过程
elif event.delta.type == "text_delta":
pass # 渲染正式回答
常见问题与排查思路
最后汇总几个高频问题。第一,调用报错提示thinking参数无效,多半是模型版本不支持,请确认使用的是支持扩展思考的模型。第二,思考内容为空,可能是预算设置过低,任务被判定为无需思考就直接回答了,可以适当提高budget_tokens。第三,开启后响应明显变慢,这是正常现象,思考token同样需要生成时间,如果对延迟敏感,可以考虑只在复杂问题上动态开启。
还有一点值得强调:Extended Thinking不是万能开关。对于翻译、摘要、闲聊这类任务,深度思考带来的收益微乎其微,反而白白增加等待时间和费用。正确的做法是把它用在刀刃上——逻辑推理、数学、代码、多步规划,这些才是推理模式真正的主场。合理区分任务类型,配合弹性预算策略,才能在效果和成本之间找到最佳平衡。
ClaudeExtended Thinking推理模式修改时间:2026-09-15 08:00:34