Prompt技巧:Few-shot
在编写智能体(Agent)或大模型(LLM)的提示词(Prompt)时,Few-shot(少样本提示/少样本学习) 是一个非常核心且高效的概念。
简单来说,Few-shot 就是在给 AI 下达任务指令时,不只给“规则”,还给它看几个“正确答案的例子”。
我们可以把它理解为一种 “类比教学”。
1. 直观理解:从 Zero-shot 到 Few-shot
Section titled “1. 直观理解:从 Zero-shot 到 Few-shot”为了理解 Few-shot,我们需要先看看它的“兄弟”们:
-
Zero-shot(零样本):
你直接命令 AI 做事,不给任何例子。
指令: 请将下面这句话翻译成英文:“今天天气真不错。”
AI: The weather is really nice today.
-
One-shot(单样本):
你给 AI 一个 例子,让它照猫画虎。
指令: 请模仿下面的风格将句子翻译成英文。
示例: “你好吗?” -> “How do you do?” (正式风格)
任务: “今天天气真不错。”
AI: The weather is quite pleasant today. (试图模仿正式感)
-
Few-shot(少样本):
你给 AI 两个或更多(通常 3-5 个) 例子。
这能帮 AI 锁定非常具体的模式、格式或逻辑。
2. 为什么要用 Few-shot?
Section titled “2. 为什么要用 Few-shot?”大语言模型本质上是“文字接龙”的高手,它们非常擅长模式识别(Pattern Matching)。通过提供几个例子,你可以达到以下目的:
-
固定格式(关键): 假如你需要 AI 输出 JSON 或特定的代码格式,给例子比写一堆“请不要输出额外文字”的文字说明要有效得多。
-
规范风格: 比如你需要“鲁迅风格”或“小红书风格”,给几个样板段落,AI 就能瞬间领悟语调。
-
复杂逻辑引导: 对于数学题或推理题,给几个带有“解题步骤”的例子(这叫 Chain-of-Thought Few-shot),能显著提高 AI 的准确率。
-
处理边缘情况: 你可以在例子中包含一个“当找不到答案时输出什么”的样本,防止 AI 胡编乱造。
3. 实际案例演示
Section titled “3. 实际案例演示”假设你想做一个 “从用户评论中提取情绪和关键词” 的智能体。
❌ 这种是 Zero-shot (效果可能不稳定)
Section titled “❌ 这种是 Zero-shot (效果可能不稳定)”Prompt: 请分析下面的评论,告诉我用户的情绪是正面还是负面,并提取提到的产品特性。
评论: “这手机屏幕是很清楚,但是电池太不耐用了,用了半天就没电。”
AI 可能回答: “这是一个中性偏负面的评论。提到的特性有屏幕清晰度(正面)和电池续航(负面)。” (问题:回答格式随意,不方便程序后续处理)
✅ 这种是 Few-shot (效果稳定精准)
Section titled “✅ 这种是 Few-shot (效果稳定精准)”Prompt: 任务:分析用户评论。 输出格式:情绪 (Positive/Negative/Mixed) | 关键词列表
示例 1: 输入:“味道好极了,而且送货很快!” 输出:Positive | [“味道”, “送货速度”]
示例 2: 输入:“衣服质量太差了,线头很多,而且客服不理人。” 输出:Negative | [“质量”, “做工”, “客服服务”]
示例 3: 输入:“虽然价格便宜,但是物流慢得要死。” 输出:Mixed | [“价格”, “物流速度”]
当前任务: 输入:“这手机屏幕是很清楚,但是电池太不耐用了,用了半天就没电。” 输出:
AI 会回答: Mixed | ["屏幕清晰度", "电池续航"] (结果:完全遵循了你设定的“情绪 | [列表]”这种特殊格式)
4. 编写 Few-shot 的最佳实践
Section titled “4. 编写 Few-shot 的最佳实践”-
样本数量: 通常 3 到 5 个 例子性价比最高。太少(1个)可能导致 AI 过度拟合那个例子的特定内容;太多(几十个)会占用 Token,且收益递减。
-
多样性: 例子要覆盖不同的情况。比如上面的例子中,我分别列举了“正面”、“负面”和“混合”三种情况。
-
标签明确: 使用
输入:、输出:或者User:、Assistant:这样清晰的分隔符,让 AI 知道哪里是例子,哪里是正文。 -
质量至上: 你的例子必须是完美的。如果例子里有错别字或逻辑错误,AI 会完美地学会这个错误。
Few-shot 就是 “先演示,后提问”。
它是提示词工程(Prompt Engineering)中最简单、但提效最明显的手段。当你发现 AI 听不懂你的复杂指令,或者输出格式总是不对时,别再加长篇大论的解释了,直接给它加两个例子试试。