跳转到主要内容

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

阅读需 2 分钟Tian PanTian Pan

一名 PM 用英文写了一份功能规范 (feature spec)。一名工程师将其翻译成带有惯用 LLM 模式的系统提示词 (system prompt) —— 思维链 (CoT) 脚手架、输出格式强制,以及一些涵盖规范中从未提到的失败模式的避险条款。一位评估 (eval) 作者打开同一份规范,冷读一遍,并根据自己的理解编写 JSON 测试用例。三周后,这三个产物各不相同,没人能说清楚一个回归到底是提示词的 bug、规范与实现的差异,还是从第一天就写错的评估。

这就是规范翻译税 (specification translation tax)。传统软件也有这种问题 —— PRD 与代码之间、代码与测试之间的差距 —— 但编译器和类型系统缩小了这种差距。AI 功能没有这种兜底保障。提示词是系统实际阅读的文档。评估是没人签署的合同。规范是没人执行的意图描述。每一项都是将同一意图翻译成不同的媒介,如果没有双向的一致性,行为就会通过那个最容易编辑的产物泄露进来。

三个产物,三个编辑者,没有权威源

结构性问题在于所有权。提示词处于产品意图、法律解释和技术执行的交汇点 —— 现有的角色中没有一个能自然地拥有它们。PM 拥有规范,因为是他们写的。工程师拥有提示词,因为是他们发布的。评估作者 —— 有时是第三个人,有时是戴着不同帽子的同一个工程师 —— 拥有测试套件,因为是他们构建了框架。他们中没有人真正拥有这三者之间的 共识 (agreement)

在健康的传统系统中,规范描述意图,代码实现意图,测试验证实现。流程是单向的:规范 → 代码 → 测试。当测试失败时,你会先看代码,因为规范很少是开始调试行为的有意义的起点。审阅者通过阅读与关联工单的差异 (diff) 来发现 PR 中的规范/代码偏离。

在 LLM 功能中,关系是三角形且循环的。提示词编码了规范未指定的行为(因为避险条款在提示词工程中浮现)。评估验证了提示词并未真正承诺的行为(因为评估作者将他们对规范的理解投射到了测试用例上)。规范描述了提示词和评估都未反映的意图(因为在提示词和评估演进时,规范从未更新)。这三者都是动态文档。没有一个是权威的。当它们不一致时,没有编译器报错 —— 只有未来没人能归因的回归。

我最近交流过的一个团队描述了正是这种失败:在一次提示词编辑后,一个评估开始失败,事后分析花了三天时间,因为团队必须从头开始重新推导 预期 行为是什么 —— 规范是 18 个月前的,提示词已经吸收了打了几十个零散的补丁。修复方案不是代码更改,而是一次会议。

偏离是如何积累的

提示词比规范偏离得更快,因为它们的编辑成本更低。工程师注意到模型在下游解析器预期纯文本时返回了 markdown —— 他们在系统提示词中加入了“仅以纯文本响应”。更改发布了。规范没有提到输出格式,因为最初的 PM 没考虑到。评估没有发现这一变化,因为测试用例是在模型仍返回 markdown 时构建的,且评估在比较前对格式进行了归一化。六个月后,一名新工程师看到“仅以纯文本响应”这一行,认为它是多余的指令并将其删除。下游解析器在生产环境中崩溃。这是谁的错?

评估的偏离方向相反 —— 它们更难编辑,因此往往编码了对正确性的 理解。当行为发生变化(有意的)时,评估被更新以匹配新行为,但断言通常是被放宽而不是重写 —— “回复应提到用户名”变成了“回复应与用户相关”,因为评估作者找到了让失败测试通过的快速方法。合同被无声地削弱了。规范、提示词和评估现在描述的是三种不同的东西,而评估描述的是最宽松的那种。

规范偏离最慢,因为上线后没人读。规范是在行为存在之前编写的产物。一旦功能发布,在大多数团队的工作模式中,规范的任务就完成了。PM 转向下一个功能。工程师再也不会打开它。评估作者在构建测试用例时参考过一次,之后再也没看过。规范钙化成了遗留文档,关于功能 应该 做什么的权威理解迁移成了团队内部的零散知识 —— 通常存在于发布该功能的工程师脑中,而他通常会在 18 个月内离开团队。

规范鸿沟 (The Gulf of Specification) —— 即我们希望 LLM 做什么与我们的提示词实际指示它做什么之间的差距 —— 存在于这条链条的每一步,每一次翻译都在扩大它。未详细说明的提示词迫使模型猜测意图,这导致输出不一致,进而导致评估试图编码模型碰巧做的任何事情,这便成了新的事实规范。系统会向最容易查询的产物优化,而那几乎永远不会是 PM 写的文档。

以规范作为唯一事实来源的真正要求

规范驱动开发(Spec-driven development)作为一种趋势,其诊断是正确的:规范必须是唯一事实来源,而不是代码。但仅仅移动事实来源并没有帮助,除非其他产物是从这个权威来源“生成”或“对照检查”的。如果规范存在于一份单独的文档中,以不同的频率进行编辑,且与 Prompt 和 Eval 之间没有强制的一致性,那么它只是另一种会产生漂移的翻译。

会员专享

余下内容仅对会员开放。

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

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

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

参考资料

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

阅读需 11 分钟

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

当提示词工程师将精心挑选的评估示例重新用作 Few-shot 演示时,一种团队级的数据泄漏正潜伏在指标不断攀升的评估仪表盘背后。本文将探讨为什么这种污染是隐形的,真正的独立性究竟需要什么,以及谁必须被赋予说“不”的权力。

insider
ai-engineering
阅读需 8 分钟

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

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

insider
evals
阅读需 9 分钟

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

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

insider
ai-engineering
阅读需 9 分钟

非对称评估经济学:为什么一个测试用例的成本比它测试的功能还要高

单个评估用例所消耗的工程精力通常比其测试的功能还要多。本文探讨了为什么团队在评估上投入不足,以及为什么从资本支出(Capex)的角度来看待这个问题能解决这一困境。

insider
evals
阅读需 11 分钟

快照评估衰减:当绿色的 CI 不再意味着你的产品仍然可用

一个运行了六个月的绿色评估套件可能正在用昨天的现实测试昨天的产品 —— 本文将探讨快照评估衰减是如何在众目睽睽之下隐藏的,以及如何保持评估集的生命力。

insider
evals