AI 通关攻略 · 第 8 关 | Few-shot & CoT:两个技巧让 AI 回答质量翻倍
什么是 Prompt Engineering
在使用 LLM 时,如何提问(即 Prompt 如何设计)会显著影响输出质量。
Prompt Engineering(提示词工程)就是在不改变模型的情况下,通过优化提问方式,让模型输出更好的结果。
Few-shot 和 CoT 是 Prompt Engineering 中两个最核心、最实用的技巧。
1. Zero-shot(零样本)
先说一个基准概念:Zero-shot。
Zero-shot 就是直接提问,不给任何示例:
用户:把"今天天气真好"翻译成英文。 LLM:The weather is really nice today.
Zero-shot 是最简单的方式,也是大多数人的默认用法。
2. Few-shot(少样本学习)
2.1 什么是 Few-shot?
Few-shot 是在提问时,先给 LLM 提供几个示例(Examples),让它从示例中学习规律,再回答你的问题。
格式:
示例1:输入 → 期望输出
示例2:输入 → 期望输出
示例3:输入 → 期望输出
(可选)你的问题
2.2 Few-shot 的例子
场景:把中文翻译成英文
Zero-shot 方式:
把"我喜欢吃苹果"翻译成英文。
Few-shot 方式:
请将以下中文翻译成英文:
中文:"你好" 英文:"Hello"
中文:"谢谢" 英文:"Thank you"
中文:"我喜欢吃苹果" 英文:
Few-shot 的效果往往明显好于 Zero-shot,因为:
- LLM 从示例中学到了"翻译任务"的模式
- 示例帮助模型理解输出格式和语气
- 减少了歧义("翻译成英文"可以有很多风格,示例明确了是哪一种)
2.3 One-shot vs Few-shot
| 方式 | 示例数量 | 效果 |
|---|---|---|
| Zero-shot | 0 个 | 基准水平 |
| One-shot | 1 个 | 略有提升 |
| Few-shot | 2~10 个 | 通常效果最好 |
注意:示例太多(超过 10 个)不一定更好,反而可能超过 context window 限制,且让 LLM 困惑。
2.4 Few-shot 的适用场景
| 适合 Few-shot | 不适合 Few-shot |
|---|---|
| 需要特定输出格式(JSON、代码等) | 简单的事实问答 |
| 需要遵循某种逻辑模式 | 开放式创意写作 |
| 任务边界不明确,示例能澄清 | 需要最新知识的问题 |
| 领域术语多,示例能提供上下文 | 复杂推理(更适合 CoT) |
3. CoT(Chain-of-Thought,思维链)
3.1 什么是 CoT?
CoT(Chain-of-Thought,思维链)是一种让 LLM 分步骤推理的技术。
核心思想:不要直接给答案,让模型先把推理过程说出来。
3.2 CoT 的例子
问题:小明有 5 个苹果,给了小红 2 个,又买了 3 个,小明现在有几个苹果?
没有 CoT 的回答:
小明现在有 6 个苹果。
有 CoT 的回答:
小明原来有 5 个苹果。 给了小红 2 个:5 - 2 = 3 又买了 3 个:3 + 3 = 6 所以小明现在有 6 个苹果。
看起来答案一样,但推理过程能大幅减少复杂推理中的错误。
3.3 Zero-shot CoT
最简单的 CoT 方式:在问题后面加一句"请一步一步思考"(Let's think step by step)。
用户:小明有 5 个苹果,给了小红 2 个,又买了 3 个,小明现在有几个苹果?请一步一步思考。
不需要给任何示例,模型会自动展开推理过程。
3.4 Few-shot CoT
给示例时,把推理过程也作为示例的一部分:
示例:
问题:小明有3个球,又买了2个,给了小红1个,现在有几个?
推理:小明原来有3个球。又买了2个:3+2=5。给了小红1个:5-1=4。
答案:4个。
问题:小明有5个苹果,给了小红2个,又买了3个,小明现在有几个苹果?
推理:
3.5 CoT 的效果
研究表明,CoT 在以下场景中效果显著:
| 场景 | CoT 效果 |
|---|---|
| 数学推理(鸡兔同笼、分数计算等) | ✅ 显著提升 |
| 逻辑推理(前提→结论) | ✅ 显著提升 |
| 多步骤问题(3步以上) | ✅ 显著提升 |
| 代码生成与调试 | ✅ 有帮助 |
| 简单事实问答 | ❌ 基本没用(反而增加 token 消耗) |
| 开放式写作/创意 | ❌ 基本没用 |
3.6 CoT 的原理
为什么让模型"说出来思考过程"就能更准确?
- 外化了中间状态:推理过程让每一步的计算都清晰可见,减少了"直觉性错误"
- 强迫模型做深度处理:说出推理过程需要模型真正执行逻辑,而不是靠模式匹配
- 自我纠错:推理过程中,如果发现逻辑矛盾,模型可以在后续步骤中修正
4. Few-shot vs CoT 的关系
Few-shot 和 CoT 不是互斥的,它们可以组合使用:
Few-shot CoT = 先给示例(Few-shot)+ 示例中包含推理过程(CoT)
这是当前 Prompt Engineering 的"最强形态"之一。
5. 进阶技巧:Self-Consistency(自洽性)
Self-Consistency(自洽性)是在 CoT 基础上的进一步优化:
- 让 LLM 多次生成不同的推理路径
- 统计哪个答案出现的次数最多
- 选择出现最多的那个答案
类比:就像考试时做完一道难题后,换一种方法验算一遍,如果两种方法得到相同答案,信心就更强。
Self-Consistency 的效果:在数学推理任务上,通常能让准确率提升 5~15 个百分点。
6. 实用建议汇总
| 场景 | 推荐做法 |
|---|---|
| 简单事实问答 | Zero-shot(直接问) |
| 需要特定格式输出 | Few-shot(给格式示例) |
| 复杂数学/逻辑推理 | CoT(让模型分步思考) |
| 困难推理 + 需要高准确率 | Few-shot CoT + Self-Consistency |
| 开放式创意写作 | Zero-shot 或 Few-shot(给风格示例) |
7. 总结
Zero-shot = 直接问(基准)
Few-shot = 给示例(让模型学习模式)
CoT = 让模型说推理过程(减少推理错误)
Few-shot CoT = 给带推理过程的示例(最强组合)
Self-Consistency = 多次推理取最常见答案(进一步提高准确性)
记住:Few-shot 和 CoT 是零成本的技巧——不需要改变模型、不需要训练,只需要优化提问方式。在很多场景下,精心设计的 Few-shot + CoT 可以接近甚至达到 Fine-tuning 的效果。