解锁Claude Extended Thinking:从原理到API配置的实战指南

最近我在搭一套智能文档分析流程时,做了一组对比测试:同一个问题,分别发给普通模式的模型和开启了Extended Thinking的模型。结果有点出乎意料——普通模式不仅解题过程简略,还在中间一步漏掉了关键条件;开了Extended Thinking后,模型先复述了一遍问题约束,写下两种可能的解法,把其中一条明显错误的方向排除掉,才给出最终答案。

这就是Extended Thinking最直观的价值:让Claude在输出最终回答之前,先进行一次可控长度、可观测的深度思考。它把过去只能靠提示词暗示的"思维链"变成了API里一个显式的配置项,开发者可以给思考过程分配专门的token预算,模型会在预算内展开草稿、做自我检查、尝试备选路径,然后再生成精炼的正式回答。对做AI应用开发、Prompt工程、复杂任务自动化的朋友来说,这个功能几乎属于必装项,值得花点时间搞明白。

1. Extended Thinking到底解决了什么问题

1.1 一句话理解这个功能

把模型的最终回答想象成一份答卷。普通模式是拿到题提笔就写,写到一半发现思路不对,只能硬着头皮改;Extended Thinking则要求模型先打草稿——在草稿纸上列条件、做演算、试错、检查,确认逻辑闭环了,再工整地把答案誊到答题区。

草稿不会被直接展示给用户,但它消耗"纸张"和"时间",对应到API里就是token预算和响应延迟。这正是Extended Thinking的核心设计:把推理过程和最终输出彻底拆开,让推理成为独立的、有预算约束的、可以被程序读取的中间产物。

1.2 普通思维链提示的问题在哪

很多人之前会在系统提示里写"Let's think step by step",试图让模型逐步推理。这个土办法确实有效,但它有几个绕不过去的短板:

第一,推理和最终回答混在同一段文本里。模型一边推理一边组织语言,它的注意力要在"想"和"写"之间来回切换,一旦最终答案需要非常精炼,推理过程很容易被压缩成几句口号式的"分析"。

第二,思考长度完全不可控。你没法告诉模型"这道题最多想2000个token,想完就停"。结果就是简单的题目它也可能长篇大论,复杂的题它可能两三句就跳到结论。

第三,也是最隐蔽的问题:模型可能在输出时才临时编造一套"推理"来合理化答案,它并不真的在回答前进行推理。这种先有结论再补解释的现象,会让用户误以为结论已经经过了逻辑验证,实际上没有。

Extended Thinking用工程手段解决这三个问题:推理有独立的位置承载,有明确的token预算,并且在响应结构上保证它先于最终答案产生。它至少让"思考过程"这件事变得可以观测、可以控制、可以审查。

2. Extended Thinking的核心机制:推理Token、预算与签名

2.1 从"边写边想"到"先想后写"

开启Extended Thinking后,请求会多一组配置。模型先生成一段内部推理内容,这段内容对应API响应里的推理块,然后基于这段推理再生成最终文本。你拿到响应时,能同时看到"草稿"和"正式答案"两部分。

从工程角度看,这相当于把原来一次性的自回归解码拆成了两个阶段:推理阶段和答案阶段。推理阶段的token全部计入输出token,也按输出价格计费。这就是为什么开启这个功能后账单会明显变贵——它不是免费的魔法,而是模型真的多写了一段内容。

响应的大致结构长这样(不同版本字段名会有差异,请以官方最新文档为准):

{ "content": [ { "type": "thinking", "thinking": "复述问题条件……先假设……这里有个陷阱……改用贝叶斯公式……", "signature": "一段用于续接的签名" }, { "type": "text", "text": "根据计算,最终答案是……" } ] }

额外补充一点:如果推理内容触发了隐私保护规则,API可能会返回一个占位块而不是完整草稿。这属于合规设计,不是Bug,不能当作模型出故障。

2.2 budget_tokens:模型能"想"多久

budget_tokens大概是Extended Thinking里最需要理解透的参数。它决定了模型可以生成多少推理token,类似草稿纸的张数。

预算太小时,模型还没把问题想透就得强行收尾,效果与普通模式差距不大;预算太大,模型确实会绕更多的路、做更多的自我检查,但代价是响应变慢、成本上升。我的习惯是先给一个保守值跑通,再逐步往上加,观察答案质量的变化曲线。当预算增加到一定程度后,答案质量往往不再提升,甚至因为想得太多而出现过度修正——那个拐点就是性价比最高的配置。

下面是我常用的预算参考档位:

任务类型建议预算说明
简单问答、分类、提取不使用杀鸡不用牛刀
中等数学题、常规代码调试2048-4096足够走完"假设-验证-修正"
复杂代码重构、多步骤推理8192左右需要试错空间
长文档综合分析接近上限模型需要先摘录再组织

2.3 签名机制与多轮续接

一个容易被忽略的细节:推理内容不是普通的文本,它带有一个签名。签名存在的意义是保证推理链的完整性和连续性,类似给一份草稿加了个防伪标记。

当你做多轮对话时,如果上一轮产生了推理内容,下一轮请求必须把上一轮的签名回传,否则API会拒绝续接或报签名无效。这其实是一种安全设计——防止有人篡改中间的推理环节来操纵最终输出。实操中常见的报错"signature invalid",八成就是你在续接时没有正确传递签名。

3. 实操:在API中开启Extended Thinking的完整步骤

3.1 请求配置与最小示例

下面是一个最小化的Python示例,使用官方SDK开启Extended Thinking,字段名以你实际使用的API版本为准:

import anthropic client = anthropic.Anthropic() response = client.messages.create( model="claude-sonnet-4-20250514", max_tokens=8192, temperature=1.0, thinking={ "type": "enabled", "budget_tokens": 4096 }, messages=[ {"role": "user", "content": "你的问题放在这里"} ] )

注意两个细节:

第一,开启thinking后,官方建议把temperature设为1。这个模式下的推理本身已经带有探索性,过低的温度会让思考路径变窄,过高的温度又容易跑偏。

第二,max_tokens要同时覆盖推理token和最终答案token。如果你把总输出限制设得太小,模型可能推理到一半就被截断,最终回答都没生成出来。我见过太多人只把max_tokens设成几百,然后来问"为什么开了思考模式反而没输出"——就是这个原因。

3.2 从响应中读取推理内容

拿到响应的方式很简单:

signature = None for block in response.content: if block.type == "thinking": signature = block.signature print("推理草稿:", block.thinking) elif block.type == "text": print("最终回答:", block.text)

如果你想拿推理内容做二次分析,比如提取关键步骤、做后续任务输入,直接存这个块就行。如果遇到的是隐私遮蔽类型的推理块,API会在响应中保留占位,但你拿不到原始文本,这也是为什么产品设计时不要把推理内容当成可依赖的公开数据。

3.3 多轮对话时的签名回传

续接对话时,把上一轮拿到的signature传给下一次请求:

client.messages.create( model="claude-sonnet-4-20250514", max_tokens=8192, temperature=1.0, thinking={ "type": "enabled", "budget_tokens": 4096 }, thinking_signature=signature, messages=[ {"role": "user", "content": "第一轮问题"}, {"role": "assistant", "content": "第一轮回答摘要"}, {"role": "user", "content": "顺着刚才的思路继续追问"} ] )

不同版本的SDK对签名参数的位置叫法不一样,有的放在thinking配置里,有的是顶级参数,但逻辑是一致的:推理产生了,签名就必须跟着走。我不建议你在续接时丢弃上一轮推理内容只在messages里塞一个assistant文本,那样会切断推理链,模型等于重新开始想。

3.4 预算怎么定才合适

我推荐一个三分法来定预算:

先做端到端实测。从一个较低的预算开始跑,比如2048。如果答案质量不达标,翻倍到4096再跑一次。如果翻倍之后质量提升明显,继续加;如果提升微弱,就停在上一个档位。这种方法比一上来就给大预算更省成本,也能帮你找到"够用"的最小值。

另外,对延迟敏感的应用,预算要往下压。推理token是一步步生成的,预算越大,首个响应token出现的时间越晚。用户体验要求首字快出的场景,该妥协就妥协,不要为了追求完美答案牺牲交互等待。

4. 实战效果:我实测过的三类任务

4.1 数学推理:一道贝叶斯概率题

我用一道经典的贝叶斯题做对比测试:

有两个盒子,A盒中有3枚金币和1枚银币,B盒中有1枚金币和3枚银币。随机选一个盒子,再从其中随机摸出一枚硬币,发现是金币,问这枚硬币来自A盒的概率是多少。

普通模式下,模型直接写出了贝叶斯公式,但中间漏掉了先验概率P(A)=1/2的显式计算,最终给了一个含混的结论。

开了Extended Thinking后,模型的推理流程明显不同。它先在草稿里复述了问题条件,写下了P(A)=1/2、P(G|A)=3/4、P(G|B)=1/4,然后分别计算两条路径的联合概率:

P(A且G) = 1/2 × 3/4 = 3/8 P(B且G) = 1/2 × 1/4 = 1/8

归一化之后得到P(A|G) = (3/8) / (3/8 + 1/8) = 3/4。

关键在于,推理块里能看到模型自己写了一句"等一下,这里需要把两个分支的贡献做归一化,不能只看其中一条路径"。这种自我纠错的痕迹在普通模式里几乎见不到,因为它根本没有空间做这一步。

这题比较基础,但道理是通用的:需要精确公式、多步骤推导、边界条件判断的任务,Extended Thinking的收益最明显。

4.2 代码排查:偶发超时问题的定位

我让某开发者用这个功能排查一个偶发的接口超时问题,那次的对比让我印象很深。普通模式下,模型给出的建议是"增加客户端超时时间并加入重试机制"。这个建议不算错,但完全没有触及问题的核心。

开启思考模式后,模型的诊断逻辑完全不同。它先列出了一张候选清单:网络抖动、客户端重试逻辑缺陷、服务端线程池耗尽、数据库慢查询、网关限流。然后根据给出的日志特征逐项排除——日志里没有数据库慢查询的迹象,所以数据库这条先划掉;超时发生在固定时间窗口,不是随机网络抖动;最终锁定了客户端在短窗口内的重复请求触发了服务端限流。

这个案例给我的启发是:思考模式在"诊断类"任务里的价值,不只在于给出结论,更在于输出一条可验证的排除路径。哪怕它最后锁定的原因不够准确,这种结构化的推理过程本身,对工程师做二次判断也是极有帮助的。

4.3 长文档分析:收益最大但别指望它消灭幻觉

我在多文档综合分析任务上也做了测试。普通模式会快速给出一个概括性的回答,但经常把不同文档里的数据混在一起;开启Extended Thinking后,模型会在推理阶段先摘录各文档的关键信息,再判断哪些信息互相矛盾,最后才组织答案。整体上看,引用准确性和信息归因都上了一个台阶。

但有一件事必须泼冷水:思考模式不能解决幻觉问题。它能让模型多想一会儿,但不能让它"想到的全是真的"。如果模型本身没有见过相关事实,或者文档里根本没有对应信息,它照样会在推理里编造一个合理的解释。因此涉及事实性、时效性的场景,还是得靠外部检索和验证兜底,思考模式只是让错误出现得更少、也更容易被追踪。

5. 常见问题与排查技巧实录

症状可能原因解决方向
推理很长,但答案依然是错的推理方向从一开始就跑偏了在系统提示里要求先列出问题约束,再做假设,最后验证
响应延迟明显上升预算过大,推理token量太大降低预算,或者把任务拆成多个小步骤分别思考
响应里根本没有thinking字段版本不支持、参数未生效、字段名有变化确认模型版本,检查请求参数,查看官方文档的响应格式
推理块被截断,没有最终答案max_tokens不够,推理吃光了全部预算调大max_tokens,或调小budget_tokens
多轮对话时报告签名无效没有回传上一轮的signature,或签名被改动正确传递签名,不要修改推理块内容
账单明显变贵推理token也按输出token计费简单任务不开启,用路由把复杂任务分配进来

这里单独讲一个被问得最多的坑:模型推理方向跑偏。当你发现它想了一大堆却给出错误答案时,不要盲目加大预算,那只会让它在错误方向上走得更远。正确做法是在系统提示里加入结构约束,例如要求模型:

推理过程中必须依次完成:1. 列出所有已知条件和未知量;2. 写出可能的解法并标记最可疑的一个;3. 对最终结论做一次反向验证;4. 如果发现矛盾,回到第2步修正。

这种约束能把思考过程拧到正确的轨道上,而且它提取出来的结果也更规整,方便程序做后续处理。

6. 几点实测经验与避坑总结

最后分享几个我在实际项目中积累的操作经验。

第一个经验是把Extended Thinking当作"先遣分析器"来用,而不是单纯的答题开关。我会先让模型开启思考模式产出一份结构化推理报告,把这个报告存下来,之后再做总结、问答、生成文档时,普通模式直接引用这份报告就够了。这样既拿到了深度的中间产物,又不用每次都付出思考模式的成本。

第二个经验是关于隐私设计的。推理内容可能包含用户原始输入、模型自身的推测、甚至一些不该展示的中间结论。如果做面向终端用户的产品,千万不能把完整推理草稿直接放在界面上。官方API用占位块做隐私遮蔽,这个设计本身就是给开发者提个醒:思考过程是内部数据,不是展示素材。

第三个经验是控制预期。Extended Thinking是个好东西,但它本质上只改变"思考过程的结构",不改变"模型知识的边界"。它不会让模型突然变聪明,只是让它更充分地调用已有的能力。你该做检索还是做检索,该搭知识库还是搭知识库,别指望一个参数解决所有问题。

我个人的习惯是,在做任何涉及复杂推理的任务时,先以普通模式跑一遍拿基线答案,再开启Extended Thinking对比一次。如果两次结论一致,说明任务足够简单,后续就不开思考模式;如果两次结论不一致,我会重点检查模型的推理链条,判断哪一次更靠谱。这个流程虽然多花一次请求,但对判断"你的任务到底适不适合开思考模式"非常有效,长期用下来反而省了不少钱。

相关新闻

网络攻击类型与防御实战:从DDoS到SQL注入的纵深防御指南

网络攻击类型与防御实战:从DDoS到SQL注入的纵深防御指南

网络安全这个话题,聊起来容易走两个极端:要么全是理论模型和安全标准,读得人昏昏欲睡;要么全是攻击演示和工具操作,看完还是一头雾水。干安全运维这些年,我最大的感受是,网络攻击和防御本质上是…

2026/10/20 18:36:37 阅读更多 →
企业微信API发消息接口实战:私聊、群聊与媒体格式详解

企业微信API发消息接口实战:私聊、群聊与媒体格式详解

上周有个做运维的朋友跑来找我,问能不能让服务器定时往员工的企业微信里推日报,往部门群发告警图片,甚至给客户群群发带附件的资料。聊下来发现,他最困惑的点不是“接口长什么样”,而是企业微信发消息这回事&#xff0…

2026/10/20 18:38:38 阅读更多 →
open-code-review:从PR模板到合并保护的代码评审自动化实践

open-code-review:从PR模板到合并保护的代码评审自动化实践

1. 为什么我要做 open-code-review 这个项目干开发十多年,我见过太多因为“改了一行代码”引发线上事故的现场。最典型的场景是这样的:一个 PR 在 GitLab 上挂了三天没人看,第四天负责人急着发版,自己点了个 approve 就合并了&…

2026/10/20 18:38:35 阅读更多 →

最新新闻

IIEM海面散射系数MATLAB实现:二重积分与数值陷阱解析

IIEM海面散射系数MATLAB实现:二重积分与数值陷阱解析

简介:提供一套开源的改进积分方程模型(IEM)Python实现,面向粗糙表面电磁散射研究,适用于遥感、雷达成像等需要二重积分数值计算的场景,为已有一定编程基础的科研与工程人员提供可直接运行的基础代码。整套资…

2026/10/20 20:05:13 阅读更多 →
C++匿名对象与类生命周期:霓虹游牧者实战解析

C++匿名对象与类生命周期:霓虹游牧者实战解析

1. 项目概述1.1 一句话理解这个项目你给一个虚构的赛博朋克游戏场景编写NPC的AI控制逻辑。这个NPC名为“Cyber仿生人”,身份是“霓虹游牧者”。要求用C的类与对象知识,实现一个匿名对象的完整演示程序。我猜你已经对C的基础语法有一定了解(变…

2026/10/20 20:05:13 阅读更多 →
SQL注入原理详解:从数据到代码的越界与手工验证

SQL注入原理详解:从数据到代码的越界与手工验证

1. 从一条登录框说起:SQL注入到底在注什么很多人第一次接触SQL注入,都是从一条看起来人畜无害的登录框开始的。用户名输入admin,密码随便填个123456,点击登录,页面提示“密码错误”。然后你把用户名改成admin --&#…

2026/10/20 20:05:13 阅读更多 →
matplotlib中文乱码显示方框?一套工程化字体配置方案彻底解决

matplotlib中文乱码显示方框?一套工程化字体配置方案彻底解决

刚开始用matplotlib画图,第一张图就满屏小方框,标题、坐标轴全是豆腐块一样的空框框,换成个折线图画中文字体,依旧原样。这个问题在中文开发者圈子里几乎算是入门必经关卡,项目标题看着简单——matplotlib无法显示中文…

2026/10/20 20:05:13 阅读更多 →
AI绘画提示词反推总差口气?掌握这3招还原图像生成底层逻辑

AI绘画提示词反推总差口气?掌握这3招还原图像生成底层逻辑

我玩AI绘画也有不短的时间了,几乎每次看到别人发的惊艳图,第一反应都不是“哇”,而是“这图提示词到底怎么写的”。所以我也很自然地走上了反推提示词这条路。但很快我就发现一个问题:用各种反推工具拿到的词,哪怕看起…

2026/10/20 20:05:13 阅读更多 →
放弃图形化工具,用Git Bash高效管理本地文档的完整指南

放弃图形化工具,用Git Bash高效管理本地文档的完整指南

1. 为什么我最终放弃了图形化工具,回归 Git Bash 管理本地文档很多人第一次接触版本管理,都是从图形化客户端开始的。点几下按钮,仓库就建好了,提交记录也看得见,似乎没什么门槛。但用得越久,我越发现一个尴…

2026/10/20 20:04:05 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →