详细解释
思维链(Chain-of-Thought,缩写 CoT) 最早由 Google Brain 团队 2022 年的论文《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》提出,之后成为提示工程标配。
核心观察是:直接让大模型”给出答案”,它很容易在多步推理上跳步、错步。但如果你先让它”把思考过程说出来”,再给答案——正确率大幅提升。这和人类学生做数学题的过程很像:一步步写草稿 → 最后写答案,比直接盯着题目填答案正确率高。
CoT 分为三种经典写法:
- Few-Shot CoT(少样本思维链,原论文方法):在 Prompt 里给 1–3 个”问题 → 中间步骤 → 答案”的示例,再抛你的问题。模型会模仿示例格式输出推理。
- Zero-Shot CoT(零样本思维链,极简做法):不给任何示例,只在 Prompt 末尾加一句 “Let’s think step by step” / “请一步步思考再给出答案”。2022 年另一篇论文发现这句魔法咒语单枪匹马就能把 GSM8K 数学题分数提 10–20 个百分点。
- Self-Consistency CoT(自洽性):用 CoT 生成 K 条不同的推理路径,最后投票选答案(K=5 常见)。再贵但更稳,适合复杂数学/代码题。
2024 年以后,CoT 的思想进一步延伸为:o1 风格的”长思考推理模型”(内部显式生成 Chain-of-Thought 再压缩给你看答案)、Tree-of-Thoughts(多条推理路线并行搜索)、Graph-of-Thoughts(推理可以回溯合并)。
CoT 前后效果对比(GSM8K 小学数学题,公开数据)
| 模型 | 标准 Prompt 准确率 | Zero-Shot CoT | Few-Shot CoT (8-shot) |
|---|---|---|---|
| GPT-3.5 175B | ≈ 13% | ≈ 40% | ≈ 57% |
| PaLM 540B | ≈ 17% | ≈ 44% | ≈ 58% |
| GPT-4 | ≈ 70% | ≈ 80% | ≈ 92% |
| Llama 3.1 405B | ≈ 50% | ≈ 70% | ≈ 84% |
(数据为公开论文大致区间,具体数值随版本略有变动)
实际使用 CoT 的最佳实践
- 数学/逻辑/代码/多跳文档问答必须开 CoT:直接问基本必错,让它”先思考再回答”是免费的分数提升。
- 翻译/润色/摘要不要开 CoT:反而会让它输出很长的废话步骤,延迟和 TPM 还翻倍。
- 思考与答案分开:建议在 System Prompt 里指定”先用
<thinking>标签写推理过程,然后用<answer>写最终答案”——你消费端解析时只取<answer>部分,又能拿到思考过程做回溯。 - 强推理题可以用 Self-Consistency:对同一问题用不同 Seed 或 Temperature=0.7 出 3 条 CoT 路径,最后投票选答案,平均能再提 5–10%。
- 聚合层批量开:唯元智创 控制台支持在”应用层 Prompt 模板”里统一给所有请求追加 CoT 后缀,免去业务代码里每一处改 Prompt。
常见问题
为什么 CoT 会起作用?明明模型参数没变啊?
目前没有完美的理论解释,但主流观点是”工作记忆假说”:Transformer 在生成每个 Token 时只能看到前面生成过的所有内容(上下文)。你逼它先把中间步骤写出来,就相当于在上下文里给它一张草稿纸,后续生成就能基于这张草稿继续推。不让它写,它要在”一个前向步”里完成所有中间计算,远没有写出来再算简单。
小模型(<10B)用 CoT 有用吗?
原论文有一张经典图:模型能力存在”涌现”效应——模型规模不到某个阈值(大约 60B 以上参数),CoT 不仅没用甚至可能更差(因为它的推理步骤本身就是错的,用错步骤算答案自然错)。2025 年随着小模型对齐越来越好(Llama 3.1 8B、Qwen2.5 7B),这个阈值在下降,经验上 7B+ 的指令微调模型基本能从 CoT 获益。
o1 类”长思考模型”和我写 CoT Prompt 有区别吗?
核心思想相同(都是生成中间推理)但实现不同:你手写 CoT Prompt 是靠提示诱导模型在输出里写推理;o1 类模型是训练/微调阶段就专门用”长推理链 + 答案”的格式训练过,推理阶段内部默认会花数万 Token”慢思考”,最后只把压缩后的答案给你。通常 o1 类的效果更好,但也更慢更贵(按推理 Token 计费)。