问题:长思维链的 token 焦虑
自 OpenAI 的 o1 模型开启”推理模型”时代以来,长思维链(Long Chain-of-Thought)成为提升 LLM 推理能力的核心范式。模型在回答前先进行大量的内部推理——分步思考、验证、回溯——这确实带来了显著的准确率提升。
但代价也很明显:推理 token 的爆炸式增长。
一个简单的数学题,传统 CoT 可能需要 200-300 个 token 来推理,而长 CoT 模型可能产生 2000-3000 个 token 的思维过程。对于 API 用户来说,这意味着:
- 响应延迟增加 3-5 倍
- 输出 token 成本增加 5-10 倍
- 对于简单问题,大量推理 token 是浪费的
Draft-Thinking 论文正是针对这个痛点提出的解决方案。
核心思路:先列提纲,再写文章
Draft-Thinking 的灵感来自人类的思维习惯:面对复杂问题时,我们通常先在脑中列一个粗略的思路框架,然后再决定哪些部分需要深入展开。
具体来说,模型的推理过程被分为两个阶段:
阶段 1:生成推理草稿(Draft)
模型首先输出一个精简的推理骨架,每个步骤只用简短的关键词或公式表示:
[DRAFT]
1. 总价 = 单价 × 数量 → 25 × 12 = 300
2. 折扣 = 300 × 0.15 = 45
3. 实付 = 300 - 45 = 255
[/DRAFT]
对比传统 CoT 的输出:
让我一步步来解决这个问题。
首先,我需要计算商品的总价。每件商品的单价是 25 美元,
顾客购买了 12 件。所以总价 = 25 × 12。让我算一下,
25 × 12 = 25 × 10 + 25 × 2 = 250 + 50 = 300 美元。
接下来,我需要计算折扣金额。折扣率是 15%,
所以折扣金额 = 总价 × 折扣率 = 300 × 0.15。
300 × 0.15 = 300 × 0.1 + 300 × 0.05 = 30 + 15 = 45 美元。
最后,实际支付金额 = 总价 - 折扣金额 = 300 - 45 = 255 美元。
所以顾客需要支付 255 美元。
Draft 版本只需要约 40 个 token,而完整 CoT 需要约 150 个 token,压缩率达到 73%。
阶段 2:自适应展开(Adaptive Expansion)
关键创新在于:模型会自己判断 Draft 是否足够可靠。如果 Draft 中某个步骤的置信度较低,模型会自动展开该步骤进行详细推理:
[DRAFT]
1. 组合数 C(10,3) = 120 ✓
2. 概率 = 120 × (0.3)^3 × (0.7)^7 → 需要展开
3. 最终结果 → 待计算
[/DRAFT]
[EXPAND step 2]
P = C(10,3) × (0.3)^3 × (0.7)^7
(0.3)^3 = 0.027
(0.7)^7 = 0.7 × 0.7 × 0.7 × 0.7 × 0.7 × 0.7 × 0.7
= 0.49 × 0.49 × 0.49 × 0.7
= 0.2401 × 0.343
= 0.0823543
P = 120 × 0.027 × 0.0823543
= 120 × 0.002223566
= 0.2668
[/EXPAND]
这种”按需展开”的机制确保了:简单步骤保持精简,困难步骤获得充分推理。
训练方法
数据构造
论文从现有的长 CoT 数据集出发,使用规则 + LLM 辅助的方式生成 Draft-Thinking 格式的训练数据:
- 取原始长 CoT 的推理过程
- 提取每步的关键操作和中间结果,生成 Draft
- 标注每步的难度等级(简单/中等/困难)
- 困难步骤保留完整推理,简单步骤只保留 Draft
两阶段微调
Stage 1: Draft Generation SFT
- 训练数据: (问题, Draft) 对
- 目标: 让模型学会生成结构化的推理草稿
- 训练量: ~10K 样本, 3 epochs
Stage 2: Adaptive Expansion SFT
- 训练数据: (问题, Draft, 选择性展开的完整推理) 三元组
- 目标: 让模型学会判断哪些步骤需要展开
- 训练量: ~20K 样本, 5 epochs
Adaptive Prompting(免训练方案)
对于不方便微调的场景,论文也提供了基于提示词的方案:
请先用简短的草稿格式列出推理步骤(每步不超过 15 个词),
然后检查每个步骤的置信度。
只对不确定的步骤进行详细展开。
这种方式在 GPT-4o 和 Claude Sonnet 上都有效,token 节省约 20-30%,但不如微调方案的 40%+ 效果。
实验结果
论文在多个基准上进行了测试,以 Qwen2.5-32B 作为基础模型:
| 基准测试 | 标准 CoT | Draft-Thinking | 准确率变化 | Token 节省 |
|---|---|---|---|---|
| GSM8K | 89.2% | 88.5% | -0.7% | 47% |
| MATH | 71.8% | 70.1% | -1.7% | 52% |
| ARC-Challenge | 92.1% | 91.4% | -0.7% | 38% |
| HumanEval | 78.0% | 76.2% | -1.8% | 24% |
| MMLU | 83.5% | 82.9% | -0.6% | 31% |
核心发现:
- 数学推理任务节省最多(47-52%),因为数学推理的中间步骤高度结构化,容易压缩
- 准确率损失极小(平均 <1.5%),因为关键步骤仍然会被展开
- 代码生成任务节省最少(24%),因为代码本身就是紧凑的,压缩空间有限
与其他方法的对比
| 方法 | Token 节省 | 准确率保持 | 是否需要训练 |
|---|---|---|---|
| Chain-of-Draft | 30-35% | 92-95% | 否(仅 prompt) |
| 长度惩罚解码 | 15-25% | 90-93% | 否 |
| Draft-Thinking (prompt) | 20-30% | 95-97% | 否 |
| Draft-Thinking (SFT) | 40-52% | 96-99% | 是 |
| 蒸馏到小模型 | 60-70% | 85-90% | 是(高成本) |
Draft-Thinking 在”节省量 vs 准确率保持”的权衡上表现最优。
工程落地建议
哪些场景适合用 Draft-Thinking?
强烈推荐:
- 高频数学/逻辑推理调用(如自动化数据分析)
- token 预算受限的场景(如移动端推理)
- 批量推理任务(如考试自动评分)
慎用:
- 需要完整推理过程作为审计日志的场景
- 创意写作(草稿可能过度压缩创意发散过程)
- 多轮对话中的上下文推理(Draft 格式可能影响后续对话理解)
快速实验:用 Adaptive Prompting 测试效果
如果你想在不微调模型的情况下试试 Draft-Thinking 的效果,可以用以下 system prompt:
import openai
client = openai.OpenAI()
system_prompt = """你是一个高效推理助手。回答问题时,请遵循以下格式:
1. 先输出 [DRAFT] 标签内的精简推理草稿,每步用一行表示
2. 检查草稿中每步的置信度
3. 只对不确定的步骤在 [EXPAND] 标签内展开详细推理
4. 最后给出 [ANSWER] 标签内的最终答案
示例格式:
[DRAFT]
1. 步骤一结论
2. 步骤二结论(不确定)
3. 步骤三结论
[/DRAFT]
[EXPAND step 2]
详细推理过程...
[/EXPAND]
[ANSWER]
最终答案
[/ANSWER]"""
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": "一个水池有两个进水管和一个出水管..."}
]
)
token 节省监控
实际部署时,建议监控 Draft-Thinking 的效果:
def analyze_draft_efficiency(response_text: str) -> dict:
draft_tokens = count_tokens_between(response_text, "[DRAFT]", "[/DRAFT]")
expand_tokens = count_tokens_between(response_text, "[EXPAND", "[/EXPAND]")
total_tokens = draft_tokens + expand_tokens
return {
"draft_tokens": draft_tokens,
"expand_tokens": expand_tokens,
"total_tokens": total_tokens,
"expansion_ratio": expand_tokens / max(draft_tokens, 1),
"estimated_full_cot_tokens": total_tokens * 2.2
}
思考与展望
Draft-Thinking 揭示了一个重要趋势:推理模型的未来不在于”推理得更多”,而在于”推理得更聪明”。
从 o1 到 o3 到 o4-mini,我们看到推理模型一直在追求更长的思维链、更多的推理 token。但 Draft-Thinking 表明,大量的推理 token 是冗余的——模型完全有能力识别哪些步骤需要深度思考,哪些只需要快速确认。
这对 LLM 推理成本控制有直接的经济意义。如果 Draft-Thinking 的思路被主流模型采纳,API 用户的推理成本可能降低 30-50%,推理延迟也会相应降低。
更深远的影响在于:这种”分层推理”的思路可能催生新的模型架构——在 Transformer 内部实现 Draft 和 Expand 的动态切换,而不是在生成层面做后处理。这将是推理效率优化的下一个方向。
论文链接:https://arxiv.org/abs/2501.xxxxx(Draft-Thinking: Learning Efficient Reasoning in Long Chain-of-Thought LLMs)