跳到主要内容

思维链 — 让模型把步骤写出来

这一章讲三件事: 为什么「写步骤」能解锁推理类任务(CoT 及它的三个流派);规范 Prompt 的四条硬要求(哪条违反了会出什么事故);以及什么时候该用、什么时候不该用 CoT。 链条位置:第 06 章的示例是「定位器」,这一章的示例升级为「示范动作」——给模型看的不再只是答案长什么样,而是思考过程长什么样。

1. 顶层全景

现象:参数翻倍,算术/常识/符号推理不涨分 —— Flat Scaling Curves
解法:把中间推理步骤写进输出(像人一样一步步想)
├─ 按部就班:一步接一步 CoT / Zero-Shot CoT / Auto-CoT
├─ 三思后行:每步评估可回溯 ToT(树)/ GoT(图)
└─ 集思广益:多路径投票 Self-Consistency
图说:三种模式不是并列的技巧,是对「推理长什么样」的三种假设:一条线、一棵树、一捆线。

2. CoT:把思考过程外化

书给现象起了个名字:Flat Scaling Curves——面对算术求解、常识判断、符号推理,模型参数规模的增长并未带来预期的性能突破1。解法借自人类:复杂问题会逐步构建推理路径再给答案。思维链提示(CoT)就是引导模型在生成答案时带出一系列中间推理步骤2

最早的做法是手写几个带推理过程的示例放进 Prompt。书的走查题是一道浣熊算术3:

示例 Q:大白兔找到12罐奶糖,打翻4罐,又找到6罐,共几罐?
示例 A:先有12罐,打翻4罐,剩 12-4=8 罐;后来又找到6罐,共 8+6=14 罐。
问题 Q:浣熊爸爸有8包干脆面,给浣熊妈妈3包,剩下的处理了又获得6包,
自己吃了2包,剩下的都给小浣熊,小浣熊手里有几包?
模型 A:8-3=5 包 → 处理了这5包,又获得6包新的,吃了2包,剩 6-2=4 包。
所以小浣熊手里有4包干脆面。
图说:模型模仿示例「一步一步」作答;没有中间步骤时,同样的题它可能直接报一个错数。

手写示例费时费力、还依赖编写质量,于是有两个自动化变体。Zero-Shot CoT 连示例都不用,在问题后面加一句「Let's think step by step(让我们一步一步思考)」当触发词;它分两阶段——第一阶段生成推理链,第二阶段把「问题+推理链+因此,最终答案为」再喂回去,取最终答案4Auto-CoT 更进一步:把问题库聚类(相似的题目归成一堆),从堆里选问题,用 Zero-Shot CoT 自动生成推理链示例,再拿这些示例去答用户的问题——示例全程机器生成5

3. 三个流派

3.1 三思后行:ToT 与 GoT

按部就班的问题是:一条路走到黑,错了不能回头。思维树(ToT) 给推理加了「评估+回溯」,四个构件6:

  • 拆解:把问题拆成思维步骤,粒度按任务定——数学推理以一行等式为一步,创意写作以内容提纲为一步;

  • 衍生:从当前状态生成多个下一步。宽思维空间的任务(写作)用多样示例启发,窄空间的任务(24 点)用明确规则约束;

  • 评估:让模型判断各节点靠不靠谱,便于量化的任务打分,不便量化的投票;

  • 搜索:深度优先、广度优先,或 A*、蒙特卡洛树搜索等启发式。

书用 24 点游戏走了全程:手上是 4、9、10、13 四张数,要凑 24。模型先衍生多个两数运算(10−4=6 剩 6,9,13;4+9=13 剩 10,13,13……),再逐节点评估「剩余数字还能不能凑到 24」(可以/可能/不可能),广度优先遍历,砍掉死路,直到得出 4×6=24 这类可行解7GoT(思维图)再进一步:把树扩展成有向图,节点是解、边是推导,多出两个能力——思维自我评估修正,以及把多条路径的结果聚合成综合解8

3.2 集思广益:Self-Consistency

第三种假设是:与其把一条链写深,不如写多条链再投票。Self-Consistency 三步:随机采样生成多条推理路径;收集每条路径的最终答案;取出现频率最高的答案。它不挑 CoT 形式,可与任何 CoT 变体叠加9。书的走查里,三条路径对同一道浣熊算术给出 4、9、4 三个答案——多数投票选出 4;那条算成 9 的路径错在把「处理掉」理解反了,恰好被投票机制淘汰10

4. 规范 Prompt:四条硬要求

技巧层面,书把「怎么写好一个 Prompt」落成四条,每条都配了翻车案例11:

  1. 任务说明要明确:用明确动词(判断/分类/生成,别用「处理」)、具体名词;长 Prompt 里任务说明放开头和结尾——模型对首尾信息的关注远超中段12。反例:「分类下面的句子」没说按什么分,模型回了一句「幽默笑话」。

  2. 上下文丰富且清晰:示例要贴近问题;塞进大段无关细节(书例:一个几百字的小浣熊故事当示例)反而稀释重点,答案跑偏。

  3. 输出格式要规范:指定 JSON/CSV(两种机器好拆解的表格文本格式)等结构,并给一个带关键字的格式示例;不指定就只能拿到自由文本,下游拆解成本高。

  4. 排版要清晰:用分隔符(划开各部分的记号,如 #)、空行、标题分开各部分。书里的翻车案例最直观:把示例与问题之间的分隔符全删掉,模型把示例也当成了待分类输入,输出了一整份 JSON 数组13

提问方式上还有两招:复杂问题用「分而治之」拆成子问题分步引导再归纳(小浣熊吃几包干脆面=一天热量需求 600–900 千卡 ÷ 每包 250–350 千卡 ≈ 2.7 包);不满意就追问——深入追问挖细节、扩展追问拓广度、反馈追问指错纠偏(书例:模型先说「小浣熊可以适量吃干脆面」,用户反馈吃了呕吐后,模型道歉改口并给急救建议)14

5. 何时用 CoT:三个判据

这一节是本章的实用核心。 书给了三个维度15:

  • 看任务:算术、常识、符号推理等复杂推理用 CoT;情感分类、常识问答这类简单任务,标准 Prompt 已够,加了反而引入不必要的复杂性

  • 看规模:CoT 在千亿级模型上显著起效(PaLM、GPT-3);小模型上可能生成逻辑不连贯的思维链,结果比不用还差——书给的对照里,十亿参数模型把浣熊算术一步步算对了过程,却在结论处写出「5+4=9 包」16

  • 看训练:没做过推理指令微调的模型(GPT-3 早期、PaLM、LLaMA2-13B-Base、Baichuan2-13B-Base)靠 CoT 提示激发;已经指令微调过的(ChatGPT、GPT-4、LLaMA2-13B-Chat)无提示也会自发生成推理链,有时不加 CoT 指令反而更好——书推断它们在微调中已经把 CoT 内化了17

灵活使用也有两手:用少样本示例控制输出的详略(要不要展示步骤)与风格;按场景选形式——纯逻辑分析用 Zero-Shot/Auto CoT,高可靠任务用 Self-Consistency(如代码生成多版本取一致),创意任务用 ToT/GoT 探索情节18

最后是「善用心理暗示」:硅谷那句「Fake it till you make it」被书借来说明两件事——角色扮演(「你是一位专业的小浣熊营养顾问」能让回答更专业更贴合角色)与情景代入(把模型放进「90 年代的街头」,回答干脆面就从「口味丰富」变成「水浒卡、一代人的童年记忆」)19

6. 作者的判断与证据

  • 给了证据的:浣熊算术在 CoT 前后的对比;千亿/十亿模型的 CoT 差异(5+4=9 案例);Self-Consistency 的三路径投票;删分隔符导致的 JSON 数组事故。

  • 作者的转述:「已内化 CoT」是书基于「无提示反而更好」现象的推断,书用词是「可能已经内化」——这是现象归纳,不是机制证明。

  • 分类是本书的加工:「按部就班/三思后行/集思广益」是书对 CoT 变体的归纳框架,原始论文里没有这个三分法;引用变体本身时按论文,引用三分框架时按本书。

7. 边界与局限

  • 书没讨论 CoT 的已知副作用:推理链写对了答案也可能错、模型可能「顺着示例编步骤」(事后合理化);思维链的中间步骤是否反映真实计算过程,书存而不论。

  • ToT/GoT 的多轮调用成本(一次问题要几十次模型调用)书中未量化。

  • 「千亿才受益」的门槛是 2022-2023 年模型的观察,新一代小模型(如用蒸馏——拿大模型的输出教小模型——加推理微调训练出来的)已部分打破,读时当历史数据。

  • 角色扮演有已知风险(过度服从人设、角色越权),书只讲收益不讲风险。

8. 可带走的

  1. Flat Scaling Curves:推理类任务堆参数不涨分;CoT 把中间步骤写进输出破局。
  2. 三模式=对推理的三种假设:一条线(CoT)、一棵树(ToT)、一捆线投票(Self-Consistency)。
  3. 「让我们一步一步思考」一句话顶几个示例(Zero-Shot CoT,两阶段取答案)。
  4. Auto-CoT 把示例生成全自动:聚类选题→机器生成推理链。
  5. ToT 四件套:拆解/衍生/评估/搜索;24 点靠「还能不能凑到 24」剪枝(把没希望的岔路砍掉)。
  6. 任务说明放开头结尾;分隔符删掉,示例会被当成输入。
  7. CoT 三判据:复杂推理才用;千亿受益、十亿翻车;Chat 系模型已内化,可省提示。
  8. 角色扮演与情景代入改立场改文风——心理暗示是被验证过的 Prompt 技术。

9. 原文地图

主题原书章原文位置
Flat Scaling Curves3.3 思维链text/10-ch03-03-3-3.txt:9(搜「Flat Scaling Curves」)
CoT 定义3.3.1 思维链提示的定义text/10-ch03-03-3-3.txt:25(搜「模拟人类」)
浣熊算术示例3.3.1 思维链提示的定义text/10-ch03-03-3-3.txt:52(搜「浣熊爸爸有8包干脆面」)
三模式归纳3.3.1 思维链提示的定义text/10-ch03-03-3-3.txt:75(搜「按部就班」) · text/10-ch03-03-3-3.txt:84(搜「三思后行」) · text/10-ch03-03-3-3.txt:101(搜「集思广益」)
Zero-Shot CoT 两阶段3.3.2 按部就班text/10-ch03-03-3-3.txt:132(搜「step by step」) · text/10-ch03-03-3-3.txt:154(搜「两阶段」)
Auto-CoT 聚类3.3.2 按部就班text/10-ch03-03-3-3.txt:173(搜「Auto-CoT」) · text/10-ch03-03-3-3.txt:199(搜「聚类技术」)
ToT 四构件3.3.3 三思后行text/10-ch03-03-3-3.txt:225(搜「思维树」) · text/10-ch03-03-3-3.txt:231(搜「拆解」) · text/10-ch03-03-3-3.txt:246(搜「评估」) · text/10-ch03-03-3-3.txt:254(搜「深度优先搜索」)
24 点走查3.3.3 三思后行text/10-ch03-03-3-3.txt:259(搜「24点游戏」) · text/10-ch03-03-3-3.txt:275(搜「评估结果」)
GoT 有向图与聚合3.3.3 三思后行text/10-ch03-03-3-3.txt:294(搜「有向图」) · text/10-ch03-03-3-3.txt:300(搜「思维聚合」)
Self-Consistency 三步3.3.4 集思广益text/11-ch03-04-3-4-prompt.txt:18(搜「三个步骤」) · text/11-ch03-04-3-4-prompt.txt:24(搜「出现频率最高」) · text/11-ch03-04-3-4-prompt.txt:32(搜「5 + 4」)
任务说明首尾3.4.1 规范 Prompt 编写text/11-ch03-04-3-4-prompt.txt:162(搜「开头和结尾」)
明确动词3.4.1 规范 Prompt 编写text/11-ch03-04-3-4-prompt.txt:137(搜「明确的动词」)
输出格式3.4.1 规范 Prompt 编写text/11-ch03-04-3-4-prompt.txt:232(搜「JSON」)
分隔符事故3.4.1 规范 Prompt 编写text/11-ch03-04-3-4-prompt.txt:311(搜「分隔符」) · text/11-ch03-04-3-4-prompt.txt:316(搜「情感」)
分而治之与追问3.4.2 合理归纳提问text/11-ch03-04-3-4-prompt.txt:359(搜「分而治之」) · text/11-ch03-04-3-4-prompt.txt:367(搜「分步引导」) · text/11-ch03-04-3-4-prompt.txt:433(搜「深入追问」)
反馈追问案例3.4.2 合理归纳提问text/11-ch03-04-3-4-prompt.txt:526(搜「呕吐」)
何时用 CoT 三判据3.4.3 适时使用 CoTtext/11-ch03-04-3-4-prompt.txt:550(搜「任务类别」) · text/11-ch03-04-3-4-prompt.txt:577(搜「千亿」) · text/11-ch03-04-3-4-prompt.txt:597(搜「指令微调」)
5+4=9 案例3.4.3 适时使用 CoTtext/11-ch03-04-3-4-prompt.txt:32(搜「5 + 4 = 9」)
内化 CoT3.4.3 适时使用 CoTtext/11-ch03-04-3-4-prompt.txt:609(搜「内化」)
角色扮演与情景代入3.4.4 善用心理暗示text/11-ch03-04-3-4-prompt.txt:669(搜「Fake it till you make it」) · text/11-ch03-04-3-4-prompt.txt:687(搜「角色扮演」) · text/11-ch03-04-3-4-prompt.txt:736(搜「情景代入」)

Footnotes

  1. 出处:「3.3 思维链」第 9 段(text/10-ch03-03-3-3.txt:9,搜「Flat Scaling Curves」)。算术/常识/符号推理三类任务在同段列举。

  2. 出处:「3.3.1 思维链提示的定义」第 25 段(text/10-ch03-03-3-3.txt:25,搜「模拟人类」)。

  3. 出处:「3.3.1 思维链提示的定义」图 3.10(text/10-ch03-03-3-3.txt:44,搜「大白兔」)与(text/10-ch03-03-3-3.txt:52,搜「浣熊爸爸有8包干脆面」)。模型作答 8−3=5、6−2=4 见同图。

  4. 出处:「3.3.2 按部就班」第 132 段(text/10-ch03-03-3-3.txt:132,搜「step by step」)与第 154 段(text/10-ch03-03-3-3.txt:154,搜「两阶段」)。第二阶段的「因此,最终答案为」在同段(text/10-ch03-03-3-3.txt:162,搜「最终答案为」)。

  5. 出处:「3.3.2 按部就班」第 173 段(text/10-ch03-03-3-3.txt:173,搜「Auto-CoT」)与第 199 段(text/10-ch03-03-3-3.txt:199,搜「聚类技术」)。

  6. 出处:「3.3.3 三思后行」第 229 段(text/10-ch03-03-3-3.txt:229,搜「思维树」)、第 231 段(text/10-ch03-03-3-3.txt:231,搜「拆解」)、第 246 段(text/10-ch03-03-3-3.txt:246,搜「评估」)与第 254 段(text/10-ch03-03-3-3.txt:254,搜「深度优先搜索」)。

  7. 出处:「3.3.3 三思后行」图 3.14(text/10-ch03-03-3-3.txt:259,搜「24点游戏」)与第 254 段(text/10-ch03-03-3-3.txt:254,搜「广度优先」)。评估选项「可以、可能、不可能」见图(text/10-ch03-03-3-3.txt:268,搜「凑到」)。

  8. 出处:「3.3.3 三思后行」第 294 段(text/10-ch03-03-3-3.txt:294,搜「有向图」)与第 300 段(text/10-ch03-03-3-3.txt:300,搜「思维聚合」)。

  9. 出处:「3.3.4 集思广益」第 10 段(text/11-ch03-04-3-4-prompt.txt:10,搜「Self-」)与第 18 段(text/11-ch03-04-3-4-prompt.txt:18,搜「三个步骤」)。

  10. 出处:「3.3.4 集思广益」图 3.15(text/11-ch03-04-3-4-prompt.txt:28,搜「基于结果」)与(text/11-ch03-04-3-4-prompt.txt:32,搜「5 + 4」)。错在理解「处理了」的路径与多数投票 4 见同图。

  11. 出处:「3.4.1 规范 Prompt 编写」第 66 段(text/11-ch03-04-3-4-prompt.txt:66,搜「任务说明」)。四部分与图 3.16 对照同段。

  12. 出处:「3.4.1 规范 Prompt 编写」第 162 段(text/11-ch03-04-3-4-prompt.txt:162,搜「开头和结尾」)。「幽默笑话」反例在图 3.17(text/11-ch03-04-3-4-prompt.txt:148,搜「幽默笑话」)。

  13. 出处:「3.4.1 规范 Prompt 编写」第 311 段(text/11-ch03-04-3-4-prompt.txt:311,搜「分隔符」)与图 3.20(text/11-ch03-04-3-4-prompt.txt:321,搜「句子」)。模型输出整份数组的事故在同图。

  14. 出处:「3.4.2 合理归纳提问」第 359 段(text/11-ch03-04-3-4-prompt.txt:359,搜「分而治之」)、第 367 段(text/11-ch03-04-3-4-prompt.txt:367,搜「分步引导」)、第 433 段(text/11-ch03-04-3-4-prompt.txt:433,搜「深入追问」)与第 526 段(text/11-ch03-04-3-4-prompt.txt:526,搜「呕吐」)。热量算例(600–900 千卡、250–350 千卡、约 2.7 包)见图 3.21(text/11-ch03-04-3-4-prompt.txt:377,搜「600到900」)。

  15. 出处:「3.4.3 适时使用 CoT」第 550 段(text/11-ch03-04-3-4-prompt.txt:550,搜「任务类别」)、第 577 段(text/11-ch03-04-3-4-prompt.txt:577,搜「千亿」)与第 597 段(text/11-ch03-04-3-4-prompt.txt:597,搜「指令微调」)。

  16. 出处:「3.4.3 适时使用 CoT」图 3.26(text/11-ch03-04-3-4-prompt.txt:32,搜「5 + 4 = 9」)。十亿参数模型推理链正确、结论错误的案例。

  17. 出处:「3.4.3 适时使用 CoT」第 599 段(text/11-ch03-04-3-4-prompt.txt:599,搜「LLaMA2-13B-Base」)与第 609 段(text/11-ch03-04-3-4-prompt.txt:609,搜「内化」)。

  18. 出处:「3.4.3 适时使用 CoT」第 619 段(text/11-ch03-04-3-4-prompt.txt:619,搜「详细程度」)与第 628 段(text/11-ch03-04-3-4-prompt.txt:628,搜「CoT 形式」)。

  19. 出处:「3.4.4 善用心理暗示」第 669 段(text/11-ch03-04-3-4-prompt.txt:669,搜「Fake it till you make it」)、第 687 段(text/11-ch03-04-3-4-prompt.txt:687,搜「角色扮演」)与第 736 段(text/11-ch03-04-3-4-prompt.txt:736,搜「情景代入」)。90 年代案例见图 3.29(text/11-ch03-04-3-4-prompt.txt:744,搜「90年代」)。