Skip to content

第 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 个
答案:6

Google 团队在 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 提出了自动化方法:

  1. 问题聚类:将问题数据集分成若干簇
  2. 代表性采样:从每个簇中选取代表性问题
  3. 自动推理链生成:用 Zero-shot CoT 为每个代表问题生成推理过程
  4. 构建示例集:将生成的推理链作为 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?

🛠️ 动手实践

  1. 创建一个 Manual Few-shot CoT prompt,用 3 个示例解决数学应用题,测试不同模型的效果差异。
  2. 对比 Zero-shot CoT(添加 "Let's think step by step")与传统 prompt 在同一个复杂问题上的表现。
  3. 尝试实现一个简单的 Auto-CoT 流程:为 5 个问题自动生成推理链并构建 few-shot 示例集。

下一章:提示基本要素与指令设计