第 7 章 · 大模型与提示工程概述
本章目标:理解思维链(CoT)的核心原理,掌握 Manual CoT、Few-shot CoT 和 Zero-shot CoT 的使用方法,并了解何时使用 CoT 能获得最佳效果。
7.1 什么是思维链
思维链(Chain-of-Thought,简称 CoT)是一种提示工程技术,通过在问题与答案之间添加推理步骤,引导模型逐步思考,从而提升复杂任务的表现。
传统提示往往是直接给出问题和答案:
问题:小明有5个苹果,吃了2个,又买了3个,现在有几个?
答案:6而思维链会展示中间推理过程:
问题:小明有5个苹果,吃了2个,又买了3个,现在有几个?
思考:
- 开始有5个苹果
- 吃了2个,剩下 5 - 2 = 3 个
- 又买了3个,现在有 3 + 3 = 6 个
答案:6Google 团队在 2022 年的论文中首次系统性地展示了 CoT 的力量:对于算术、常识推理和符号推理等需要多步计算的复杂任务,CoT 能够带来显著的性能提升。
7.2 Manual Few-shot CoT
最简单有效的方式是手动编写几个包含推理步骤的示例(few-shot),让模型模仿这种"展示思考过程"的风格。
python
prompt = """
Q: The cafeteria had 23 apples. If they used 20 to make lunch and bought 6 more, how many apples do they have?
A: They started with 23 apples, used 20 for lunch (23 - 20 = 3), then bought 6 more (3 + 6 = 9). The answer is 9.
Q: A retail store marks up a price of $80 by 50%. Then they offer a 20% discount. What is the final price?
A: Original price $80. Markup by 50%: $80 * 1.5 = $120. Discount of 20%: $120 * 0.8 = $96. The answer is $96.
Q: {question}
A:
"""关键点:
- 示例要具体:每个示例都展示清晰的推理链条
- 保持多样性:示例覆盖不同类型的推理(算术、逻辑、常识)
- 格式一致:使用固定的"思考:"前缀帮助模型理解模式
7.3 Zero-shot CoT
当没有足够示例时,可以使用 Zero-shot CoT。核心技巧是在问题后加上一个触发短语,如:
"Let's think step by step."
python
# 传统 prompt(容易出错)
prompt = "I went to the market and bought 10 apples. I gave 2 apples to my neighbor and 2 to the repairman. I then went and bought 5 more apples and ate 1. How many apples did I remain with?"
# Zero-shot CoT
prompt = """I went to the market and bought 10 apples. I gave 2 apples to my neighbor and 2 to the repairman. I then went and bought 5 more apples and ate 1. How many apples did I remain with?
Let's think step by step."""研究表明,简单的 "Let's think step by step" 足以触发模型的链式推理能力,尤其是在较大的模型上(如 GPT-3.5+)。
7.4 Auto-CoT:自动生成思维链
对于大规模应用场景,手动编写示例成本较高。Auto-CoT 提出了自动化方法:
- 问题聚类:将问题数据集分成若干簇
- 代表性采样:从每个簇中选取代表性问题
- 自动推理链生成:用 Zero-shot CoT 为每个代表问题生成推理过程
- 构建示例集:将生成的推理链作为 few-shot 示例
python
# Auto-CoT 示例生成流程
def auto_cot_example(question):
base_prompt = f"{question}\nLet's think step by step."
response = llm.complete(base_prompt)
# 提取推理链部分
return extract_chain_of_thought(response)这种方法特别适用于需要大量示例的场景,如 benchmark 评估或生产系统中的 prompt 优化。
7.5 CoT 的适用场景与限制
适用场景
- 数学计算与算术推理
- 多步逻辑推导
- 需要中间状态的规划任务
- 事实性知识查询(减少幻觉)
不适用场景
- 简单分类任务(如情感分析)
- 创意写作(可能限制发散思维)
- 实时对话(增加延迟)
- 小规模模型(能力不足时反而有害)
实践建议
python
# 判断是否需要 CoT 的决策树
def should_use_cot(task_type, model_size):
if task_type in ['math', 'logic', 'multi_step']:
return model_size >= 10 # 至少 10B 参数
elif task_type in ['classification', 'summary']:
return False
return model_size >= 70 # 大模型才值得尝试本章小结
- CoT 核心思想:通过展示推理步骤引导模型逐步思考
- Manual CoT:手写包含思考过程的 few-shot 示例
- Zero-shot CoT:添加 "Let's think step by step" 触发词
- Auto-CoT:自动生成推理链用于大规模场景
- 适用性:复杂推理任务效果好,简单任务可能适得其反
🧪 随堂测验
点击你认为正确的选项。答错时会展示正确答案与原因解析。
1. CoT 对以下哪类任务效果最显著?
2. "Let's think step by step" 属于哪种 CoT 类型?
3. Auto-CoT 的第一步是什么?
4. 以下哪个模型最适合使用 CoT?
🛠️ 动手实践
- 创建一个 Manual Few-shot CoT prompt,用 3 个示例解决数学应用题,测试不同模型的效果差异。
- 对比 Zero-shot CoT(添加 "Let's think step by step")与传统 prompt 在同一个复杂问题上的表现。
- 尝试实现一个简单的 Auto-CoT 流程:为 5 个问题自动生成推理链并构建 few-shot 示例集。