Zero-Shot Prompting(零样本提示)和 Few-Shot Prompting(少样本提示)的核心区别,可以用一句话概括: 前者是"只下指令,不给例子",后者是"先给示范,再下指令"。 这种表面上的差异,触发了大语言模型(LLM)不同的工作模式。以下是它们在多个维度的核心区别对比:

1. 核心机制的区别
- Zero-Shot 依赖"预训练知识": 模型完全依靠它在预训练阶段积累的庞大知识库,以及对自然语言指令的理解能力来直接生成答案。它相当于"无师自通"的直觉反应。
- Few-Shot 触发"上下文学习": 模型通过阅读你提供的几个"输入-输出"示例,在当前对话的上下文中快速捕捉规律、格式和逻辑,从而"依样画葫芦"。它相当于"举一反三"的模仿学习。
2. 提示词结构的区别
- Zero-Shot:
[任务指令] + [待处理的数据]- 示例: "请将以下句子翻译成英文:今天天气很好。"
- Few-Shot:
[任务指令] + [示例1输入->输出] + [示例2输入->输出] + [待处理的数据]- 示例: "请执行情感分类。\n句子:这电影太棒了 -> 积极\n句子:这简直是在浪费钱 -> 消极\n句子:今天中午吃的面条一般般 -> "
3. 输出稳定性的区别
- Zero-Shot 较不稳定: 面对模糊或有歧义的指令,模型容易"脑补",输出的格式和风格可能每次都不一样。
- Few-Shot 非常稳定: 示例起到了"定调"和"框定边界"的作用。只要你给了 JSON 格式的示例,它大概率就会输出 JSON;你给了文言文风格的示例,它就会用文言文回复。
4. 构造成本的区别
- Zero-Shot 成本极低: 不需要费心去构造数据,想到什么指令直接问即可。
- Few-Shot 成本中等: 需要人工寻找、编写或筛选高质量、有代表性的示例。如果示例写得很差或有逻辑错误,模型会被直接带偏(Garbage in, garbage out)。
📊 直观对比总结表
| 维度 | Zero-Shot (零样本) | Few-Shot (少样本) |
|---|---|---|
| 是否提供示例 | ❌ 否 | ✅ 是 (通常1~5个) |
| 底层能力 | 指令遵循 | 上下文学习 |
| Token 消耗 | 少 | 多 (示例会占用大量 Token) |
| 输出可控性 | 较低 | 高 (格式、风格高度可控) |
| 适用场景 | 简单任务、通用知识、快速测试 | 复杂逻辑、特定格式输出、专业领域风格模仿 |
💡 实战指南:到底该用哪个?
可以按照以下决策树来选择:
- 先用 Zero-Shot 尝试: 遇到任何问题,先直接用大白话问。现代大模型(如 GPT-4, Claude 3)的 Zero-Shot 能力已经极其强大,80% 的日常简单任务都能直接搞定。
- 发现效果不好,升级为 Few-Shot: 如果模型给出的格式不对、理解偏题、或者风格不对,不要去长篇大论地修改指令文字,而是直接给例子 。
- 例如:你想要特定格式的提取结果,与其写一堆"请输出JSON,键名为XXX...",不如直接贴一段你想要的 JSON 样例,效果立竿见影。
- 遇到更复杂的情况怎么办? 如果任务太复杂,Few-Shot 的示例放不下(超过了上下文窗口限制),或者示例太多人工写不过来,这时候就该考虑使用 Prompt Chaining(拆分步骤提示) 或 Fine-tuning(模型微调) 了。 ⚠️ 一个重要的澄清: 无论是 Zero-Shot 还是 Few-Shot,它们都是推理阶段的技巧 ,不会改变模型的权重参数。这与需要重新训练模型的"微调"有着本质的区别。