提示词工程04:Chain-of-Thought思维链

提示词工程04:Chain-of-Thought思维链

📖 系列导航


上篇回顾

上一篇我们学习了:

  • 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:...

综合答案:...

思维链流程图

Chain-of-Thought 思维链流程


何时使用思维链?

适用场景

✅ 适合思维链:
• 数学计算(多步骤运算)
• 逻辑推理(因果关系分析)
• 多步骤问题(需要分步解决)
• 需要解释答案(展示推理过程)
• 复杂决策(权衡多个因素)
• 调试分析(排查问题原因)

❌ 不适合思维链:
• 简单问答("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 解决:

问题:
设计一个用户注册系统的数据表结构,要求:
- 用户可以注册、登录
- 支持多种登录方式(邮箱、手机、第三方)
- 记录登录历史
- 支持密码找回

本篇要点

  1. 思维链:让AI”展示思考过程”
  2. 五种形式:Zero-shot CoT、Few-shot CoT、Self-Consistency、Tree of Thoughts、Decomposition
  3. 适用场景:数学、逻辑、多步骤问题、需要解释的问题
  4. 最佳实践:明确要求、结构化、验证、分解复杂问题
  5. 效果提升:数学推理提升41%,逻辑推理提升32%

下篇预告

下一篇我们将整理 提示词模板库

  • 通用提示词模板
  • 分类任务模板
  • 写作任务模板
  • 代码任务模板
  • 分析任务模板
  • 直接可用的模板集合

👉 下一篇:提示词模板库


💡 本系列文章

💬 评论区

返回文章列表