什么是Few-shot提示法:用3个例子让AI变聪明

什么是Few-shot提示法?简单来说,就是在向大语言模型提问之前,先在提示中放入2到5个完整的“输入-输出”示例,让模型通过观察这些示例快速理解任务格式、输出风格和判断逻辑。本文通过三个真实场景的案例,展示如何用3个精心设计的示例让大语言模型准确理解任务要求,输出符合预期的结果。

一、Few-shot提示法的基本概念
1.1 什么是Few-shot提示法
什么是Few-shot提示法?从技术定义上看,Few-shot提示法(Few-shot Prompting)也称为少样本示例提示,是提示工程中一种经典的提示构造方法。它的核心操作是:在大语言模型的输入提示中,预先提供N个“输入-输出对”作为示例(通常N在1到10个之间),让模型通过学习示例中的任务规律,快速理解任务要求,从而完成对新输入的预测输出。
Few-shot提示法与模型训练阶段的“少样本学习”(Few-shot Learning)有本质区别。训练阶段的少样本学习涉及模型参数的更新,而Few-shot提示法发生在推理阶段——模型参数完全不变,仅通过提示中的示例上下文来理解任务。这种方法利用了大型语言模型强大的上下文学习(In-context Learning)能力。
打个比方:你想教一个人做某件事,与其花500字描述规则和标准,不如直接给他看几个“别人做对了的例子”——他看完就能自己摸清楚规律。Few-shot提示法做的就是这件事。
1.2 Few-shot提示法的核心原理
大语言模型之所以能通过Few-shot提示法快速适应新任务,其底层机制是上下文学习。模型在预训练阶段已经学习了海量的文本模式,当在提示中看到几个输入-输出示例时,模型能够识别出这些示例之间的规律,并将这种规律应用到新的输入上。
值得注意的是,示例的格式往往比内容更重要——模型在很大程度上是通过示例学习输出格式和结构,而非真正“理解”了任务本身。这也是为什么Few-shot提示法在需要控制输出格式、风格和结构的场景中特别有效。
1.3 Few-shot提示法的基本结构
一个标准的Few-shot提示通常包含三个部分:
- 任务说明:用简洁的文字描述你要模型完成的任务
- 少样本示例:给出N个完整的“输入→输出”示例(2到5个效果最佳)
- 新输入:给出你真正想要模型处理的新问题
以一个情感分类任务为例:
任务:判断给定句子的情感倾向,输出“正面”或“负面”
示例1:
- 输入:这款新手机续航非常给力,拍照也很清晰,我用着很满意
- 输出:正面
示例2:
- 输入:这家餐厅的菜不仅量少,味道还很咸,服务也慢,再也不会来了
- 输出:负面
示例3:
- 输入:这个笔记本的纸质很好,书写起来很顺滑,价格也不贵
- 输出:正面
现在请判断:
- 输入:我买的这件外套洗了一次就掉色了,版型也变得很垮
- 输出:
模型学习了三个示例后,能够正确识别出“掉色”“版型垮”属于负面信息,输出“负面”。
二、用3个例子让AI变聪明——三个实战案例
2.1 案例一:电商产品标题生成
背景:你需要让大语言模型帮你写电商产品标题,要求风格简洁、有数字、有场景感、有真实体验感。你尝试用长篇文字描述要求,但模型输出的结果总是“差那么一点味道”。
问题出在哪里?你用文字描述了一种“感觉”,但模型对“感觉”的理解跟你有偏差。Few-shot提示法提供了另一种思路——与其解释风格,不如展示风格。
解决方案——直接给3个示例:
帮我写电商产品标题,风格参考以下示例:
示例1:续航30天的手环,我居然只花了99块
示例2:这个降噪耳机,地铁秒变私人音乐厅
示例3:用了3年不坏的充电宝,回头率200%
现在帮我写一个智能保温杯的标题。
模型输出:“用了半年离不开的保温杯,80°水温从早守到晚”
效果分析:你一个字的要求都没写,但模型完全理解了你想要的风格——有数字、有场景、有夸张但真实的体验感。这就是Few-shot提示法的核心价值:展示优于描述。
2.2 案例二:工作日报自动撰写
背景:你需要让大语言模型按照你过去的日报格式,自动生成新一天的日报内容。你希望格式完全一致,包括日期格式、工作内容分类、明日计划的结构。
解决方案——提供过去3天的日报作为示例:
以下是我过去3天的日报格式:
7月8日:完成产品需求评审3个,推进A项目原型设计至80%,协调运营部门确认上线时间。明日计划:完成原型评审,启动B项目调研。
7月9日:A项目原型评审通过,修改3处交互细节。B项目完成竞品分析报告初稿。明日计划:提交B项目方案,跟进A项目开发排期。
7月10日:B项目方案通过,进入开发阶段。A项目开发启动,完成前后端接口对接。处理2个线上bug。明日计划:跟进A项目开发进度,准备周五周报。
现在帮我写7月11日的日报,今天做了:跟进了A项目开发进度(完成50%),处理了1个用户反馈的紧急问题,参加了部门季度规划会议。
模型输出:模型完全模仿了你提供的格式和语气,连标点符号的风格都对。
关键要点:例子越多越准,但2到3个通常就足够了。太多示例反而会让模型“过拟合”,变得过于死板。
2.3 案例三:正反例对比——让AI知道“什么不对”
背景:有时候光给“好例子”还不够,你还需要让模型知道什么是不对的。通过同时提供正面示例和负面示例,可以更精确地控制输出质量。
解决方案——同时提供好例子和坏例子:
帮我写朋友圈文案,风格参考以下示例:
✅ 好例子1:周五下班,买了一束花犒劳自己。成年人的快乐,就是这么朴实无华。
✅ 好例子2:加班到11点,回家发现猫在门口等我。突然觉得这班上得也值了。
❌ 坏例子1:今天天气真好,心情美美哒~开心每一天!加油!
❌ 坏例子2:分享我的生活碎片#日常#打卡#记录美好#生活需要仪式感
现在帮我写一条今天出差回来后的朋友圈。
效果分析:模型通过对比正反例,能够更精确地理解你想要的风格——有真实细节、有情感共鸣、避免空洞的口号式表达和过度使用标签。
三、Few-shot提示法的示例选择策略
3.1 示例数量:为什么是3个?
关于示例数量,研究和实践给出了明确的指引。卡内基梅隆大学的指南指出,3个高质量示例的效果优于10个通用示例。对于大多数任务而言,3到5个示例是性价比最高的区间,超过8个示例后边际收益急剧下降。
具体数据方面,有实测显示当示例超过7个时,提示词长度会显著影响推理速度,但准确率提升不足5%。另一项系统性实证研究对5个大语言模型在6种示例数量配置(0、1、2、3、5、8个)下进行了测试,发现示例数量与分类性能之间的关系并非单调递增,也非普适规律。
| 示例数量 | 适用场景 | 优势 | 局限性 |
|---|---|---|---|
| 0个(Zero-shot) | 简单任务、快速验证 | 成本最低、无需准备示例 | 复杂任务准确率有限 |
| 1个(One-shot) | 格式控制、风格引导 | 成本较低、能建立基本模式 | 复杂逻辑难以通过单示例传达 |
| 2-3个 | 大多数日常任务 | 性价比最高、覆盖常见场景 | 边缘情况可能覆盖不足 |
| 3-5个 | 复杂任务、精确控制 | 覆盖充分、准确率最高 | 准备成本略高 |
| 5-8个 | 高度专业化任务 | 覆盖全面、稳定性强 | 边际收益递减、Token消耗大 |
| 8个以上 | 不推荐 | — | 边际收益极低、上下文过长稀释注意力 |
3.2 示例质量:比数量更重要
示例的质量远高于数量。一个精心挑选的示例,其价值超过10个随机选取的示例。高质量的Few-shot示例应具备以下特征:
(1)代表性:示例应覆盖任务中常见的场景和变化。例如,在情感分类中,应同时包含正面、负面和中性的案例。
(2)多样性:示例之间应有足够的差异,避免过于相似。如果三个示例都是正面评价,模型可能无法学会识别负面评价。
(3)格式一致性:所有示例应使用完全相同的格式、标点和标记。模型会精确模仿示例的格式。
(4)难度梯度:最有效的Few-shot提示往往以一个简单案例开头让模型建立基本模式认知,中间包含一个边界案例展示处理规范,最后以一个复杂案例锚定质量上限。
3.3 示例顺序的影响
示例的顺序会影响模型的输出结果——这种现象被称为近因偏差(Recency Bias)。模型往往更重视最后出现的示例。因此,最具代表性的示例应放在最后。
四、Few-shot提示法与其他提示方法的对比
4.1 Zero-shot、One-shot与Few-shot
为了更全面地理解什么是Few-shot提示法,有必要将其与另外两种常见的提示方法进行对比:
| 对比维度 | Zero-shot提示法 | One-shot提示法 | Few-shot提示法 |
|---|---|---|---|
| 示例数量 | 0个 | 1个 | 2-5个(通常) |
| 示例准备成本 | 无需准备 | 极低 | 中等 |
| 任务理解方式 | 仅依赖指令描述 | 单示例引导 | 多示例模式匹配 |
| 格式控制能力 | 较弱 | 中等 | 强 |
| 复杂任务表现 | 有限 | 有所提升 | 最优 |
| 适用场景 | 简单任务、快速验证 | 格式引导、风格示范 | 复杂任务、精确输出控制 |
| Token消耗 | 最低 | 低 | 中等 |
Zero-shot提示法指不提供任何示例,仅通过任务指令让模型直接完成输出。它适合简单任务,但对于需要特定格式或复杂逻辑的任务,准确率往往有限。
One-shot提示法提供1个输入-输出示例。单个示例能够帮助模型理解基本的输出格式和风格,但对于复杂的判断逻辑,单示例的引导力仍然不足。
Few-shot提示法提供2到5个示例。多个示例能够让模型更全面地理解任务的边界条件、输出格式和判断逻辑,在少量标注数据下表现最佳。
4.2 Few-shot与Chain-of-Thought(思维链)
Few-shot提示法和思维链(Chain-of-Thought, CoT)提示是两种不同的技术路线:
- Few-shot提示法:展示“正确答案”,让模型模仿输出格式和模式
- 思维链提示:展示“思考过程”,让模型学习分步推理的逻辑
两者可以结合使用——Few-shot CoT即在示例中同时展示输入、推理过程和最终输出。这种组合方式在需要复杂、结构化推理的任务中效果尤为突出。
五、Few-shot提示法的进阶技巧
5.1 动态示例选择
传统的Few-shot提示法使用固定示例,无论用户输入什么内容,示例都保持不变。更高级的做法是根据输入内容动态匹配最相关的示例。
这种方法的核心思路是:从预定义的高质量问答对中检索与当前输入最相关的样例作为模型参考,引导模型生成更准确、风格更一致的回复。动态示例选择特别适用于需要严格遵循既有知识或固定风格的场景。
5.2 使用XML标签分隔示例
部分大语言模型(如Claude)官方推荐使用XML标签来分隔示例与指令,帮助模型清晰区分哪些内容是示例、哪些是指令。
示例结构:
<instructions>
你是一位专业的文本分类助手。
</instructions>
<examples>
<example>
输入:这款产品太棒了!
输出:正面
</example>
<example>
输入:服务态度非常差。
输出:负面
</example>
</examples>
现在请分类以下文本:
输入:产品质量一般,但价格还算合理。
5.3 使用分隔符保持清晰
在Few-shot提示中,使用清晰的分隔符(如---、###或空行)可以帮助模型区分不同的示例和指令。同时,应确保每个示例具有相似的复杂度,防止模型过度关注最长的示例。
六、Few-shot提示法的常见误区与注意事项
6.1 误区一:示例越多越好
事实:示例数量并非越多越好。对于大多数任务,3到5个示例是性价比最高的区间。超过8个示例后,边际收益急剧下降,反而会因上下文过长稀释模型的注意力。
6.2 误区二:随便找几个例子就行
事实:真正有效的Few-shot提示不是随便找几个例子塞进去,而是一个精心设计的“示例策略”。示例的选择、顺序、格式一致性都会显著影响最终输出质量。
6.3 注意事项:Few-shot不是用来“教新知识”的
Few-shot提示法的目的是引导模型的输出风格和格式,而非向模型注入新知识。如果需要模型了解特定领域的专业知识,应结合检索增强生成(RAG)等方法,而非依赖Few-shot示例。
6.4 注意事项:不同模型对Few-shot的响应不同
研究表明,不同大语言模型对Few-shot提示的响应方式存在显著差异:
- 有些模型在零样本下已经表现良好,增加示例仅带来微小的、统计上不显著的提升
- 有些模型在零样本下表现极差,但增加一个示例就能大幅提升性能
- 有些模型在零样本下最优,增加示例反而导致性能下降
- 有些模型呈现U形曲线——零样本表现好,低示例数量时下降,高示例数量时部分恢复
因此,在实际应用中,建议针对你使用的具体模型进行测试,找到最佳的示例数量。
七、总结
什么是Few-shot提示法?它是一种通过在大语言模型的输入提示中嵌入少量“输入-输出”示例,让模型快速理解任务格式、输出风格和判断逻辑的技术。它不需要更新模型参数,仅利用模型的上下文学习能力。
用3个例子让AI变聪明的关键在于:
- 示例质量优于数量——3个精心设计的示例胜过10个随机示例
- 展示优于描述——与其用长篇文字解释规则,不如直接展示正确的输出样例
- 格式一致性至关重要——模型会精确模仿示例的格式和结构
- 示例顺序影响结果——最重要的示例应放在最后
- 不同模型响应不同——需要针对具体模型进行测试和调整
Few-shot提示法是当今与大型语言模型交互时最实用、最高效的技术之一。掌握这项技术,你就能用最少的成本,让大语言模型输出更精准、更符合预期的结果。
常见问题(FAQ)
Q1:Few-shot提示法一定比Zero-shot提示法好吗?
不一定。对于简单任务,Zero-shot提示法可能已经足够。Few-shot提示法的优势主要体现在复杂任务、需要精确格式控制或特定输出风格的场景中。
Q2:Few-shot提示法应该放几个示例最好?
根据多项研究和实测,3到5个示例在大多数任务中效果最佳。2个示例通常也能取得不错的效果。
Q3:Few-shot提示法可以避免大语言模型的幻觉吗?
Few-shot提示法可以在一定程度上减少输出格式和风格上的偏差,但它不能从根本上消除幻觉。如果模型缺乏相关事实知识,示例无法“教会”模型新知识。
Q4:示例应该放在提示的什么位置?
示例通常放在任务指令之后、正式任务输入之前。部分模型(如Claude)推荐使用XML标签将示例与指令清晰分隔。
Q5:不同的大语言模型对Few-shot提示法的响应一样吗?
不一样。不同模型对示例数量的响应模式可能存在显著差异。建议在实际应用中针对你使用的具体模型进行测试。
Q6:示例需要覆盖所有可能的输入类型吗?
不需要,也几乎不可能。示例应覆盖最典型的场景和关键的边界情况。模型会从示例中推断模式,而非机械记忆。
Q7:Few-shot提示法和微调(Fine-tuning)有什么区别?
Few-shot提示法发生在推理阶段,不更新模型参数;微调发生在训练阶段,需要更新模型参数并需要大量标注数据。Few-shot提示法的成本远低于微调,适合快速迭代和原型验证。
Q8:Few-shot提示法可以用于代码生成吗?
可以。通过提供几个输入-输出代码示例,模型可以学会特定的代码风格、函数命名规范或输出格式。

