few-shot 例子质量参差,把输出拉下来了

5 个 few-shot 例子,2 个很好、3 个一般。模型按平均靠拢,倒向那 3 个一般的。质量方差为什么伤、怎么挑例子。

你给了 5 个 few-shot 例子教模型输出风格。2 个很好——精准、具体、正是你想要的语气。3 个是从旧草稿复制来的,一般——啰嗦、泛泛、调子稍偏。你期望模型从那 2 个好的学。它没有。它输出的是 5 个的平均,偏向那 3 个一般的多数。更糟的——它学到了那 3 个一般例子的坏习惯,又忽略了那 2 个好例子的亮点。

模型不会给你的例子打分。它把 prompt 里每个例子当同等权威。质量混杂的 few-shot 是 “我给了例子它还是不会” 最常见的原因——例子不全都好。

常见原因

1. 老例子从没重新评估过

3 个月前你刚摸索任务时加的例子。这期间你对”好输出”的标准提高了。老例子已经不代表当前 bar。

怎么判断:把每个例子当今天的输出读。今天能直接发吗?不行就是在拖模型。

2. 长度方差教会”不一致”

例 1 80 词、例 2 200 词、例 3 50 词。模型推断长度是变量,输出也变长——即使你想要稳定长度。

怎么判断:数每个例子的词数。max/min > 2x 就是不一致。

3. 语气在例子间漂

例 1 正式、例 2 随意、例 3 带 emoji。模型挑一个(通常最近的)或混合——都不是你要的。

怎么判断:例子连读一遍,自己脑子里 code-switch 了——模型也会。

4. 有一个例子带细微错误

5 个例子里有一个有 typo、事实错、或格式 glitch。模型学会复制这个错误类别。

怎么判断:每个例子当成最终输出审一遍。源里的错会下毒。

5. 例子全是边缘 case、不是常见 case

你挑了刁钻例子去 stress test prompt。现在模型以为每个输入都是 edge case,常规输入被过度处理。

怎么判断:例子里 80% routine 还是 80% 怪输入?应该反映真实分布。

6. 输出结构在例子间变

例 1 用 bullet、例 2 用编号、例 3 用 prose。模型在 format 间随机切。

怎么判断:例子之间输出结构不同。挑一个。

7. 例子来自别的任务类型

prompt 现在用在新场景,例子还是旧场景的。模型带过来不适用的模式。

怎么判断:例子的输入分布跟当前不符。“跑题”感。

最短修复路径

第 1 步:审例子、重打分

对每个例子按 1-5 分打:

  • 匹配当前输出 bar
  • 长度跟目标一致
  • 语气跟目标一致
  • 没错误
  • 结构跟目标 format 一致

任一维度低于 4 的踢掉。

第 2 步:踢掉的换成精选的

2 个顶级例子比 5 个参差例子更好。模型从小而一致的集合学得比从大而杂的快。

Input: [routine case]
Output: [exemplary output]

Input: [common variation]
Output: [exemplary output]

Input: [tricky case worth covering]
Output: [exemplary output]

3 个例子常常就够。

第 3 步:长度归一

目标输出 ~100 词时,每个例子输出 80-120 词。不要 30 词的紧挨着 200 词的。

第 4 步:结构归一

挑一个输出格式,所有例子统一。bullets、numbered list、prose、JSON 都行,混着用会教不一致。

第 5 步:按相似度排例子顺序

recency bias 真实存在——最近的例子塑形最强。把输入形状最接近真实输入的那个例子放最后。

Examples 1-2: general case
Example 3 (放最后): 输入跟 live input 最接近的例子
---
Live input: [user's real input]

第 6 步:在每个例子上加一行说明展示了什么

有些团队在每个例子前加 1 行注释:

Example 1 (concise, formal):
Input: ...
Output: ...

Example 2 (handles missing field):
Input: ...
Output: ...

帮模型理解从每个例子学哪个维度。

第 7 步:A/B 测例子集合

用集合 A(5 个混杂)生 20 条输出、用集合 B(3 个精选)生 20 条。盲打分。精选集合通常赢。

哪些情况可能不是你操作错了

有些任务方差本来就大——开放创作里跨风格的例子是故意的。那种场景里”质量混杂”是 OK 的、只要是有意为之。bug 是你没打算让它方差。

容易误判的情况

“模型就是不擅长这个任务”。多数时候模型没问题、是例子噪声大。在判模型差之前先 curate。

预防建议

  • 季度审 few-shot 例子,过时的踢或更新。
  • 3 个高质量 > 5 个混杂。
  • 例子间长度、语气、结构归一。
  • 例子覆盖不同场景时每个加一行注释。
  • 上线新例子集合前 A/B 测,看 win rate。
  • 把例子池当 production code——版本控制 + code review。

FAQ

  • few-shot 例子是真实输出还是合成的? 真实质量才是关键;合成的只要达到目标也一样有效。
  • 例子顺序重要吗? 重要——recency bias 让最后一个影响最大。最好 / 最相关的放最后。

相关阅读

标签: #Prompt 工程 #排查 #llm-output #few-shot #examples #in-context-learning