Paper

Draft-Thinking:让长思维链推理成本降低 40% 的新方法

5 min read ·

问题:长思维链的 token 焦虑

自 OpenAI 的 o1 模型开启”推理模型”时代以来,长思维链(Long Chain-of-Thought)成为提升 LLM 推理能力的核心范式。模型在回答前先进行大量的内部推理——分步思考、验证、回溯——这确实带来了显著的准确率提升。

但代价也很明显:推理 token 的爆炸式增长

一个简单的数学题,传统 CoT 可能需要 200-300 个 token 来推理,而长 CoT 模型可能产生 2000-3000 个 token 的思维过程。对于 API 用户来说,这意味着:

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 格式的训练数据:

  1. 取原始长 CoT 的推理过程
  2. 提取每步的关键操作和中间结果,生成 Draft
  3. 标注每步的难度等级(简单/中等/困难)
  4. 困难步骤保留完整推理,简单步骤只保留 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 作为基础模型:

基准测试标准 CoTDraft-Thinking准确率变化Token 节省
GSM8K89.2%88.5%-0.7%47%
MATH71.8%70.1%-1.7%52%
ARC-Challenge92.1%91.4%-0.7%38%
HumanEval78.0%76.2%-1.8%24%
MMLU83.5%82.9%-0.6%31%

核心发现:

  1. 数学推理任务节省最多(47-52%),因为数学推理的中间步骤高度结构化,容易压缩
  2. 准确率损失极小(平均 <1.5%),因为关键步骤仍然会被展开
  3. 代码生成任务节省最少(24%),因为代码本身就是紧凑的,压缩空间有限

与其他方法的对比

方法Token 节省准确率保持是否需要训练
Chain-of-Draft30-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?

强烈推荐

慎用

快速实验:用 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)

Frequently asked questions

Draft-Thinking 和传统 Chain-of-Thought 的核心区别是什么?
传统 CoT 一步步展开完整推理过程,生成大量中间 token。Draft-Thinking 先让模型生成一个精简的推理骨架(draft),只包含关键步骤和结论,再决定是否需要展开详细推理。这类似于人类先列提纲再写文章。
Draft-Thinking 对哪些类型的任务效果最好?
在数学推理(GSM8K、MATH)和逻辑推理任务上效果最显著,token 节省可达 50% 以上。在代码生成和常识推理任务上也有 20-30% 的节省,但提升幅度相对较小。
这个方法需要重新训练模型吗?
论文提出了两种方案:一种是通过 SFT 微调让模型学会生成 draft 格式的输出,需要少量训练;另一种是 adaptive prompting,通过提示词引导已有模型生成 draft,无需额外训练但效果稍弱。
Draft-Thinking 和 Chain-of-Draft 有什么关系?
Chain-of-Draft 是一种类似思路的早期方法,通过限制每步推理的 token 数来压缩 CoT。Draft-Thinking 更进一步,引入了自适应机制——模型自己决定哪些步骤需要展开、哪些可以保持精简,灵活性更高。
这项研究对实际部署 LLM 的成本影响有多大?
以 GPT-4o 当前定价为例,数学推理任务中每次调用平均可节省 500-800 个输出 token,按百万次调用计算,每月可节省数千美元的 API 费用。对于高频推理场景(如自动化数据分析),成本优化非常可观。