把
reasoning_effort从"low"调到"high"的那一刻,模型没有任何变化:没有一层网络变深,没有一个权重被改动,没有加载任何”更聪明的版本”。可是答案质量确实上去了,账单也确实上去了。那多出来的”思考深度”到底从哪来?答案藏在一个容易被忽略的事实里:Transformer 每生成一个 token,才做一次完整的前向传播。所谓思考深度参数,调的不是模型的智力——智力在训练结束那一刻就定死了——它调的是这次推理里,模型被允许用多少个中间 token 去租借串行计算步数。
一句话主线
思考深度参数是一个”串行计算租借额度”的阀门:固定深度的 Transformer 一次前向只能做高度并行、深度受限的计算,每多生成一个思考 token 就多租一步串行计算;各家 API 的 effort/budget 参数,无论实现成硬截断、一行提示词、RL 长度条件还是激活方向,控制的都是同一件事——这条租借通道的开度。
一、先看外壳:每家的”思考深度”旋钮长什么样
截至写作时(2026-08),主流 API 的思考深度参数是这样的:
| 厂商 | 参数 | 形态 | 语义 |
|---|---|---|---|
| OpenAI | reasoning.effort | 档位制(minimal/low/medium/high 等,可用档位随型号) | 引导模型在隐藏推理阶段花多少 token,推理 token 不返回但计费、占输出上限 |
| Anthropic | thinking.budget_tokens → effort | 前者是思考 token 的数值上限(须小于 max_tokens);Claude 4.6 起弃用固定预算,转向自适应思考 + effort 档位 | 控制 Claude “花 token 的意愿” |
thinkingBudget → thinking_level | Gemini 2.5 系列是 token 数(按型号 0–32768,-1 为动态,且是软上限);Gemini 3 起改档位制 | 指导思考阶段的 token 用量 | |
| Qwen3(开源) | thinking budget | token 数;预算耗尽就结束思考、用一段早停提示词引导模型直接出答案 | 同上,且实现完全可见 |
四家形态各异,但把表格竖着读一遍,共同点只有一个:没有任何一个参数在改模型本身,它们全都在控制”思考阶段生成多少 token”。OpenAI 的文档说得很直白:推理 token 是”隐藏 token,不作为消息内容返回,但被模型用来帮助生成最终答案”——你买的不是一个更强的模型,是同一个模型的更多中间生成。
于是问题就变成了:为什么”多生成一些不给你看的 token”,就等于”想得更深”?
二、再拆内核:为什么多生成 token 就是想得更深
2.1 固定深度的天花板
一个 Transformer 的层数 在训练时就固定了。推理时每生成一个 token,输入序列过一遍这 层——不管问题是 “2+3=?” 还是一道 AIME 竞赛题,单次前向传播的计算深度完全相同。
这不只是直觉上的别扭,是有定理的。Merrill 和 Sabharwal 在 ICLR 2024 的论文《The Expressive Power of Transformers with Chain of Thought》(arXiv:2310.07923)里给出了刻画:标准 Transformer 一次前向传播能做的计算,被限制在一个高度可并行、电路深度受限的复杂度类里(在标准假设下位于 附近)。后果很具体——一些看起来很简单的问题,比如判断图上两个节点是否连通、模拟一个有限状态机,“读完题立刻作答”的 Transformer 在理论上就做不了。这些问题的共性是:它们本质上是串行的,第 步依赖第 步的结果,没法用固定深度的并行电路一口气算完。Li 等人的同期工作干脆把这写进了标题:《Chain of Thought Empowers Transformers to Solve Inherently Serial Problems》(arXiv:2402.12875)。
2.2 思考 token = 外置的串行寄存器
出路在生成本身。让模型先生成中间 token 再作答,每个中间 token 都会发生两件事:
- 这个 token 被写回输入序列——第 步的中间结果,物理上变成了第 步前向传播的输入;
- 它的 K/V 向量进入 KV cache——如果你熟悉 KV cache,思考过程的”草稿纸”在显存里就住在这:每一个思考 token 都在 KV cache 里占一行,后续每一步注意力都能回读它。
单次前向的深度还是 ,没变;但串行链条的长度从 1 变成了思考 token 数 。Merrill & Sabharwal 证明了这个链条长度直接决定计算能力的档位:中间步数是对数级时能力提升有限,线性乃至多项式级的中间步数则实打实地扩大了可解问题的类。
所以”思考深度”这个名字其实起对了,只是深度不在网络里,在时间里:
网络深度 是空间上的深度,训练时定死;思考 token 数 是时间上的深度,推理时现租。思考深度参数控制的就是 。
这也解释了为什么这个参数总跟钱和延迟绑在一起:每租一步串行计算,就是一次完整的前向传播、一行 KV cache、一个按输出价计费的 token。串行深度是推理时唯一能现买的稀缺资源,而这个参数就是它的额度审批单。
2.3 光有额度还不够:模型得会用
有一个反对意见值得先接住:如果多生成 token 就是多算力,那让任何模型多说废话岂不是都变聪明了?并不是。表达力定理给的是上限——有了 步中间生成,模型才有可能完成串行计算;但要让这 步真的花在拆解、验算、回溯上而不是花在车轱辘话上,需要训练侧配合(R1 式的结果奖励 RL 就是干这个的)。思考深度参数的前提,是模型已经被训练成”给它串行额度、它就能把额度换成正确率”的形态。参数本身只管开闸,水质由训练决定。
三、拆开阀门:四种实现,干预点一层比一层深
“控制思考 token 数”听起来是一件事,工程上却有四种做法,干预位置从输出端一路深入到隐藏状态。这条谱系值得完整看一遍,因为它恰好是”外壳参数”逐步兑换成”内核机制”的过程。
graph LR
A["① 输出端硬截断<br/>s1 / Qwen3"] --> B["② 输入端文本条件<br/>gpt-oss 'Reasoning: high'"]
B --> C["③ 训练目标内化<br/>L1 / LCPO"]
C --> D["④ 隐藏状态方向<br/>h ← h + αv"]
① 输出端:硬截断与预算强制
最直接的做法是在解码循环里数 token。斯坦福等机构的 s1(arXiv:2501.19393)把它命名为 budget forcing(预算强制),机制朴素到可以在任何推理框架里手写:
- 想让它少想:思考 token 超预算时,强行插入思考结束分隔符,模型只能转入作答;
- 想让它多想:模型要输出思考结束符时,压制这个 token,改为追加一个
"Wait"——模型读到 “Wait” 会继续检查自己刚才的推理,经常因此修正错误。
就靠这一个词的干预,加上 1000 条精选样本、16 张 H100 上 26 分钟的微调,s1-32B 在竞赛数学(MATH 和 AIME24)上比 o1-preview 最高高出 27%。Qwen3 的技术报告(arXiv:2505.09388)用的是同一思路的产品化版本:思考预算耗尽就结束思考,插入一段早停提示语引导模型基于已有思考直接给结论;报告同时指出,调大思考预算能在各类任务上带来一致的性能提升。
这个层面的实现告诉我们一件重要的事:思考深度参数最底层的形态,就是解码循环里的一个计数器加一个特殊 token。没有任何魔法。
② 输入端:参数其实是一行提示词
那 OpenAI 的 reasoning_effort="high" 传进去之后变成了什么?闭源模型看不到,但 OpenAI 开源的 gpt-oss 泄了底:在它必须使用的 harmony 对话格式里,这个参数被聊天模板渲染成系统提示里的一行纯文本:
<|start|>system<|message|>You are ChatGPT, ...
Knowledge cutoff: 2024-06
Current date: 2025-06-28
Reasoning: high
# Valid channels: analysis, commentary, final. ...<|end|>
Reasoning: high 就这么夹在日期和频道声明中间。模型在训练时见过三档(low/medium/high)对应的思考长度分布,于是推理时读到这行字,就自发生成相应长度和结构的思考链。API 参数在这里完成了一次”外壳到内核”的翻译:壳层是一个枚举参数,核层是几个条件 token——和你在 prompt 里写”请仔细想想”没有本质区别,区别只在于模型被系统性地训练过要服从这行字。
③ 训练目标:把长度服从练进权重
文本条件的服从度可以更进一步,直接写进奖励函数。CMU 的 L1(arXiv:2503.04697)提出 LCPO(Length Controlled Policy Optimization):把目标长度写进 prompt(如”用不超过 N 个 token 思考”),RL 奖励同时看两项——答案对不对、长度符不符合约束。训练出的模型能按指令精确控制思考长度,准确率-算力曲线可以平滑滑动;1.5B 的 L1 在相同生成长度下能追平 GPT-4o。这一层的意义是:思考长度从一个被外部强制的量,变成了模型内部的一个可服从的条件变量——闭源 API 的档位制 effort,大概率就是这条技术路线的产物。
④ 隐藏状态:内核里真的有一个”思考速度”方向
最深的一层来自可解释性研究,它回答的正是”这个参数最终拨动了内核里的什么”。《Controlling Thinking Speed in Reasoning Models》(arXiv:2507.03704)对比长思考和短思考轨迹的激活,提取出一个对比方向向量 ,推理时直接改隐藏状态:
取正,思考变短变快;取负,思考变长变谨慎——不需要任何 prompt 和截断,直接在激活空间里拧这个旋钮就行。Venhoff 等人的工作(arXiv:2506.18167)进一步发现,思考里的具体行为——表达不确定、举例验证、回溯——各自对应激活空间里可加减的线性方向。
把四层连起来看就清楚了:思考深度参数在外壳上是档位或数字,进入内核后先变成条件 token,条件 token 经训练与隐藏状态里一组”思考倾向”的线性方向挂钩,这些方向最终决定模型在每一步是继续展开推理、还是收束作答。你调的那个参数,末端连着的是激活空间里一个可测量、可干预的方向。
四、为什么不是拧到最大就最好
如果串行计算这么值钱,effort 永远设 high 不就完了?三个证据说不行。
简单题多想是纯浪费。 腾讯 AI Lab 与上交的过度思考研究(arXiv:2412.21187)标题就是全文摘要:《Do NOT Think That Much for 2+3=?》——o1 类模型面对”2 加 3 等于几”会花掉比常规模型多得多的 token,反复验算一个不需要验算的答案。多租的串行步数没有转化为正确率,全部转化成了账单。
最优分配依赖难度。 DeepMind 与 UC Berkeley 的 compute-optimal 研究(arXiv:2408.03314)系统测了这件事:按题目难度自适应分配测试时算力,比统一预算的 best-of-N 基线效率高 4 倍以上;在小模型已有一定基础的难度区间,把算力花在推理时甚至能胜过一个大 14 倍的模型。但同一篇论文也划了边界:对小模型完全够不着的最难题,再多思考预算也救不回来,该上大模型还得上大模型。思考深度换不来能力上限,只能把训练时埋进权重的能力更充分地兑现出来。
收益会饱和,且饱和点可探测。 EAT(arXiv:2509.26522)给了一个漂亮的探针:在思考中途试探性地拼上思考结束符,看下一个 token 的熵——熵降下来并稳住,说明模型对答案已经确定,继续思考是空转。靠这个信号提前退出,在 MATH-500 和 AIME-2025 上省 13–21% 的 token,准确率不掉。
所以工程上的取舍很清晰:竞赛数学、多步代码调试、需要回溯的规划类任务,把额度开大;抽取、分类、格式转换、延迟敏感的交互场景,把额度关小。灰度地带(比如中等复杂度的分析任务)才是真正需要你拿自己的任务分布去实测的地方。
顺带一提,这也解释了各家 API 的演化方向为什么惊人一致:Anthropic 弃用固定 budget_tokens 转向自适应思考,Gemini 用 -1 表示动态预算、Gemini 3 干脆改成档位,OpenAI 的模型”在各档位内自适应——简单任务少花 token,复杂任务多想”。行业正在把”每道题该租多少串行步数”这个分配决策本身,也从人手里收走交给学习——苦涩教训的又一次小型重演:人类手工设定的预算,竞争不过模型自己学出来的预算分配策略。
五、带走的模型
一张卡片收束全文:
思考深度参数 = 串行计算的租借额度阀门。
- 它不控制什么:权重、层数、模型能力上限——这些训练时已定死;
- 它控制什么:思考阶段的中间 token 数 ,即这次推理租借的串行计算步数;
- 为什么有效:固定深度 Transformer 单次前向 ≈ 受限并行电路,本质串行的问题必须靠中间 token 把结果写回输入、存进 KV cache,才能一步步递推(表达力定理);
- 四种实现,由浅入深:解码循环硬截断(s1/Qwen3)→ 系统提示一行字(gpt-oss)→ RL 长度条件(L1)→ 激活空间线性方向();
- 使用原则:额度只能兑现能力、不能创造能力;按难度分配,警惕简单题上的空转。
最后留一个可以亲手做的验证(本文所有论断来自论文与官方文档,以下数字我尚未亲测):用 ollama 拉一个 gpt-oss-20b,同一道 AIME 题分别在系统提示里写 Reasoning: low 和 Reasoning: high 各跑 5 次,数思考 token 的均值和正确次数;再换一道”2+3=?”级别的题重复一遍。四组数字到手,这篇文章的主线——额度换正确率、以及简单题上的浪费——你就有了自己的论断-数字账本,而不是我的转述。
参考来源
理论:思考 token 为什么扩展计算能力
- Merrill & Sabharwal, The Expressive Power of Transformers with Chain of Thought, ICLR 2024 — arXiv:2310.07923
- Li et al., Chain of Thought Empowers Transformers to Solve Inherently Serial Problems — arXiv:2402.12875
控制机制:预算怎么实现
- Muennighoff et al., s1: Simple test-time scaling(budget forcing)— arXiv:2501.19393
- Aggarwal & Welleck, L1: Controlling How Long A Reasoning Model Thinks With Reinforcement Learning(LCPO)— arXiv:2503.04697
- Qwen Team, Qwen3 Technical Report(thinking budget 机制)— arXiv:2505.09388
- Controlling Thinking Speed in Reasoning Models(激活方向 )— arXiv:2507.03704
- Venhoff et al., Understanding Reasoning in Thinking Language Models via Steering Vectors — arXiv:2506.18167
分配策略:预算该怎么花
- Snell et al., Scaling LLM Test-Time Compute Optimally can be More Effective than Scaling Model Parameters, ICLR 2025 — arXiv:2408.03314
- Chen et al., Do NOT Think That Much for 2+3=? On the Overthinking of o1-Like LLMs — arXiv:2412.21187
- EAT: Entropy After ⟨/Think⟩ for reasoning model early exiting — arXiv:2509.26522
工程实践:各家 API 文档
- OpenAI — Reasoning models 指南(
reasoning.effort与推理 token) - Anthropic — Extended thinking 与 Effort 参数
- Google — Gemini thinking(
thinkingBudget/thinking_level) - OpenAI — Harmony 格式与 gpt-oss-120b 模型卡(
Reasoning: high的一行字实现)