提示词工程04:Chain-of-Thought思维链
提示词工程04:Chain-of-Thought思维链
📖 系列导航
- 上一篇:Few-shot与Zero-shot对比
- 本篇:Chain-of-Thought思维链(你正在阅读)
- 下一篇:提示词模板库
- 系列:提示词工程从零到精通(共7篇)
上篇回顾
上一篇我们学习了:
- Zero-shot vs Few-shot 的选择
- 如何设计高质量示例
- Few-shot 进阶技巧
本篇讲解让AI”像人一样思考”的 Chain-of-Thought 技术。
什么是 Chain-of-Thought?
Chain-of-Thought(CoT) 是一种提示词技术,让AI在回答前先”展示思考过程”。
核心理念
就像我们做数学题要”写过程”一样,AI 也需要一步步推理才能得到正确答案。
效果对比
❌ 无思维链:
问:小明有5个苹果,给了小红2个,又买了3个,还剩几个?
答:6个
(看不到推理过程,无法验证)
✅ 有思维链:
问:小明有5个苹果,给了小红2个,又买了3个,还剩几个?
思考:初始5个,给出后剩5-2=3个,买入后剩3+3=6个
答:6个
(推理过程清晰,可以检查每一步)
有思维链时,你可以检查推理过程,更容易发现问题。
为什么思维链有效?
AI 的本质:预测下一个词
AI 不是真正”思考”,而是预测最可能的下一个词。
无思维链:
问:5 - 2 + 3 = ?
答:[AI 直接预测答案]
(可能预测错误)
有思维链:
问:5 - 2 + 3 = ?
思考:首先 5 - 2 = 3,然后 3 + 3 = 6
答:[AI 根据推理结果回答]
(推理后答案更准确)
思维链让AI”展示工作”,就像数学考试要写过程一样。
思维链的五种形式
1. Zero-shot CoT
最简单的形式,只需加一句话:
[你的问题]
请一步步思考。
或英文版本(有时效果更好):
Let's think step by step.
示例:
问:一个长方形的长是12cm,宽是8cm,求面积和周长。
请一步步思考。
AI回答:
好的,让我一步步分析:
步骤1:理解题目
- 长方形长 = 12cm
- 长方形宽 = 8cm
- 要求:面积和周长
步骤2:计算面积
- 面积 = 长 × 宽
- 面积 = 12 × 8 = 96 cm²
步骤3:计算周长
- 周长 = 2 × (长 + 宽)
- 周长 = 2 × (12 + 8) = 2 × 20 = 40 cm
答案:面积是96平方厘米,周长是40厘米。
2. Few-shot CoT
提供带推理过程的示例:
示例1:
问:小明有5个苹果,给了小红2个
思考:初始5个,给出2个,剩余 5 - 2 = 3
答:3个
示例2:
问:商店有10瓶水,卖了3瓶,又进货5瓶
思考:初始10,卖出后 10 - 3 = 7,进货后 7 + 5 = 12
答:12瓶
问:图书馆有100本书,借出30本,还回15本
思考:[让AI模仿推理过程]
3. Self-Consistency CoT
生成多个推理路径,取最一致的答案:
请用三种不同的方法解决这个问题,然后比较结果。
方法1:...
方法2:...
方法3:...
三种方法结果一致/不一致,最终答案是...
示例:
问:一个班级有30人,男生占40%,后来转来5个男生,现在男生占多少比例?
AI回答:
让我用三种方法验证:
方法1:逐步计算
- 原男生数:30 × 40% = 12人
- 现男生数:12 + 5 = 17人
- 现总人数:30 + 5 = 35人
- 现比例:17 ÷ 35 ≈ 48.6%
方法2:分步验证
- 原女生数:30 - 12 = 18人
- 现总人数:30 + 5 = 35人
- 现男生数:35 - 18 = 17人
- 现比例:17 ÷ 35 ≈ 48.6%
方法3:比例变化
- 原比例:40%
- 增加:5人男生
- 新比例:(12+5)/(30+5) = 17/35 ≈ 48.6%
三种方法结果一致:约48.6%
4. Tree of Thoughts
探索多个可能的推理路径:
考虑这个问题的三种可能解法,分析每种方法的优缺点,然后选择最佳方案。
解法1:...
优点:...
缺点:...
解法2:...
优点:...
缺点:...
解法3:...
优点:...
缺点:...
最佳方案:解法X,因为...
5. Decomposition CoT
将复杂问题分解为子问题:
这是一个复杂问题,请分解成几个子问题,分别解决。
子问题1:...
答案1:...
子问题2:...
答案2:...
综合答案:...
思维链流程图
何时使用思维链?
适用场景
✅ 适合思维链:
• 数学计算(多步骤运算)
• 逻辑推理(因果关系分析)
• 多步骤问题(需要分步解决)
• 需要解释答案(展示推理过程)
• 复杂决策(权衡多个因素)
• 调试分析(排查问题原因)
❌ 不适合思维链:
• 简单问答("Python是什么?")
• 创意写作("写一首诗")
• 情感分析("这句话什么情感?")
• 单步任务("翻译这句话")
• 简单分类("这是垃圾邮件吗?")
效果提升
根据 Google Research 的研究:
| 任务类型 | 无CoT | 有CoT | 提升 |
|---|---|---|---|
| 数学推理 | 17% | 58% | +41% |
| 逻辑推理 | 46% | 78% | +32% |
| 常识推理 | 74% | 82% | +8% |
| 符号推理 | 21% | 65% | +44% |
思维链最佳实践
1. 明确要求”展示思考”
请先分析问题,列出解决步骤,然后给出答案。
2. 使用结构化格式
分析:
- 已知条件:...
- 要求:...
步骤:
1. ...
2. ...
3. ...
答案:...
3. 验证推理过程
完成推理后,请检查每一步是否正确。
4. 处理复杂问题
对于复杂问题,先分解:
这是一个复杂问题,请先分解成几个子问题,然后分别解决。
实战案例
案例1:数学应用题
问题:
一个游泳池有两个进水管和一个出水管。
甲管单独注满需要6小时,乙管单独注满需要8小时,
出水管单独排空需要12小时。
如果三管同时打开,多久能注满?
使用思维链:
分析:
- 甲管:6小时注满 → 每小时注入 1/6 池
- 乙管:8小时注满 → 每小时注入 1/8 池
- 出水管:12小时排空 → 每小时排出 1/12 池
计算:
- 每小时净注入量:1/6 + 1/8 - 1/12
- 通分:4/24 + 3/24 - 2/24 = 5/24
- 注满需要时间:1 ÷ (5/24) = 24/5 = 4.8小时
验证:
- 4.8小时后:4.8 × (5/24) = 24/24 = 1(满池)✓
答案:4.8小时(即4小时48分钟)
案例2:逻辑推理
问题:
张三、李四、王五三人中有一人是程序员,一人是设计师,一人是产品经理。
已知:
1. 张三不是产品经理
2. 李四不是程序员
3. 王五不是设计师
4. 程序员比产品经理年龄大
5. 李四比设计师年龄小
请推断每人的职业。
使用思维链:
步骤1:从条件1开始分析
张三不是产品经理 → 张三是程序员或设计师
步骤2:结合条件2
李四不是程序员 → 李四是设计师或产品经理
步骤3:结合条件3
王五不是设计师 → 王五是程序员或产品经理
步骤4:结合条件4和5
- 李四比设计师年龄小 → 李四不是设计师
- 李四是设计师或产品经理 → 李四是产品经理
步骤5:根据李四是产品经理
- 张三不是产品经理 ✓
- 王五不是产品经理(李四已经是)→ 王五是程序员
步骤6:确定张三
- 张三不是产品经理
- 王五是程序员
- 李四是产品经理
- 剩下:张三是设计师
验证所有条件:
1. 张三不是产品经理 ✓(张三是设计师)
2. 李四不是程序员 ✓(李四是产品经理)
3. 王五不是设计师 ✓(王五是程序员)
4. 程序员(王五) > 产品经理(李四)?需要年龄信息
5. 李四比设计师(张三)年龄小?与条件4矛盾,需要调整...
答案:
张三是设计师,李四是产品经理,王五是程序员
(注:需要验证年龄条件)
案例3:代码调试
问题:
以下Python代码输出错误,请找出问题并修复。
def calculate_average(numbers):
total = 0
for num in numbers:
total += num
average = total / len(numbers)
return average
print(calculate_average([]))
使用思维链:
分析:
1. 代码功能:计算列表平均值
2. 错误现象:输入空列表时会出错
推理:
- 当 numbers = [] 时,len(numbers) = 0
- average = total / 0
- 除以零会抛出 ZeroDivisionError
修复方案:
方案1:添加空列表检查
方案2:返回None或0
方案3:抛出自定义异常
答案:
def calculate_average(numbers):
if not numbers: # 检查空列表
return None
total = 0
for num in numbers:
total += num
average = total / len(numbers)
return average
print(calculate_average([])) # 输出: None
实战练习
练习1:添加思维链
为以下问题添加思维链:
原版:
一个长方形的长是8cm,宽是5cm,求面积和周长。
请用 Zero-shot CoT 方式重新提问。
练习2:设计 Few-shot CoT
设计带推理过程的示例:
任务:计算购物总价
请设计 3 个示例,每个示例包含:
- 问题
- 推理过程(逐步计算)
- 答案
练习3:对比效果
分别用无思维链和有思维链解决:
问题:
小明有100元,买了3本书,每本15元,又买了2支笔,每支5元。
请问他还剩多少钱?
对比两种方式的答案质量和可验证性。
练习4:错误诊断
以下思维链哪里出错了?
问:一本书原价50元,打8折后多少钱?
思考:打8折就是乘以0.8,50 × 0.8 = 40元
答:40元
提示: 答案正确,但思考过程是否完整?
练习5:复杂问题分解
用 Decomposition CoT 解决:
问题:
设计一个用户注册系统的数据表结构,要求:
- 用户可以注册、登录
- 支持多种登录方式(邮箱、手机、第三方)
- 记录登录历史
- 支持密码找回
本篇要点
- 思维链:让AI”展示思考过程”
- 五种形式:Zero-shot CoT、Few-shot CoT、Self-Consistency、Tree of Thoughts、Decomposition
- 适用场景:数学、逻辑、多步骤问题、需要解释的问题
- 最佳实践:明确要求、结构化、验证、分解复杂问题
- 效果提升:数学推理提升41%,逻辑推理提升32%
下篇预告
下一篇我们将整理 提示词模板库:
- 通用提示词模板
- 分类任务模板
- 写作任务模板
- 代码任务模板
- 分析任务模板
- 直接可用的模板集合
💡 本系列文章
💬 评论区