AI教程

Few-shot Prompting 是什么?少样本示例选择、顺序与评测指南

Few-shotPrompting在提示中放入少量输入—输出示例,让模型在不更新权重的情况下从上下文识别任务和格式。本文说明示例如何选择、排序、隔离与评测,以及相似示例、边界样本和动态检索各自的适用条件。

Few-shot Prompting 由任务指令多个输入输出示例和新输入组成的上下文结构图
本页目录
  1. Few-shot、Zero-shot、微调有什么区别?
  2. 一个 Few-shot 提示包含什么?
  3. 示例怎么选:不是只看“相似”或“多样”
  4. 标签、格式和内容,究竟哪个更重要?
  5. 示例顺序为什么也要测试?
  6. 静态示例与动态示例检索
  7. 三类任务的示例应该怎样设计?
  8. 分类:先定义标签边界,再展示难例
  9. 信息抽取:缺失值比完整案例更重要
  10. 改写与生成:把“好风格”变成可观察特征
  11. 类别偏置与校准
  12. 上下文预算怎样分配?
  13. 什么时候不应该继续增加 Few-shot?
  14. 如何评测 Few-shot 是否真的有用?
  15. 示例版本与可复现记录
  16. 人工复核应该看什么?
  17. 常见失败与修复
  18. 生产上线清单
  19. 常见问题
  20. 示例越多越好吗?
  21. Few-shot 会让模型永久学会任务吗?
  22. 应该选最相似还是最多样的示例?
  23. 能把用户好评的输出自动加入示例库吗?
  24. 编辑复核与纠错记录

直接回答:Few-shot Prompting(少样本提示)是在同一次提示中放入少量“输入—输出”示例,再让模型处理新输入。模型权重不会因此更新;示例为本次推断提供任务、标签、格式和输入分布线索。它适合分类、抽取、改写和固定格式任务,但效果会随模型、示例、顺序、数量和测试数据变化。

Few-shot 不是“多放几个优秀答案”。可靠做法是先写清任务契约,再从经过审核的示例库选择能代表常见情况和关键边界的演示,用独立测试集比较零样本与少样本基线,并记录模型、提示、示例集合和顺序版本。

旧稿纠错:旧页声称模型因为“有了自己的主见”而不再模仿,建议删除示例、强迫展示思维链,并用没有测试记录的“准确率 60% 到 98%”“解决率提升 40%”作案例。本次删除这些断言。规则和示例不是互斥方案;是否有效必须在具体模型与任务上测试。
Few-shot Prompting 由任务指令多个输入输出示例和新输入组成的上下文结构图
图 1:Few-shot 示例属于当前上下文,不是训练或微调。

Few-shot、Zero-shot、微调有什么区别?

GPT-3 论文系统展示了模型仅通过文本交互执行零样本、单样本和少样本任务的现象,且没有进行任务专用的梯度更新。这个现象通常称为 In-context Learning(上下文学习),但“学习”发生在当前推断行为中,不表示模型永久记住示例。

方法 给模型什么 是否改权重 适合场景 主要代价
Zero-shot 指令与新输入 任务清楚、模型已熟悉 格式和边界可能不稳
One-shot 1 个示例 展示输出形状 容易受单例偏差影响
Few-shot 少量示例 分类、抽取、风格和边界 占上下文、顺序敏感
RAG 检索到的事实证据 更新或私有知识 检索与引用链路
微调 训练数据集 稳定行为、术语和规模化任务 数据、训练与部署成本

示例主要告诉模型“怎样完成任务”,事实材料主要告诉模型“依据什么回答”。二者可以组合:RAG 提供最新制度,Few-shot 展示如何把制度片段转换成结构化答复。RAG 边界见检索增强生成指南,微调边界见LoRA/QLoRA 与上线验收

一个 Few-shot 提示包含什么?

任务:把客服消息分类为 refund、delivery、account 或 other。
规则:只输出 JSON;证据不足时使用 other。

<example>
输入:钱付了两次,怎么退回?
输出:{"label":"refund","reason":"重复扣款并请求退款"}
</example>

<example>
输入:物流三天没更新。
输出:{"label":"delivery","reason":"询问物流状态"}
</example>

<query>
输入:{真实待分类消息}
</query>

示例应使用与真实请求完全相同的字段、分隔符和输出 schema。不要在示例中加入生产时不会出现的解释,也不要让一个示例的标签拼写与任务定义不同。Anthropic 的提示实践建议示例与目标任务相关、多样、清晰并使用一致结构;OpenAI 的提示工程文档也强调不同模型类型、快照和消息层级会影响提示行为。

组件 必须一致的内容 常见错误
任务定义 标签、字段、允许动作 示例暗示了指令没有说明的新规则
输入 字段名、语言、噪声和长度分布 示例过于干净,生产输入含错字和缺项
输出 schema、类型、空值和拒答 示例输出含 Markdown,生产要求纯 JSON
分隔 示例与真实输入边界 用户文本被解释为新指令
验收 可机器检查的成功标准 只凭“看起来不错”选择提示

示例怎么选:不是只看“相似”或“多样”

示例选择至少要同时考虑质量、相似性、覆盖率、边界和安全。What Makes Good In-Context Examples for GPT-3?研究了按语义相似度检索示例的路线,但论文结果来自特定任务和模型,不能推出“最近邻示例永远最好”。相似示例有助于贴近当前输入,覆盖示例则帮助模型看到标签和边界。

Few-shot 示例选择需同时检查质量相似性标签覆盖边界情况顺序和安全的决策图
图 2:示例集合是一个受版本管理的小型数据集。
维度 检查问题 失败表现 处理方式
正确性 输出是否经领域人员确认 模型稳定复制错误标签 双人复核或规则校验
相似性 是否贴近当前意图和表达 任务方向偏离 语义检索后再过滤
覆盖率 标签与常见输入是否覆盖 多数类被过度预测 分层抽样
边界 歧义、缺失和拒答是否出现 遇到异常就猜测 加入高价值难例
代表性 长度、语言、错字是否接近生产 离线好、线上差 从真实流量脱敏取样
安全 是否包含秘密、恶意指令或个人信息 泄露或被注入 脱敏、隔离、白名单

标签、格式和内容,究竟哪个更重要?

Min 等人的研究在其分类与多项选择实验中发现,把演示标签随机替换后性能下降有限,而标签空间、输入分布和整体格式等因素仍很重要。这是对特定实验的观察,不能改写成“示例答案可以随便写”。抽取、计算、代码、法律或医疗任务中,错误演示可能直接传播错误逻辑。

任务 示例最重要的信号 错误示例风险
封闭标签分类 标签集合、输入分布、输出格式 类别边界偏移
字段抽取 schema、缺失值和跨度规则 字段错位或编造值
风格改写 语气、结构和禁用表达 复制敏感或不适合内容
数学/代码 正确方法、接口和约束 复制错误步骤
高风险判断 证据、拒答和升级路径 把演示当专业结论

示例顺序为什么也要测试?

Few-shot 提示可能对示例排列敏感。Fantastically Ordered Prompts研究了顺序导致的性能变化。实际工程中,最近的示例、标签聚集、长示例占据窗口和首尾位置都可能改变输出,因此不能只测试一种排列。

顺序策略 优点 风险 测试方法
固定人工顺序 易复现 对特定位置过拟合 运行多组随机排列
最相似放最后 新输入附近有相似模式 最近示例偏置 与放首位/中间比较
按标签交错 减少同类聚集 不一定适合生成任务 看各类召回与混淆矩阵
随机顺序 可估计稳定性 线上不可完全复现 固定随机种子并记录排列

如果不同顺序导致结论大幅变化,不应挑最好的一次当最终结果。先检查示例是否冲突、标签是否不平衡、任务是否含糊;再用多排列平均值、最差分位或稳定性阈值评估。

静态示例与动态示例检索

静态 Few-shot 为所有请求使用同一组示例,适合任务稳定、标签少、审计要求高的场景。动态示例检索则按当前输入从示例库选取候选,适合意图多、表达差异大或长尾明显的场景,但它新增了检索、污染、延迟和不可复现问题。

方案 适合 上线要求
固定 2—5 个示例 小标签集、固定格式 版本号与回归集
按标签分层选择 类别不平衡 每类最低覆盖
语义最近邻 表达差异大 相似度阈值与质量过滤
相似 + 多样重排 需兼顾当前输入与覆盖 去重和边界样本配额
人工场景路由 高风险、规则明确 路由失败与默认降级

动态库中的示例必须是审核后的白名单,不能把任意用户输入和模型输出直接写回示例库,否则错误、个人信息和提示注入会被后续请求检索出来。示例 ID、来源、审核人、版本和选取分数应进入日志。

三类任务的示例应该怎样设计?

分类:先定义标签边界,再展示难例

分类任务最常见的问题不是模型不认识标签,而是业务标签互相重叠。例如“物流延迟”和“要求退款”可能同时出现在一条消息中。任务契约需要说明单标签还是多标签、冲突时的优先级、证据不足时是否使用 other;示例再展示这些规则如何应用。

示例角色 应包含 不应包含
典型正例 一个标签的清楚证据 与真实输入完全不同的教科书句子
相邻边界 容易与另一标签混淆的表达 没有说明为何选择该标签
多意图 优先级或多标签输出 示例与任务规则冲突
无答案 other、拒答或转人工 为了覆盖而强行归类

信息抽取:缺失值比完整案例更重要

抽取任务应展示字段缺失、多个候选、单位换算和原文冲突时的行为。若所有演示都恰好包含完整姓名、日期和金额,模型可能在生产中为缺失字段补造值。示例输出要区分 null、空字符串、未知和不适用,并保留支持字段的原文片段或位置。

改写与生成:把“好风格”变成可观察特征

不要只挑编辑认为“写得好”的文章。先把目标拆成句长、结构、受众、语气、禁用表达、引用规则和事实边界,再让示例一致体现这些特征。涉及事实的生成任务仍需可靠来源;示例只说明表达方式,不能成为事实证据。幻觉与证据核验可参考AI 幻觉核验指南

类别偏置与校准

示例中的标签频率、排列和标签词本身都可能造成偏置。Calibrate Before Use研究了上下文学习中的答案偏置与校准方法。论文方法和收益来自特定模型与任务,生产团队不应直接套一个校准公式,而应先观察空输入、无信息输入或标签互换时模型是否偏向固定类别。

  • 比较每个标签在测试集中的真实占比与预测占比,避免只看总体准确率。
  • 交换标签名称或示例顺序,检查结论是否异常变化。
  • 记录置信信息时先验证其与真实正确率是否一致,不把模型自报概率当校准概率。
  • 业务代价不对称时,用每类召回、精确率和代价矩阵决定阈值,而不是追求单一最高分。
偏置来源 诊断实验 可能修复
多数类示例过多 平衡示例后比较各类召回 分层配额或代价敏感规则
最后一个示例影响大 轮换首尾位置 多顺序评测或固定稳定排列
标签词有语义暗示 换成中性标签 ID 标签映射与后处理
某种格式被偏爱 保持内容不变只换格式 统一模板和解析器

上下文预算怎样分配?

上下文窗口并不只装示例,还要容纳系统指令、真实输入、检索证据、工具结果和输出空间。示例过多会挤掉事实材料或使模型更难找到关键条件。应按任务价值分配预算,而不是“窗口还有空间就继续加”。

内容 优先级 压缩原则
系统与安全边界 最高 保留明确规则,不由示例隐含
当前真实输入 最高 不删除影响结论的字段
事实证据 保留来源、版本和例外
Few-shot 示例 按增益决定 用消融删除无贡献或重复示例
历史对话 按相关性决定 去除跑题和过期指令

压缩示例时不能只缩短文字,还要重新验证输出。删掉一句看似多余的限制,可能改变标签边界;把真实错误码换成通用占位符,可能使示例失去精确匹配价值。Google 的提示设计策略也把清晰指令、少样本示例、上下文和迭代评测作为相互关联的实践,而不是固定公式。

什么时候不应该继续增加 Few-shot?

现象 更可能需要 原因
答案缺少最新或私有事实 RAG、数据库或 API 示例不是事实更新机制
JSON 仍偶尔不合法 结构化输出、schema 校验与重试 示例不能提供确定性语法保证
数千种稳定标签且请求量大 专用分类器或微调 上下文示例成本和覆盖受限
需要付款、删库或改权限 工具权限、审批与业务规则 提示不能授予或限制真实权限
所有提示版本都在长尾失败 补数据、换模型或重新定义任务 问题可能不是措辞

停止调提示也是工程决策。若 Few-shot 相对基线的收益小于新增 Token、延迟和维护成本,保留 Zero-shot 可能更合理;若行为需要跨大量请求稳定复用,应评估微调;若错误会造成高影响动作,应使用确定性规则和人工审批。

如何评测 Few-shot 是否真的有用?

先建立不包含在示例库中的保留测试集,再比较 Zero-shot、固定 Few-shot 和动态 Few-shot。调示例时使用开发集;最后只在保留集上验收,避免反复看测试答案后把示例挑成“考试泄题”。

Few-shot 提示从零样本基线示例选择消融实验保留集回归到线上监控的评测流程
图 3:比较基线、做消融、测顺序,最后再上线监控。
门禁 指标 需要回答
任务质量 准确率、F1、字段正确率或人工量表 是否优于 Zero-shot 基线
格式 schema 通过率、可解析率 是否可被下游稳定消费
覆盖 各标签召回、长尾与边界通过率 是否只改善多数类
稳定 不同顺序、种子和复跑方差 是否依赖幸运排列
迁移 不同模型/快照的回归差异 升级模型后是否仍有效
运行 输入 Token、P95 延迟、单次成本 收益是否值得上下文开销
安全 注入成功率、敏感信息暴露率 示例是否扩大攻击面

至少做三类消融:去掉全部示例、逐个去掉示例、打乱示例顺序。若删除某个示例反而更好,它可能是噪声;若只在开发集提升,可能已经过拟合;若格式变好但事实变差,应分开报告,而不是用一个平均分掩盖。

示例版本与可复现记录

“提示词没有改”并不等于系统行为没有改。模型快照、系统消息、分词、动态选例模型、示例库内容、顺序、采样参数和结构化输出实现都可能变化。每个线上请求应生成一个可追溯版本身份,出现投诉时能还原当时到底使用了什么。

记录项 建议内容 缺失后的问题
模型 供应商、模型 ID、快照/发布日期 无法判断是否因模型升级退化
提示 系统、开发者和用户模板哈希 不知道真实指令层级
示例 ID、版本、顺序、选择分数 动态 Few-shot 无法复现
参数 温度、最大输出、随机种子等 无法区分提示与采样波动
输入 脱敏后的稳定样本 ID 无法重放且可能过度记录隐私
结果 原始输出、解析结果、校验错误 只看到最终修正稿,漏掉失败

示例库发布可采用“草稿—审核—灰度—生效—撤回”状态。修改标签、输出 schema 或来源时创建新版本,不覆盖旧记录;动态检索只从当前生效的白名单取样。删除敏感示例时,还要清除缓存和派生索引,而不是只在管理界面标记删除。

发布报告应同时保存基线与候选的测试集版本、逐样本差异和失败清单。若总体分数提高但高风险类别下降,不能直接上线;若某组示例只对一个模型有效,应把适用模型写入版本元数据。这样 Few-shot 才从“聊天技巧”变成可审计的配置资产。

人工复核应该看什么?

人工评审不应只对最终文字打“喜欢/不喜欢”。先按任务契约拆成可观察项:标签是否正确、字段是否有原文依据、格式能否解析、缺失时是否拒答、语言是否符合受众、是否暴露隐私。评审者看不到模型或提示版本时,也很难判断问题来自示例还是模型。

  • 双人独立标注一小部分样本,先解决标准分歧,再扩展评测集。
  • 把“无法判断”作为合法标签,避免评审者被迫猜测。
  • 记录错误类型而非只记总分,使后续能针对性补示例。
  • 定期抽查线上真实失败,防止测试集长期停留在旧分布。

对于开放式生成,可以准备成对比较:向评审者隐藏方案名称,只判断哪个回答更符合事实、完整性、格式和受众要求,同时允许“二者都不合格”。交换左右位置并随机化顺序,减少展示偏置。评审意见应回到具体句子或字段,不能只写“感觉更自然”。若模型评分器参与扩展评测,仍需与人工校准集比较,并监控它是否偏好更长、更自信或与自身风格相似的答案。

上线后也要保留人工抽样。尤其关注业务代价高、模型置信表达很强、解析器自动修复过、或动态检索分数接近阈值的请求。把确认后的失败加入开发集时,应另留新的保留样本,避免每次修复都把最终测试集变成训练题。

常见失败与修复

症状 可能原因 修复
总预测同一标签 标签不平衡或顺序偏置 分层选择、交错排列、看混淆矩阵
复制示例内容 任务与输入边界不清 使用明确标签并加入新输入标识
JSON 偶尔无法解析 示例格式不一致 统一 schema,并做程序校验/重试
线上效果低于离线 示例不代表真实分布 从脱敏流量补充错字、缺项和长尾
模型升级后退化 提示行为发生变化 锁定模型版本并运行回归
成本明显升高 示例过长或重复 压缩但保留关键结构,比较最小集合

如果主要问题是指令冲突、上下文污染或模型没有工具权限,继续加示例通常治标不治本。可使用提示词故障排查流程定位根因;完整的任务契约和版本管理见Prompt Engineering 指南

生产上线清单

  1. 任务、标签、schema、拒答和升级规则写成可测试契约。
  2. 所有示例都有稳定 ID、来源、审核记录和版本。
  3. 示例库与保留测试集严格隔离,避免数据泄漏。
  4. 比较 Zero-shot、固定 Few-shot 与动态方案,而非默认示例越多越好。
  5. 测试多种顺序、模型版本、温度和真实边界输入。
  6. 对示例和真实输入做清晰分隔,不执行其中的外部指令。
  7. 上线记录实际选取的示例 ID、顺序、模型和提示版本。
  8. 质量下降时能回滚到上一组示例和模型配置。

常见问题

示例越多越好吗?

不是。更多示例增加覆盖,也占用上下文并可能引入冲突、顺序偏置和成本。应从最小集合开始,用消融实验决定保留哪些。

Few-shot 会让模型永久学会任务吗?

不会。它不更新模型权重,下一次请求若没有携带这些示例,模型不会因为本次提示而永久保存任务。

应该选最相似还是最多样的示例?

没有通用答案。相似性帮助贴近当前输入,多样性帮助覆盖标签与边界;实际可先相似召回,再加入覆盖配额和质量过滤,并与固定基线比较。

能把用户好评的输出自动加入示例库吗?

不建议直接加入。用户反馈不等于事实或标签正确;必须脱敏、复核、去除注入内容并记录来源后,才能进入白名单。

编辑复核与纠错记录

本文由兰塞 AI 编辑流程于 2026 年 7 月 18 日复核。旧稿中的拟人化机理、虚构准确率/解决率、规则必然优于示例及强迫展示隐藏思维链等表述已删除;新版依据 GPT-3、示例选择、演示作用与顺序敏感性研究,以及 OpenAI、Anthropic 当前提示文档重建示例选择和评测流程。本站的来源、更新与纠错原则见关于本站与编辑规范