Zero-shot / One-shot / Few-shot的区别
- Zero-shot:不给示例,直接让模型完成任务。简单任务够用,复杂任务效果不稳定
- One-shot:给一个示例。帮助模型理解期望的格式和风格
- Few-shot:给3-5个示例。效果最稳定,是工程中最常用的方式
Few-shot为什么有效?
模型训练时见过无数"示例→答案"的配对。当你在Prompt里提供示例时,相当于激活了模型的"上下文学习"能力——它会从你的示例中推断出任务的规律,然后按同样的模式完成新输入。
示例选择原则
- ✅ 多样性:覆盖不同类型的输入,避免模型过拟合某一种模式
- ✅ 包含边界case:比如空值、特殊字符、模糊情况
- ✅ 格式一致性:所有示例的输出格式必须完全一致
- ⚠️ 示例数量:通常3-5个最优,超过10个收益递减且浪费token
- ❌ 避免错误示例:质量比数量重要,一个错误示例会把模型带歪
示例1:情感分类任务
将用户评论分类为"正面"、"负面"或"中性"。
评论:这个产品真的很好用,五星好评!
分类:正面
评论:还行吧,没什么特别的
分类:中性
评论:快递太慢了,而且包装破损
分类:负面
评论:[待分类的评论]
分类:示例2:信息抽取任务
从文本中提取人名、公司、职位,输出JSON。
文本:王芳在阿里巴巴担任产品总监
输出:{"name":"王芳","company":"阿里巴巴","title":"产品总监"}
文本:张伟是腾讯的高级工程师,负责微信后台
输出:{"name":"张伟","company":"腾讯","title":"高级工程师"}
文本:[待提取的文本]
输出:示例3:格式转换任务
将非结构化的会议记录转换为结构化的待办事项列表。
输入:今天讨论了新功能上线的问题,小李负责前端,老王来做测试,下周五之前完成
输出:
- [ ] 小李:完成前端开发(截止:下周五)
- [ ] 老王:完成测试(截止:下周五)
输入:[待转换的会议记录]
输出:Few-shot的核心价值:不是教模型"知识",而是教模型"格式"。如果你的输出格式有明确规范,用Few-shot是最稳定的方式。