Few-shot 学习

给模型看几个例子

有时候,再怎么描述你想要的输出格式,都不如直接给模型看几个例子

这就是 Few-shot Learning(少样本学习)——在 Prompt 中提供几个输入-输出示例,让模型"学会"你期望的模式,然后应用到新的输入上。

Zero-shot vs One-shot vs Few-shot

Zero-shot(零样本)

不给例子,直接提问:

将以下句子的情感分类为"正面"或"负面":

"这家餐厅的菜品让我非常失望。"

模型通常能给出正确答案,但格式可能不稳定(比如有时回答"负面",有时回答"这是一个负面评价")。

One-shot(单样本)

给一个例子:

将以下句子的情感分类为"正面"或"负面"。

句子:"今天天气真好,心情很愉快。"
分类:正面

句子:"这家餐厅的菜品让我非常失望。"
分类:

Few-shot(少样本)

给多个例子:

将以下句子的情感分类为"正面"或"负面"。

句子:"今天天气真好,心情很愉快。"
分类:正面

句子:"快递又延误了,真烦人。"
分类:负面

句子:"这本书写得非常精彩,强烈推荐。"
分类:正面

句子:"这家餐厅的菜品让我非常失望。"
分类:

通过多个例子,模型可以更准确地理解:

  1. 任务是什么——情感分类
  2. 输出格式——只回答"正面"或"负面"
  3. 判断标准——什么算正面,什么算负面

如何选择好的示例

示例的质量直接影响效果。几个原则:

1. 覆盖不同情况

✅ 包含正面和负面的例子
✅ 包含简单和复杂的例子
✅ 包含边界情况

如果你的例子全是正面的,模型可能倾向于把所有输入都分类为正面。

2. 示例要和目标输入相似

如果你要处理的是技术文档,示例也应该是技术文档,而不是社交媒体帖子。领域匹配很重要。

3. 格式统一

所有示例的格式应该完全一致:

❌
输入:苹果 → 水果
输入:狗 → 这是一种动物
猫 → 动物

✅
输入:苹果
类别:水果

输入:狗
类别:动物

输入:猫
类别:

4. 数量不是越多越好

通常 3-5 个例子就够了。太多例子会:

  • 占用宝贵的上下文窗口
  • 引入噪声
  • 增加 token 成本

示例顺序的影响

研究表明,Few-shot 示例的排列顺序会影响模型输出。一些实用建议:

  • 把最相关的例子放在靠近目标输入的位置(模型对最近的上下文更敏感)
  • 多样化排列,不要把同一类别的例子连续放在一起
  • 如果效果不好,尝试打乱顺序——有时这就能解决问题

Few-shot 的实际应用

数据转换

将自然语言日期转换为 ISO 格式。

输入:明年三月十五号
输出:2027-03-15

输入:上个月最后一天
输出:2026-02-28

输入:下周三
输出:

代码风格转换

将以下 JavaScript 代码转换为 TypeScript,添加类型注解。

JavaScript:
function add(a, b) { return a + b; }

TypeScript:
function add(a: number, b: number): number { return a + b; }

JavaScript:
function greet(name) { return "Hello, " + name; }

TypeScript:

文本提取

从以下文本中提取公司名称和融资金额。

文本:"字节跳动在最新一轮融资中获得了 50 亿美元。"
结果:{"company": "字节跳动", "amount": "50 亿美元"}

文本:"SpaceX 完成了 21 亿美元的新一轮融资。"
结果:{"company": "SpaceX", "amount": "21 亿美元"}

文本:"蔚来汽车宣布获得 11 亿美元战略投资。"
结果:

什么时候 Few-shot 最有用

Few-shot 特别适合以下场景:

  1. 需要特定输出格式——示例比描述更直观
  2. 分类任务——展示每个类别的例子
  3. 数据转换——输入到输出的映射模式
  4. 模型理解困难的任务——用例子"教"模型理解你的意图

什么时候不要用 Few-shot

  • 任务描述已经足够清晰——不需要例子模型就能做好的任务,加例子只是浪费 token
  • 每个例子都很长——会快速占满上下文窗口
  • 任务太复杂,需要推理——这时候 Chain of Thought(下一章)更合适

要点总结

  1. Few-shot = 在 Prompt 中给模型看几个例子。 这是最直观、最有效的让模型理解你意图的方式之一。
  2. 示例质量 > 数量。 3-5 个高质量、多样化、格式统一的例子通常就够了。
  3. 示例顺序影响效果。 把最相关的例子放在靠近目标输入的位置。
  4. Few-shot 最适合格式化输出、分类和数据转换任务。 对于需要复杂推理的任务,考虑 Chain of Thought。