Appearance
Q10 · 什么是 CoT?请解释思维链提示的原理和适用场景?
假设老师问:“有 3 盒铅笔,每盒 4 支,送给同学 2 支,还剩多少支?”回答“10 支”是对的,但如果把数字改一改,答题者可能只是猜中了结果。若能先写出“原有 3 × 4 = 12 支”,再写“送出后 12 − 2 = 10 支”,老师就能看出每个数字从哪里来,也更容易定位算错的地方。
CoT(Chain-of-Thought,思维链)提示借用类似的做法:在需要多步处理的问题上,让模型生成有顺序的中间步骤,再给最终答案。最初的研究用带有步骤的示例来引导模型作答,并在算术、常识和符号推理任务中观察到收益;收益是实验结果,不能推成“写了步骤就一定正确”。这里讨论的是一种提示方法,不是在断言能读到模型真实、完整的内部思考。原始 CoT 论文
先认清文中的词
| 词或记号 | 含义 | 铅笔题中的对应物 |
|---|---|---|
| 大语言模型 | 根据输入生成文字等内容的模型,本文简称“模型” | 读到题目并作答的程序 |
| Prompt(提示词) | 交给模型的题目、要求和可选示例 | “有 3 盒铅笔……”及回答格式要求 |
| CoT / 思维链提示 | 用提示引导模型在答案前组织中间步骤 | 先求原有 12 支,再求剩余 10 支 |
| 中间步骤 | 从已知条件通往答案的过渡结果;文中的“步骤”只指可展示、可核对的内容 | 3 × 4 = 12 与 12 − 2 = 10 |
| Few-shot(少样本) | 在本次提示里放入少量示范题和答案,不是重新训练模型 | 给一道已解好的数量题,示范怎样列式 |
| Zero-shot(零样本) | 不给示范题,直接描述任务要求 | 只给铅笔题和“列出关键计算式” |
| Token | 模型处理文字时使用的基本片段,成本和输出长度通常与其数量相关 | 题目、步骤和答案都会占用片段 |
| 采样 | 让模型按生成时的选择规则产生一次答案;多次采样可能得到不同文字 | 同一题独立作答多次 |
| Self-Consistency(自一致性) | 对同一道题采样多条解题路径,再汇总最终答案的策略 | 独立作答多次后,比较各次的“剩多少支” |
| 校验 | 用独立规则或可靠资料检查结果 | 程序重新计算 3 × 4 − 2 是否等于 10 |
3 × 4 表示 3 盒乘以每盒 4 支,得到总数;12 − 2 表示从原有 12 支中扣掉送出的 2 支。下面所有正常路径都使用这组假设数据。若题目没说明“每盒 4 支”,我们会明确把它当作另一个信息缺失的边界情况,不会擅自补成 4。
从题目到答案,中间多了什么
对这道题,直接作答的可见结果可能只有“10 支”。CoT 风格的可见结果则把关键计算式放在结论前:
已知 3 盒,每盒 4 支,所以原有
3 × 4 = 12支。送出 2 支后,12 − 2 = 10支。答:还剩 10 支。

图只表达一个关系:题目事实 → 可核对的两个计算结果 → 答案。第一步把“盒数”和“每盒支数”换成总支数,第二步才做减法。如果先拿 3 减 2,就把“盒”当成了“支”,单位不一致;如果写成 3 × 4 = 14,错误发生在第一步。把中间结果摆出来,使这两类错误有了明确的检查位置。
原论文中的典型做法,是在提示里展示几道“问题 → 中间步骤 → 答案”的样例,再给新问题。模型会接着这种文字模式生成。下面是为说明结构而写的简化示意,示范题与待答题分别标明,不能把示范题的数字抄进最终答案:
text
示范题:有 2 袋糖,每袋 5 颗,吃掉 3 颗,还剩多少颗?
示范回答:先算原有 2 × 5 = 10 颗,再算剩余 10 − 3 = 7 颗。答:7 颗。
待答题:有 3 盒铅笔,每盒 4 支,送出 2 支,还剩多少支?
请给出能核对的关键计算式和答案。示范题只教“先求总量、再扣除”这一做法,待答题仍是前面的 3 盒铅笔。这里的两个段落属于一次输入中的上下文示范;模型参数,即模型训练时形成的数值,并没有因为多给一个样例而被重新训练。示范若把乘减顺序写错,模型也可能照着错误模式继续;示范题的单位和条件应与目标题足够接近,同时不能让模型机械照搬数字。
零样本 CoT 则不放示范题,早期研究发现,在当时测试的模型和题集上,加入类似“逐步思考”的简短提示也可能改善多步题表现。Zero-shot-CoT 论文 这并不意味着任何模型都要套同一句口令。面向今天的推理模型,官方指南建议先给清楚的目标、约束与输出格式;强行要求“展示完整思维链”未必带来收益,某些情况下还可能妨碍表现。OpenAI 推理模型提示建议
为什么它有时比直接回答有效
模型生成文字时,会根据已给输入和刚生成的内容继续生成后续片段。在普通直接回答里,“10 支”可能马上成为输出;在带步骤的示范或要求下,输出序列先出现“总数 12 支”,后面的“剩余多少”就可以接着这个中间结果往下写。原论文把这样的中间结果称为一串推理步骤,展示了在足够大的受测模型上,对一些复杂推理基准题(用于比较模型表现的固定题集)的改进。原始 CoT 论文
用铅笔题看,这种分解至少带来两个可观察的好处。第一,模型必须把“3 盒”和“每盒 4 支”组合成总量,减少直接把 3、4、2 随便拼成答案的机会。第二,开发者或读者可以分别检查乘法与减法,知道答案即使是 10,过程是否用了题目给定的数值。不过,这只是对输出形式和实验现象的解释,不能证明模型内部一定严格按文字所述操作。
还要区分两个容易混在一起的问题:有没有写步骤,以及步骤是否可信。步骤可能写得流畅,却算错;答案可能碰巧正确,步骤却引用了不存在的条件。研究已观察到,模型给出的思维链解释有时会掩盖真正影响答案的偏置,因此不能把一段合理的文字直接当作对模型内部行为的忠实记录。CoT 解释忠实性研究 在产品里应检查题目事实、计算和最终结论之间是否一致,而不是因为句子详细就提高信任。
把铅笔题放进应用时怎样写要求
如果应用希望用户能核对答案,可以要求简短的依据或计算结果。例如:
text
仅使用题目提供的数字。回答剩余支数,并给出最多两条可核对的计算式;
每条写明单位。若缺少计算所需的数字,说明缺少什么并询问,不要猜测。
题目:有 3 盒铅笔,每盒 4 支,送出 2 支,还剩多少支?这个提示的预期答案是 3 × 4 = 12 支、12 − 2 = 10 支、还剩 10 支。这里限制“最多两条”,是因为用户只需要核对关键量;并不要求模型公开私有推理链。不同提供商和模型对内部推理的提供方式不同,OpenAI 的推理模型 API 例如不会暴露原始推理 token,而是在支持时提供可选的推理摘要。OpenAI 推理模型文档
如果输入改成“有 3 盒铅笔,送出 2 支,还剩多少支?”,每盒支数缺失。此时不能沿用上一题的 4,也不能把 3 − 2 = 1 当作“还剩 1 支”。合适的回答是:“还需要知道每盒有多少支,才能算出剩余支数。”这种缺信息路径比强行列出漂亮的步骤更重要,因为每一步都必须有来源。
如果模型输出 3 × 4 = 14 支;14 − 2 = 12 支,它满足了“分两步”的外形,却在第一步算错。对简单算术,应用可以把题目里的数字交给计算器或确定性程序重新计算;若数字是从外部文档取得,还应先核对文档来源。步骤让错误更容易被发现,不会自动修复错误。 真实系统也要防止输出超长、敏感内容混入示范,以及无关的冗长解释增加延迟和费用。
哪些问题值得用,哪些问题先别加步骤
| 任务 | 是否值得尝试 CoT 风格的中间步骤 | 原因与做法 |
|---|---|---|
| 多步数量题、符号变换、条件推断 | 值得试,并测准确率 | 后一步依赖前一步;像铅笔题先算总量,后算剩余 |
| 基于几条已知事实的判断 | 可要求列出关键依据 | 每个依据要能回到输入事实,缺事实就询问 |
| 一眼可取出的事实、简单分类 | 通常先试直接回答 | 增加步骤可能只增加输出长度,未必改善结果 |
| 精确算术、金额、库存等会触发动作的结果 | 可以解释计算关系,但结果另做程序校验 | 自然语言步骤仍可能算错,不能代替计算器和业务规则 |
| 信息本身不完整的题目 | 先补信息 | “每盒多少支”未给出时,无法推出唯一的剩余支数 |
决定是否上线,应拿同一批真实任务样本比较直接回答与带步骤版本,记录最终答案正确率、拒答或追问是否恰当、输出长度、延迟以及成本。像“缺少每盒支数”的题,应把“主动指出信息不足”也算进正确处理,而不能只奖励它产出一个数字。不同模型和提示版本可能有不同结果,原论文的收益不能直接搬成当前系统的收益率。
CoT 与 Self-Consistency 到底差在哪一步
CoT 的基本路径是为一道题生成一条分步解答,再取这条解答的答案。Self-Consistency 在此基础上改变取答案的方式:对同一道题采样多条可能不同的解答路径,再按最终答案的一致程度汇总。原论文将它作为替代“每次只取当前概率最高的后续文字、走一条路径”的贪心解码策略,并在多种算术与常识推理基准上观察到改进。Self-Consistency 原论文
仍用铅笔题举例:若三次独立生成分别得到“10 支”“10 支”“8 支”,自一致性会倾向 10 支。它比单次作答多了多路径采样与答案汇总,因此通常花费更多调用或输出 token。它不是要求同一次回答把“我前后是否一致”念一遍,也不是证明多数答案一定正确:如果三条路径都把“每盒 4 支”读成“每盒 5 支”,多数投票也会错。对于这类能用 3 × 4 − 2 精确验证的题,计算器比反复投票更可靠。Q11 会继续展开多路径采样和汇总的细节。
面试时可以这样回答
CoT 是 Chain-of-Thought Prompting,思维链提示。它用于多步问题:原始做法是在提示里给出带中间步骤的示例,让模型先形成过渡结果,再给答案。比如 3 盒铅笔、每盒 4 支、送出 2 支,先算
3 × 4 = 12支,再算12 − 2 = 10支。这样后一步有前一步可用,输出也更便于核对。它适合算术、符号和需要组合多个已知条件的题,但不是正确性保证;信息缺失要追问,关键计算要用程序或可靠数据校验。零样本版本不放示例,只用任务提示引导;Self-Consistency 则是在分步解答基础上采样多条路径,汇总最终答案。对已有内部推理能力的模型,我会遵循模型文档,要求简短、可核对的依据,不索取私有推理链,并用实际题集比较效果、延迟和成本。
如果面试官追问“为什么步骤写对了也不能说模型内部真的这么想”,可以回答:可见步骤是模型生成的文字,研究已经发现它有时会给出看似合理却不忠实的解释;我们能验证的是步骤与事实、计算和答案是否一致。若追问“多采样是不是一定更准”,可以指出不同路径可能共享同一个错误前提,投票无法弥补输入事实缺失或系统性误读。
参考资料
- Wei 等:Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
- Kojima 等:Large Language Models are Zero-Shot Reasoners
- Wang 等:Self-Consistency Improves Chain of Thought Reasoning in Language Models
- Turpin 等:Language Models Don't Always Say What They Think
- OpenAI:Reasoning best practices
- OpenAI:Reasoning models