跳转到主要内容

那些被你的提示词工程师转变为生产环境 Few-Shot 示例的评估集

阅读需 1 分钟Tian PanTian Pan

评估仪表盘连续三个迭代(sprints)都在攀升。困难切片的质量提升了 6 个百分点,回归切片提升了 9 个百分点,而在支持团队根据上季度最糟糕的工单亲手整理的切片上,质量提升了 12 个百分点。团队据此发布了模型升级。两天后,一位客户提出了一个与评估集中的任何内容都不沾边的问题,结果得到的答案比六个月前还要糟糕。

一旦有人想到进行排查,原因很快就浮出水面了。提示词工程师(prompt engineers)一直与评估团队在同一个代码仓库中工作。他们发现了那些精心策划的示例——这些示例来之不易,有的甚至是某人为了一个理想答案的措辞争论了一个小时才定下来的。在几个迭代中,他们把其中最有代表性的示例以 few-shot 演示的形式直接复制到了生产环境的系统提示词(system prompt)中。仪表盘持续攀升,是因为模型在推理时处理的正是它曾经逐字见过的输入。没有人指出这个问题。没有人负责划定“用于衡量质量的示例”与“用于发布到提示词中的示例”之间的界限。两个团队都准确地完成了他们被雇佣来做的工作。

这不是一个关于疏忽大意的故事。这是一个关于团队级数据泄露的故事,任何一个个人贡献者都无法意识到这是一次泄露,因为只有当你从整体视角俯瞰整个系统时,泄露才存在。评估团队没有将他们的示例放入生产环境。提示词工程团队也没有破坏评估集。代码库策略没有规定“这些示例是神圣不可侵犯的”。CI 也没有检查系统提示词与评估输入之间是否存在子字符串重叠。泄露的原因在于,没人要求去划定那道原本就不存在的边界。

为什么“最佳现有示例”反而是最错误的材料

这是一个令人不安的结构性事实。在代码库的文件层面上,一个优秀的评估团队的工作产出与一个优秀的提示词工程团队的工作产出看起来完全一样。两者都是精心挑选的“输入-输出”对集合,其中输出是你的产品希望模型生成的答案。评估团队整理它们是为了在模型最难处理的已知失败模式上对其进行评分。提示词工程团队整理它们是为了演示他们希望模型模仿的行为。形式相同,目的迥异。

因此,当提示词工程师去寻找“能体现我们在那些反复出错的案例中表现出色的高质量示例”时(这正是他们的职责所在),而全公司最高质量的示例恰好就在评估团队的共享文件夹里,接下来发生的事情并没有违反任何规则。这是一个称职工程师的理性行为,因为没有人告诉过他这些示例是具有“放射性”的。评估团队整理的案例,从定义上讲,就是模型以前失败过的案例。当然,它们是最好的教学材料。但这也就是为什么它们也是最差的教学材料:如果你把它们放进提示词里,你就等于是训练你的评估框架在进行开卷考试。

关于基准测试污染(benchmark contamination)的文献多年来一直对此有记录,但那是针对预训练数据层面的。最近关于大语言模型(LLM)评估中数据污染的研究发现,在常用基准测试中,污染水平高达 45%,而接触评估内容会导致原本 5–15% 的绝对准确率下降在核心指标中消失。较少被讨论的是,同样现象在短短几个迭代中,就在单个产品团队的工作流程中重演了,而污染载体不是训练过程,而是系统提示词。

其机制是相同的。模型被要求在已经向其展示过正确答案的输入上演示行为。这种展示发生在推理阶段而不是训练阶段,并不会改变指标所衡量的本质。它衡量的是记忆能力,而不是泛化能力,而你的仪表盘无法区分这两者,因为仪表盘本身就是为了衡量这组特定输入的质量而构建的。

失败模式隐藏在真实的提升曲线中

评估集到 few-shot 的污染之所以特别具有误导性,是因为仪表盘看起来并没有坏。它看起来非常棒。它呈现出的正是那种正在努力工作的团队希望看到的仪表盘样式。在某些单项示例的分数上确实存在真实的改进,因为 few-shot 演示确实能改善模型在类似输入下的行为。污染并没有使曲线变平,而是让曲线弯向了错误的方向。

你从指标内部无法看到的是两组输入群体之间的分叉。在被污染的群体中——即任何与 few-shot 演示足够相似、以至于模型可以通过模式匹配找到答案的内容——分数在攀升。而在其余的生产流量中(即评估集本应代表的部分),分数保持不变甚至略有下降,因为现在的提示词变得更长、更杂乱,并且偏向于一种可能无法泛化的狭隘措辞风格。你的整体指标将这些混合在一起进行平均,并受评估集构成比例的影响,而评估集在这些迭代中已经被透明地优化过了。

越来越多研究关注模型在见过的数据和未见过的数据上表现差异。关于“记忆-泛化指数”(Memorization Generalization Index)的研究指出,如果没有一个能够量化提升中有多少属于记忆的程序,你就不能信任单一的综合准确率数字。在团队级的 few-shot 泄露中,同样的原则也适用:综合指标掩盖了两个群体,而生产环境中真正重要的群体,正是那些没有出现在 few-shot 中的群体。

独立性到底意味着什么

会员专享

余下内容仅对会员开放。

会员可读完整内容 —— 每一个公开发布的观点背后,那些框架、决策与推理的全貌。

  • 完整文章,包含未公开存档的部分
  • 可落地的工作框架,附带权衡与决策依据
  • 新文章抢先看,先于公开发布

随时取消 · 一次订阅,畅读全部

参考资料

保持联系,关注我获取更多内容

阅读需 8 分钟

那些悄然成为你唯一评测集阅读者的提示工程师

你的评测集只是一个文件,而使其具备可读性的判断力却存在于某个工程师的脑海中 —— 本文将探讨这种巴士系数如何在他们离职后才显现出来。

insider
evals
阅读需 9 分钟

你的 PRD 只是一个未经测试的 Prompt —— 直到你对其进行评测

AI 功能的 PRD 本质上是一个未经编译的系统提示词。在验收前进行评测,能让定义不明确的问题在上线前就暴露出来。

insider
ai-engineering
阅读需 11 分钟

规范翻译税:当规范、提示词和评估发生漂移时

规范、提示词和评估是同一意图在不同媒介下的三种翻译。如果没有强制的一致性,它们就会产生漂移。一年后,没有人能分清某个回归到底是提示词的 Bug、规范的缺失,还是从第一天起就错误的评估。

insider
ai-engineering
阅读需 12 分钟

30 天 Prompt 见习计划:当“阅读代码”失效时,如何入职工程师

一段 200 行的系统 Prompt 没有函数签名,没有测试,且 diff 历史完全没有说明为什么每一行代码会出现在那里。这份为期 30 天的课程——涵盖失败案例集、消融实验、PR 重构和受控编辑——旨在教导新工程师通过询问其行为来“阅读”一个 Prompt。

insider
prompt-engineering
阅读需 8 分钟

无法回滚的功能开关:提示词

提示词的修改会瞬间改变所有用户的生产环境行为,既没有金丝雀发布,也没有有效的回滚机制。本文将探讨提示词和模型版本固定为何脱离了发布规范,以及将其重新纳入规范的五个原语。

insider
llmops