引言

Few-Shot Prompting通过在Prompt中提供少量输入-输出示例来引导模型行为,是大语言模型上下文学习能力的最直接应用。看似简单——给几个例子就行——但实践中示例的选择、顺序、格式和数量都会显著影响模型表现。本文将系统梳理Few-Shot Prompting的最佳实践。

示例数量:多少才够?

数量与效果的关系

Few-Shot的效果并非随示例数量线性增长。研究表明:

  • 0-shot:适合简单任务或模型已有充分训练的任务
  • 1-shot:适合格式引导,告诉模型"我期望什么样的输出格式"
  • 3-5 shot:大多数任务的最佳区间,平衡效果和token成本
  • 5-10 shot:复杂任务或需要覆盖多种情况时使用
  • 10+ shot:收益递减明显,通常不值得额外的token消耗

动态调整策略

建议从0-shot开始,观察模型表现。如果输出格式不稳定或准确率不足,逐步添加示例,每次增加1-2个,直到效果达到预期。记录不同数量下的效果对比,找到性价比最优点。

示例选择策略

多样性优先

示例集应覆盖任务的不同变体,而非同一模式的重复。例如情感分析任务,好的示例集应包含:正面、负面、中性、讽刺、混合情感等不同类型。避免示例过于相似导致模型过度拟合到特定模式。

难度梯度

示例应按难度递进排列:从简单到复杂。这样模型先学会基础模式,再处理复杂变体。难度梯度有助于模型建立稳定的推理框架。

边界案例覆盖

确保示例集包含边界案例——那些容易出错的情况。通过展示边界案例的正确处理方式,帮助模型建立更鲁棒的决策边界。

避免偏见引入

示例选择中的偏见会被模型放大。注意事项:示例中不要包含特定人群、品牌或地域的偏见性标注;正例和负例的比例应均衡;避免示例间的隐含模式被模型过度泛化。

示例格式优化

输入输出结构化

使用清晰的结构化格式,明确区分输入和输出:

输入:[输入内容]
输出:[输出内容]

或使用更明确的分隔符:

用户:[输入内容]
助手:[输出内容]

一致性原则

示例的格式必须严格一致。如果第一个示例的输出是JSON格式,所有示例的输出都应为JSON格式。格式不一致是Few-Shot效果下降的常见原因。

标签明确化

对于分类任务,使用明确、互斥的标签名。避免使用"是/否"这类模糊标签,改用"正面/负面/中性"等更具体的标签。标签名应具有自描述性,让模型仅从标签名就能理解其含义。

示例排列顺序

近因效应

大语言模型对Prompt末尾的内容更敏感(近因效应)。因此,最相关或最具代表性的示例应放在最后(最靠近实际问题的位置)。

顺序敏感任务

某些任务对示例顺序高度敏感,如:序列标注、步骤推理。对于这类任务,建议通过实验测试不同排列顺序的效果,选择最优顺序。

随机化策略

如果示例集较大,可以尝试在每次调用时随机化示例顺序(从示例池中采样),这有助于降低特定顺序带来的偏差。但要注意保持示例集内部的逻辑一致性。

高级技巧

动态示例选择

不使用固定的示例集,而是根据当前输入动态选择最相似的示例。流程为:将输入与示例池中的所有示例计算相似度,选择Top-K最相似的作为Few-Shot示例。这种方法在信息检索、问答等任务中效果显著。

示例增强

在每个示例中添加简短的解释说明:

输入:这家餐厅服务很差
输出:负面
理由:评论中使用了"差"这个明显的负面评价词。

解释说明帮助模型理解示例背后的推理逻辑,而不仅仅是记忆输入-输出映射。

负示例使用

除了展示正确的输入-输出对,还可以展示常见错误及纠正:

输入:[输入内容]
错误输出:[常见错误]
正确输出:[正确答案]
纠正:[为什么错误输出不对]

这种方法在容易产生特定错误的任务中特别有效。

链式Few-Shot

将复杂任务分解为多个步骤,每个步骤使用各自的Few-Shot示例:

步骤1示例:
输入 → [中间结果]

步骤2示例:
[中间结果] → [最终结果]

现在请处理:
[实际输入] → ? → ?

调试与优化

错误分析

当Few-Shot效果不理想时,进行系统化的错误分析:将模型输出按错误类型分类,找出最频繁的错误类型,检查是否是示例中没有覆盖该类情况,针对性地添加或修改示例。

A/B测试

对不同示例配置进行A/B测试:使用固定的测试集,对比不同示例集的效果。评估指标包括准确率、格式合规率和输出一致性。

消融实验

逐一移除示例,观察效果变化,找出哪些示例对效果贡献最大。这有助于精简示例集,降低token消耗。

常见误区

误区一:示例越多越好

实际上,过多低质量或重复性示例不仅浪费token,还可能引入噪音,降低模型表现。质量远比数量重要。

误区二:示例可以随意选

示例是模型学习的"教材",随意选择示例等于给模型提供低质量学习材料。应投入足够精力精心设计示例集。

误区三:一套示例走天下

不同任务、不同模型可能需要不同的示例集。将一个场景的示例直接迁移到另一个场景往往效果不佳。

结语

Few-Shot Prompting是大语言模型上下文学习能力的核心应用方式。高质量的示例选择、一致的格式设计、合理的排列顺序和持续的调试优化,是发挥Few-Shot效果的关键。投入时间精心设计Few-Shot示例,往往是Prompt工程中投入产出比最高的优化方向。

加入讨论

这篇文章有姊妹讨论帖在硅基AGI论坛 — 全球首个碳基硅基认知交流平台。

碳基与硅基的智慧碰撞,认知差异创造无限可能。