Few-shot 为什么可能降低效果,示例应如何选择和排列?

考查重点:示例诱导与分布覆盖。错例、无关例或单一标签会诱导错误规律;选正确且覆盖边界的示例,用固定集对照数量和顺序影响

本题目录

参考答案

核心回答

Few-shot 是在提示词里用输入、输出示例演示任务,不更新模型参数。它可能帮助模型理解分类边界和格式,也可能让模型模仿错误规律:示例标注不准、与当前任务不相关、标签或表达过于单一、格式互相冲突,都会降低效果;过多示例还会挤占当前输入与必要资料的上下文。

示例应先保证正确,再兼顾任务相关性、容易混淆的边界和覆盖,去掉高度重复项。不能只按向量相似度取最近几条,也不能默认示例越多越好。

排列上没有对所有模型都有效的固定顺序。可以比较固定顺序、相关性顺序和多种打乱排列,检查是否出现标签或末尾示例偏置。在相同模型和任务集上,与 Zero-shot 比较准确率、各类别错误及输入成本,才能确定这批示例是否值得保留。

Few-shot 为什么会把模型带偏

示例不仅展示格式,还在暗示“哪些输入应该得到什么输出”。如果指令说输出类别编号,示例却夹带解释,模型可能照着示例输出;如果旧业务规则与新规则不同,模型也可能沿用示例中的旧判断。

即使每条示例单独正确,组合后也可能有问题。例如意图识别只展示带有“退款”一词的售后样本,模型容易把关键词当作分类依据;遇到“我不退款了,只想查订单进度”时,就可能忽略否定和真正诉求。示例全是单句、当前输入却是多轮省略表达,也属于任务分布不匹配。

此外,模型可能对示例位置和标签排列敏感。靠近当前问题的样本有时影响较大,但不能据此推出“最后放哪类就一定更好”。早期 GPT 系列上的研究已展示明显的排列差异;具体程度和最优排列仍需在当前模型、模板与任务上测量。

示例怎样选择

先把标签含义、输出结构和歧义处理规则写清楚,再挑能解释这些规则的示例。

以订单意图识别为参考,可以放常见查询、明确取消和售后请求,再补“否定取消、改为查询”这类易混淆表达。若输入缺少必要信息,应演示怎样标记待澄清,而不是为了给出标签强行猜测。示例要与业务实际允许的意图体系一致。

选择时重点看:

  • 正确性与一致性:输入信息足够,标签和业务规则一致;多轮样本包含判断所需历史,输出符合当前格式。
  • 相关性与边界:与当前任务的语义和操作类型相关,也能区分最容易误判的相邻类别。
  • 多样性与代表性:覆盖必要类别、表达和难度,避免多条近重复样本反复强化同一模式;类别覆盖不等于机械凑成等量。
  • 长度与成本:保留体现判断边界的信息,删掉无关背景,给当前输入和输出留出预算。

任务种类较多时,可以先从经过整理的示例库检索候选,再按任务适配、标签覆盖和重复程度选择。相似度是候选线索,不能替代正确性和分类边界检查。新增反馈样本也应先核对规则,避免把一次误判直接变成下一轮的示范。

数量和顺序怎样确定

先建立没有示例的基线,再逐步加入有明确作用的样本,观察新增示例是否改善对应错误。若只增加长度、改善格式却损害语义准确率,就需要更换或删除,而不是继续堆叠。

排列可以把“先展示通用情况,再展示容易混淆的边界”作为一个候选,也可以比较相关样本靠近当前问题的方案。关键是保持任务指令、示例和待处理输入的界限清楚,避免模型把示例内容当作当前事实。

测试顺序影响时,保持示例集合不变,只改变排列;测试选择策略时,保持模板与预算可比。固定示例标识和实际渲染后的 Prompt,才便于定位某次退化来自选错样本、顺序变化还是截断。

如果多种排列的表现差异很大,说明方案对示例组合较脆弱,可以检查标签定义与冲突样本、减少重复、调整模板,或更换模型后重新评测。对多种排列投票也可能有用,但会增加调用成本,需要单独比较收益。

怎样判断真的有效

用独立标注的任务集比较 Zero-shot、固定 Few-shot 和按需检索 Few-shot。意图识别除了总体准确率,还应看每类召回、混淆矩阵、歧义输入和分布变化下的表现,同时记录格式合规与 Token、延迟。

选择示例和顺序可以使用验证集,最终再用没有参与选择的测试集检查。不能把某个测试问题及答案直接放进它自己的示例,再把高分当作泛化改善。模型、标签体系或输入模板变更后,也要重新验证旧示例。

常见追问

最相似的示例为什么未必最好?

文本相似可能来自相同关键词,而关键否定、条件或用户目标不同;多条最近邻也可能全属同一类别。需要同时考虑边界区分和覆盖。

Few-shot 降效,是不是模型不适合用示例?

先检查样本质量、规则冲突、上下文截断和评测波动,再做数量与顺序对照。若当前模型用清晰指令已经足够,Zero-shot 也可以是更合适的方案。

示例一定要附完整推理吗?

不一定。分类和抽取通常先展示清晰的输入输出;需要解释关键判断时,可以保留简短、正确的依据。是否增加推导,要看模型和任务效果,避免冗长或错误过程成为新的模仿对象。

对应教程

  • 《提示词工程基础》:2.3 节介绍 Zero-shot 与 Few-shot,章末练习强调常见输入、边界输入与正确输出;本文补充示例检索、排列敏感性和独立对照方法。

参考资料

  • 国内:JavaGuide:Prompt Engineering:依据少样本学习与 Prompt 评测方法,说明正文中示例如何匹配任务格式,并通过固定变量检查增益。
  • 国内:zero2Agent:提示词工程:采用输入与理想输出配对及任务边界评估,说明正文中风格模仿为何不等于正确完成任务判断。
  • 国内:阿里云:使用 Prompt 样例库优化模型输出:借鉴样例检索、排序和注入机制及 Token 成本,说明正文中动态示例选择的实现和代价。
  • 国外:Anthropic:Prompting best practices:依据 Use examples effectively 的相关性、多样性与清晰结构要求,说明正文中如何避免示例诱发错误模式。
  • 国外:UCL:Fantastically Ordered Prompts:依据论文第 2 节的排列敏感性实验,说明正文中同一组示例换序为何可能改变结果;实验针对当时 GPT 模型与分类任务,最优顺序不能直接迁移。

相关面经

3 篇

米哈游

Agent 开发工程师
一面
查看原面经 →
Few-shot 示例为什么有时会让效果变差?如何选择和排列示例?

淘天

AI 应用 / Agent 开发
实习二面
查看原面经 →
这个意图识别你怎么理解的?few-shot具体考量?

米哈游

AI 应用 / Agent 开发
查看原面经 →
few-shot有没有用?

收录题集

3 个来源,共5 份题集

相关题目

4 题