上下文里的示例变成数据:小心少样本污染

人工智能 · 2026-10-07

示例会被模型当成可用素材。本文给出四个防护手段(显式标记、内容中立、顺序、后处理校验)、最容易污染的四种情形、与拒答的关系与验证方法。


示例放进上下文,就变成了"可变数据"

提示词里的示例(few-shot ✔)本意是"教格式" ✔,但它同时会被模型当成**可用素材** ✗:

如果示例里写了"北京 25℃" ✔,用户问上海天气时,模型有可能把示例里的数字搬出来 ✔ ——

这就是**示例污染** ✔。

**根因**:示例与真实数据在上下文里**长得一样** ✗ —— 模型无法区分"这是示例"与"这是本次数据" ✔。

一、四个防护手段

1. **显式标记** ✔:示例放在专门的区域并加标记(例如包在 `<examples>` 里 ✔),

并在指令里写明"示例仅用于说明格式,**不得引用其内容**" ✔;

2. **示例内容中立** ✔:用无意义的占位值(`<城市A> 25℃` ✔)而不是真实城市 ✔;

若必须用真实的,选一个**与本次任务无关**的领域 ✔;

3. **示例放前面、数据放后面** ✔(顺序也能减少混用 ✔ —— 与"稳定在前"的前缀缓存原则一致 ✔);

4. **后处理校验** ✔:检查答案里是否出现了"只在示例中出现过"的实体或数字 ✔ → 命中就报警或重跑 ✔。

第 4 条最关键 ✗:它是**可自动检查**的 ✔(把示例里的数字/专名做成黑名单 ✔)。

二、什么情况下最容易污染

  • 示例与任务**同领域** ✔(问了同一个人、同一个表 ✔);
  • 示例里的**数字/日期**很显眼 ✔(模型喜欢抄具体值 ✔);
  • 示例**很多** ✔(模型更倾向"照着示例填" ✔);
  • 输入**信息不足**时 ✔(模型会去找可用的东西填 ✔ —— 这也是它为什么该拒答 ✔)。
  • 三、与"该拒答"的关系

    污染常常**伪装成成功** ✗:答案格式漂亮、数字具体 ✔,但数字来自示例 ✔。

    所以评测里要专门加一类样本 ✔:**输入信息不足** ✔ → 期望"明确说不知道" ✔

    (见拒答与澄清那篇 ✔)。

    四、怎么验证

    ```

    ① 造 10 个"输入不足"的样本 → 看是否编造(应拒答 ✔)

    ② 检查答案中是否出现示例独有值(自动 ✔)

    ③ 对照组:把示例去掉再跑同一批 → 若答案反而更准,说明示例在污染 ✔

    ```

    一条判据

    > 把示例里的**所有具体值**列成黑名单 ✔,跑一遍评测 ✔ —— 答案里出现了几个 ✔?

    > 出现 ≥1 个,就说明示例没有被当成"只能看不能抄"的东西 ✗。

    想要你的品牌在AI回答里被推荐?

    免费诊断 →