·提示词库
2026 年 Claude 深度推理调参实战——budget_tokens 三条硬规则与摘要式思考计费口径、adaptive thinking 模型支持矩阵(Fable/Mythos 仅 adaptive、5 系默认开启)、effort 五档选型、output_config 位置陷阱、与 prompt caching 的交互,以及迁移决策框架。
Claude Extended Thinking 调参实战:从 budget_tokens 到 adaptive thinking 的迁移(2026)
Extended thinking(扩展思考)是 Claude API 的深度推理机制:模型在给出最终答案前先生成内部思考块,用 token 换正确率。2026 年的关键变化是 adaptive thinking 的引入——在 Claude Sonnet 5 / Opus 5 等新一代模型上,固定 budget_tokens 的手动挡被「模型自己决定想多少」的自适应挡取代,迁移窗口期的兼容性陷阱相当密集。本文基于 2026 年 9 月的 AWS Bedrock 官方文档(Anthropic API 行为一致)整理机制、迁移对照与调参决策。
TL;DR
- 旧写法:
thinking: { type: "enabled", budget_tokens: N },最低 1024、必须小于max_tokens- 新写法:
thinking: { type: "adaptive" }+output_config.effort(low / medium / high / xhigh / max)- Fable 5 / Mythos 5 系只支持 adaptive——旧写法直接 400;Opus 4.6 / Sonnet 4.6 上旧写法已标弃用
- 最大的迁移陷阱:Sonnet 5 / Opus 5 省略 thinking 参数 = 默认开启 adaptive,不改动请求体的应用会多出一笔按输出 token 计费的思考账单
effort必须放在output_config里——放进thinking对象会直接 ValidationException
机制与账单口径:budget_tokens 到底怎么算
手动挡的开启方式是在请求里加 thinking 对象:
{
"thinking": {
"type": "enabled",
"budget_tokens": 8000
},
"max_tokens": 16000
}
三条硬规则:budget_tokens 最低 1,024;它必须小于 max_tokens(thinking 算进输出预算);唯一例外是 Interleaved thinking(beta)配合工具时,上限放宽到整个上下文窗口(200K)。
账单口径有一个容易踩的细节——摘要式思考(summarized thinking):Claude 4 系模型的 API 返回的是完整思考过程的摘要,但你按完整思考 token 计费,而不是按摘要的 token 数。所以「响应里 thinking 块看起来不大」和「账单不高」是两回事。
其他必须知道的口径:
- 流式要求:
max_tokens大于 21,333 时必须用流式响应。 - 参数互斥:thinking 与
temperature/top_p/top_k修改、强制工具调用(forced tool use)不兼容;thinking 开启时也不能 prefill 助手回复。 - 历史思考块不用你清理:API 自动忽略上一轮的 thinking 块,且不计入上下文用量。
2026 转向:adaptive thinking 是什么
Adaptive thinking 让模型按每个请求的复杂度自己决定是否思考、思考多少,不再需要固定预算。官方的表述很直接:adaptive 的表现稳定优于固定 budget_tokens 的手动挡,且不需要 beta header。
模型支持矩阵(Bedrock 文档口径,2026-09):
| 模型 | adaptive | 手动 extended thinking(budget_tokens) | 说明 | |---|---|---|---| | Fable 5.1 / Mythos 5.1 / Mythos 5 / Fable 5 / Mythos Preview | ✅ 唯一选项 | ❌ 400 | 只支持 adaptive,连 disabled 都不行 | | Opus 5 / Sonnet 5 | ✅(默认开启) | ❌ ValidationException | disabled 需显式声明;Opus 5 的 disabled 下 effort 上限 high | | Opus 4.7 | ✅ | ❌ 400 | 支持 adaptive + disabled | | Opus 4.6 / Sonnet 4.6 | ✅ | ⚠️ 已弃用 | 旧写法可用但将在未来模型版本移除 | | Sonnet 4.5 / Opus 4.5 及更早 | ❌ | ✅ | 只支持手动挡 |
迁移对照:三种写法一张表
// 旧:手动 extended thinking(Sonnet 4.5 及更早)
{ "thinking": { "type": "enabled", "budget_tokens": 8000 } }
// 新:adaptive + effort(5 系 / 4.6+)
{ "thinking": { "type": "adaptive" }, "output_config": { "effort": "high" } }
// 新:彻底关掉思考(仅 5 系 / Opus 4.7)
{ "thinking": { "type": "disabled" } }
三个迁移陷阱,按踩坑概率排序:
陷阱 1:Sonnet 5 / Opus 5 上「什么都不传」= 思考默认开启。 这是官方文档专门加粗的行为变更:4.6 时代省略 thinking 字段跑的是「无思考」,5 系同样的请求体会跑 adaptive 并把思考 token 按输出计费。直接换模型 ID 的应用,账单与延迟会无预警上涨。反过来,「用预算表达不思考」(budget_tokens 设很小)在 Sonnet 5 上直接 ValidationException——想关思考只有显式 disabled 一条路。max_tokens 也要重新校准:它是「思考 + 回答」的总硬顶。
陷阱 2:effort 放错了对象。 effort 必须放在独立的 output_config 对象里,塞进 thinking 对象会 ValidationException——两个对象长得太像,这是迁移代码里最高频的手滑。
陷阱 3:对 4.6 继续写 budget_tokens。 不报错(弃用期兼容),但技术债:未来模型版本移除时就是一次线上事故。4.6 的迁移没有成本,建议随本次一起改。
effort 五档怎么选
| 档位 | 行为 | 可用模型 |
|---|---|---|
| max | 总是思考,不设深度上限 | 仅 Opus 4.6 / Sonnet 4.6 / Opus 5 |
| xhigh | 总是思考 + 加深 | 仅 Opus 5 / Opus 4.6 |
| high(默认) | 总是思考,复杂任务深度推理 | 全部 adaptive 模型 |
| medium | 适度思考,极简问题可能跳过 | 全部 |
| low | 最小化思考,简单任务直接跳过 | 全部 |
选型的经验法则:默认 high,按成本与延迟降档。low / medium 的价值在于「模型可以跳过」——对客服分类这类简单任务,跳过思考本身就是收益。max / xhigh 是稀缺能力,留给数学证明、复杂调试、深度分析这类真的需要的地方;注意 Opus 5 在 disabled 状态下 effort 会被强制压到 high。
另一个隐性收益:adaptive 模式自动启用 Interleaved thinking(beta)——模型可以在多次工具调用之间穿插思考,这对 agent 工作流是实打实的增强(不再是一次性预算被工具调用切碎)。
与 prompt caching 的交互
思考参数与缓存的关系在缓存深度指南里讲过一版,这里按 adaptive 语境更新:
- 改 thinking 参数会击穿 messages 前缀缓存——缓存键包含 thinking 配置。同一会话内保持 thinking 配置稳定,或把缓存断点设计在 system / 工具定义层。
- system prompt 与工具定义的缓存不受 thinking 参数变化影响,可放心独立缓存。
- 省钱的正确组合拳依旧是:稳定前缀 +
cache_control+ 按任务档位选 effort,而不是反复横跳 thinking 配置。
决策框架:何时开、开多大
按官方使用建议 + 实践归纳:
- 值得开:多步数学、代码架构决策、复杂 debug、长链路分析——凡是「中间步骤错了答案必错」的任务。
- 不值得开:格式转换、分类打标、简单改写——思考只会加延迟加钱,
low档让它自己跳过。 - agent 场景默认开:interleaved thinking 让工具调用之间的推理免费升级,除非你的任务是纯机械操作。
- 不确定就从
high起步,观察任务成功率与单位成本后再降档——降档的收益立竿见影,升档的收益取决于任务难度分布。
相关指南
- 缓存与思考的完整计费模型:Claude Prompt Caching 深度实战
- 从零接入 Messages API:Claude API 入门
- thinking 参数在 agent 里的用法:Claude Agent SDK 深度实战
- 提示词侧的推理触发技巧:Claude 提示词工程
常见问题
budget_tokens 的最小值是多少?和 max_tokens 什么关系?
最低 1,024,且必须小于 max_tokens——thinking 计入输出预算。唯一例外是 Interleaved thinking(beta)配合工具时,上限放宽到整个 200K 上下文窗口。预算在 32K 以上时收益递减,模型经常用不满。
哪些模型只支持 adaptive thinking?用旧写法会怎样?
Claude Fable 5.1、Mythos 5.1、Mythos 5、Fable 5、Mythos Preview 只支持 adaptive——thinking.type: "enabled" 或 "disabled" 都返回 400。Opus 4.7 支持 adaptive + disabled(手动挡 400);Opus 4.6 / Sonnet 4.6 的手动挡已弃用;Sonnet 4.5 及更早只支持手动挡。
为什么迁移到 Claude Sonnet 5 之后账单变高了?
Sonnet 5 / Opus 5 上省略 thinking 参数等于默认开启 adaptive thinking——这与 Sonnet 4.6「省略即不思考」的行为相反,迁移应用会在请求体不变的情况下多出按输出 token 计费的思考成本。要关掉必须显式传 thinking: { type: "disabled" },同时重新校准 max_tokens。
effort 参数应该放在请求的哪个字段里?
放在独立的 output_config 对象里(如 output_config: { effort: "high" }),不能放进 thinking 对象——放错位置会返回 ValidationException。这是迁移代码里最常见的错误。
改 thinking 参数会让 prompt cache 失效吗?
会击穿包含 messages 的前缀缓存(缓存键含 thinking 配置),但 system prompt 与工具定义的缓存不受影响。工程上的对策:同一会话保持 thinking 配置稳定,缓存断点尽量设计在 system / 工具层。
extended thinking 能和 temperature 或强制工具调用一起用吗?
不能。thinking 与 temperature / top_p / top_k 修改及强制工具调用不兼容,thinking 开启时也不能 prefill 助手回复。Agent 场景的补偿是 adaptive 模式自动启用 Interleaved thinking(beta)——模型可在多次工具调用之间穿插思考。
官方参考资料
- AWS Bedrock — Adaptive thinking(模型矩阵与 effort 五档,本文主要依据)
- AWS Bedrock — Extended thinking(budget_tokens 与账单口径)
- Anthropic — Extended thinking(First-party API 文档)
- Anthropic — Thinking, steering, and cost
本文基于截至 2026 年 9 月 3 日的 AWS Bedrock 官方文档整理(Anthropic API 行为一致);adaptive thinking 仍在快速演进,以官方文档为准。