Thinking模式 = 让模型先写一段「给自己看的草稿」,再出最终答案
Context(上下文)
- system prompt
- CLAUDE.md
- 工具说明
- 你的问题
- 项目文件片段
- 历史消息
- 上次工具返回
↓
↓
Thinking Tokens
先写一段中间推理
假设
排除
定位
↓
Action
text
tool_use
回话
调工具
改文件
跑命令
输入到行动,中间没东西
Context(上下文)
- system prompt
- CLAUDE.md
- 工具说明
- 你的问题
- 项目文件片段
- 历史消息
- 上次工具返回
↓
↓
Thinking Tokens
先写一段中间推理
假设
排除
定位
↓
Action
text
tool_use
回话
调工具
改文件
跑命令
↻
Thinking Tokens 进入当前生成序列,Action 生成时也读回它当上下文
Thinking不是外挂的算法,是模型在训练里多学的一步
训练流水线
Pretraining
预训练
看海量文本
↓
Instruction Tuning
指令微调
学会跟着指令答
↓
RLHF
人类反馈强化
学会答得更顺
↓
多这一步
Reasoning Tuning
推理后训练
学会先写一段思考再答
训练流水线
Pretraining
预训练
看海量文本
↓
Instruction Tuning
指令微调
学会跟着指令答
↓
RLHF
人类反馈强化
学会答得更顺
↓
多这一步
Reasoning Tuning
推理后训练
学会先写一段思考再答
调用时还得开启
没这个字段,模型想推理也没地方写
"thinking": { type: "adaptive" }
→
允许在 content 数组里输出 Thinking 块
Thinking 模式的输出,content 数组里多一个 block
response.content = [
text
{
"type": "text",
"text": "答案..."
}
]
看到问题,直接给答案
response.content = [
thinking
+1 多出来的
{
"type": "thinking",
"thinking": "推理草稿..."
}
text
{
"type": "text",
"text": "答案..."
}
]
先写一段推理,再给答案
同一套 next-token 生成机制——区别只在多写了一个 type 是 thinking 的 block
Reasoning Tuning喂的样本——多了一段<reasoning>标签
普通指令微调样本
Q: 解方程 2(x - 3) = 14
A: x = 10
推理后训练样本
Q: 解方程 2(x - 3) = 14
<reasoning>
Step 1: 展开括号
2x - 6 = 14
Step 2: 两边加 6
2x = 20
Step 3: 两边除 2
x = 10
</reasoning>
<answer> x = 10 </answer>
反复看上万条这种step-by-step样本——模型把"先把推理写出来再答"内化成输出习惯