AI 通关攻略 · 第 8 关 | Few-shot & CoT:两个技巧让 AI 回答质量翻倍

0 阅读5分钟

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 方式:

请将以下中文翻译成英文:

  1. 中文:"你好" 英文:"Hello"

  2. 中文:"谢谢" 英文:"Thank you"

  3. 中文:"我喜欢吃苹果" 英文:

Few-shot 的效果往往明显好于 Zero-shot,因为:

  • LLM 从示例中学到了"翻译任务"的模式
  • 示例帮助模型理解输出格式和语气
  • 减少了歧义("翻译成英文"可以有很多风格,示例明确了是哪一种)

2.3 One-shot vs Few-shot

方式示例数量效果
Zero-shot0 个基准水平
One-shot1 个略有提升
Few-shot2~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 的原理

为什么让模型"说出来思考过程"就能更准确?

  1. 外化了中间状态:推理过程让每一步的计算都清晰可见,减少了"直觉性错误"
  2. 强迫模型做深度处理:说出推理过程需要模型真正执行逻辑,而不是靠模式匹配
  3. 自我纠错:推理过程中,如果发现逻辑矛盾,模型可以在后续步骤中修正

4. Few-shot vs CoT 的关系

Few-shot 和 CoT 不是互斥的,它们可以组合使用:

Few-shot CoT = 先给示例(Few-shot)+ 示例中包含推理过程(CoT)

这是当前 Prompt Engineering 的"最强形态"之一。


5. 进阶技巧:Self-Consistency(自洽性)

Self-Consistency(自洽性)是在 CoT 基础上的进一步优化:

  1. 让 LLM 多次生成不同的推理路径
  2. 统计哪个答案出现的次数最多
  3. 选择出现最多的那个答案

类比:就像考试时做完一道难题后,换一种方法验算一遍,如果两种方法得到相同答案,信心就更强。

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 的效果。