第4章:思维链提示——Chain-of-Thought原理
思维链(Chain-of-Thought,简称CoT)这个概念,我第一次接触是在2022年初。当时Google发了一篇论文,说只要在提示里加一句「让我们一步一步思考」,大模型的推理能力就能提升一大截。说实话,我第一反应是不信——这也太玄学了吧?
后来我自己在项目里试了试,嗯,真香。
4.1 什么是思维链
思维链的核心思想很简单:让模型在给出最终答案之前,先展示推理过程。
你想想看,平时我们做数学题,是不是也要先写步骤?直接写答案容易错,但一步步推导,中间就算算错了也能发现。大模型也是一样的道理。
核心公式:
传统提示:输入 → 输出
思维链提示:输入 → 推理步骤 → 输出
举个例子。我问你:「小明有5个苹果,小红给了小明3个,小明又给了小刚2个,小明还剩几个?」
你脑子里会怎么想?
- 先算小明原来有5个
- 加上小红给的3个,变成8个
- 减去给小刚的2个,还剩6个
这就是思维链。模型也一样,给它展示这个推理过程,它就能更准确地算出答案。
4.2 为什么思维链有效
我个人理解,思维链有效的原因有三个:
- 分解复杂度——把大问题拆成小步骤,每一步都更容易处理
- 中间结果可追溯——如果答案错了,能定位到哪一步出了问题
- 激活推理能力——模型在生成推理步骤时,会调用更多的计算资源
我在项目中遇到过一种情况:直接问模型「这个代码有什么bug」,它经常答非所问。但改成「请先分析代码逻辑,再逐行检查,最后总结bug」,效果就好很多。说白了,思维链就是在给模型搭梯子。
小技巧:思维链不仅适用于数学题,在代码审查、逻辑推理、文本分析等场景下同样有效。我习惯在复杂任务的开头加一句「请逐步分析」。
零样本思维链(Zero-shot CoT)
零样本思维链,就是不给任何示例,直接让模型用思维链推理。
怎么做?很简单。在提示词末尾加一句魔法咒语:
问题:小明有5个苹果,小红给了小明3个,小明又给了小刚2个,小明还剩几个?
让我们一步一步思考。
就这一句话,模型就会自动生成推理步骤,然后给出答案。
4.3 零样本CoT的常用触发词
我测试过很多触发词,效果最好的是这几个:
| 触发词 | 适用场景 | 效果评级 |
|---|---|---|
| 让我们一步一步思考 | 通用场景 | ⭐⭐⭐⭐⭐ |
| 请逐步推理 | 逻辑推理 | ⭐⭐⭐⭐ |
| 先分析,再回答 | 代码/文本分析 | ⭐⭐⭐⭐ |
| 请展示你的思考过程 | 教育/解释类 | ⭐⭐⭐ |
为什么会这样?因为模型在训练数据里见过大量「让我们一步一步思考」的文本,这个短语能激活它的推理模式。
注意:零样本CoT的效果不稳定。我试过一些冷门领域的问题,模型虽然会生成推理步骤,但推理本身可能是错的。这时候就需要少样本CoT了。
少样本思维链实战(Few-shot CoT)
少样本思维链,就是给模型提供几个带推理过程的示例,让它模仿。
说白了,就是「我做一遍给你看,你照着做」。
4.4 少样本CoT的模板结构
一个标准的少样本CoT提示包含三部分:
- 示例问题——和你要问的问题类型相似
- 推理步骤——展示完整的思考过程
- 最终答案——给出结论
来看一个实战例子:
示例1:
问题:一个班级有30个学生,其中女生占40%,男生有多少人?
推理:女生占40%,所以女生人数是30×40%=12人。
男生人数 = 总人数 - 女生人数 = 30 - 12 = 18人。
答案:18人。
示例2:
问题:一件商品原价200元,打八折后再降价10元,最终价格是多少?
推理:打八折后价格 = 200×80% = 160元。
再降价10元 = 160 - 10 = 150元。
答案:150元。
现在请回答:
问题:一本书原价80元,先涨价20%,再打九折,最终价格是多少?
推理:
模型看到这两个示例后,就会模仿同样的推理格式,一步步算出答案。
4.5 少样本CoT的选例技巧
我踩过不少坑,总结出三条选例原则:
- 同类型——示例和真实问题要属于同一类(都是数学题,或者都是代码题)
- 难度递进——先给简单的例子,再给稍微复杂的
- 步骤清晰——每个推理步骤都要写清楚,别跳步
我曾经给模型做过一个代码审查的CoT示例,结果示例里跳了一步,模型也跟着跳了。从那以后,我写示例都特别小心,每一步都拆得细碎。
实战建议:少样本CoT的示例数量,2-3个效果最好。太少模型学不会,太多反而会干扰。我一般固定用3个示例。
4.6 两种CoT的对比
| 维度 | 零样本CoT | 少样本CoT |
|---|---|---|
| 示例需求 | 不需要 | 需要2-3个示例 |
| 适用场景 | 通用问题 | 特定领域/复杂问题 |
| 稳定性 | 中等 | 高 |
| 提示长度 | 短 | 较长 |
| 最佳实践 | 加「让我们一步一步思考」 | 提供同类型推理示例 |
我个人习惯是:简单问题用零样本CoT,复杂问题用少样本CoT。如果零样本效果不好,再补几个示例试试。
4.7 避坑指南
最后分享几个我踩过的坑:
- 我曾经在少样本CoT里用了不同领域的示例,结果模型推理逻辑混乱——示例一定要同领域
- 我曾经在推理步骤里用了缩写,模型也跟着用缩写,导致答案看不懂——步骤要写完整
- 我曾经以为示例越多越好,给了5个示例,结果模型反而被干扰——2-3个就够了
思维链这个技术,说白了就是让模型「把脑子里的想法说出来」。你给它搭好梯子,它就能爬得更高。下一章我们会聊思维链的进阶玩法——自洽性(Self-Consistency),到时候再细说。