跳到主要内容

提示词 Diff 隐藏了自身的爆炸半径

· 阅读需 10 分钟
Tian Pan
Software Engineer

一个 PR(合并请求)进入了你的评审队列。Diff 显示系统提示词(system prompt)中修改了三个词:Output strictly valid JSON 变成了 Always respond using clean, parseable JSON。这看起来就像是一次文案润色。你快速浏览了一下,CI 检查勾标是绿色的,于是你点击了批准。总耗时:90 秒。

六个小时后,下游解析器开始拒绝带有尾随逗号和缺失字段的响应。结构化输出的错误率从接近零飙升至两位数,一个创收工作流陷入停滞。Diff 中没有任何迹象预示到这一点。Diff 中也不 可能 预示到这一点,因为 Diff 衡量的是错误的东西。

这就是评审提示词变更的核心问题:提示词 Diff 的大小完全无法说明其影响范围的大小。三五个词的修改与三段话的重写都只是文本,而文本 Diff 以相同的视觉权重呈现它们,就像对待任何其他编辑一样。但提示词并不是 描述 行为的文本 —— 它是 导致 行为的文本,而一次编辑所产生的因果爆炸半径在你评审的产物中是不可见的。

行 Diff 是错误的衡量单位

代码评审的整个心理模型建立在一个可靠的假设之上:Diff 的大小与其实际影响大致相关。一行代码的改动通常是低风险的。一个 600 行的改动则需要仔细阅读。这种启发式方法已经深深植根于工程师分拣评审队列的方式中,以至于我们在不知不觉中应用它 —— 小 Diff 快速批准;大 Diff 安排时间。

这种启发式方法对代码有效,是因为代码是 局部的。当你将 x < 10 更改为 x <= 10 时,后果被限制在引用 x 的行内。你可以追踪调用图。你可以通过从变更处向外阅读直到触及稳定的边界,来推导爆炸半径。Diff 很小是因为影响很小,而这两者被语言本身的结构联系在一起。

提示词完全打破了这种联系。提示词是由模型整体解释的,模型会根据输入的每个 token 来调整输出的每个 token。这里没有调用图。没有你可以向外阅读的边界。在系统提示词顶部更改三个词,可能会改变模型衡量四段话之后指令的方式,因为模型不是在执行行 —— 它是在形成一个整体理解,而你的那三个词刚刚将这种理解推向了一个 Diff 无法显示的方向。

因此,当评审员看到一个微小的提示词 Diff 并应用“小 Diff 快速批准”的条件反射时,他们并不是在做一个经过校准的风险决策。他们是在应用一种针对不同介质训练出来的启发式方法,而在这个语境下,这种方法正产生积极的误导。Diff 虽小,风险却不然。

微小 Diff 带来的虚假安全感

危险之处不在于微小的提示词 Diff 具有风险,而在于它们 看起来 很安全。微小的 Diff 会让评审员产生一种特定的心理状态 —— “这显然没问题” —— 而这种信心是由渲染效果制造出来的,并非源于分析。

考虑一下那些在 Diff 中看起来微不足道、实则不然的编辑:

  • 重新排列 few-shot 示例。 你把示例三移到了示例一上面,因为这样读起来更通顺。Diff 显示两个块进行了对调。但模型存在位置偏见(position bias) —— 它们会过度权衡出现在提示词开头和结尾的内容 —— 因此你刚刚改变了模型将哪个示例视为规范模式。
  • 为了语气精简措辞。 你添加了“更有同理心且更具互动性”来软化助手的口吻。Diff 显示增加了一个子句。但同理心指令可能会悄悄地与安全指令产生冲突,而“互动性”可能会促使模型倾向于附和用户。你可能通过一次语气调整扩大了越狱攻击面。
  • 同义词替换。 “Strictly” 变成了 “clean and parseable”。“Must” 变成了 “should”。“Never” 变成了 “avoid”。在 Diff 中,每一个看起来都没什么区别。但每一个都将模型从硬约束推向了软偏好,而模型的合规率也随之波动。
  • 空格与格式。 关于提示词格式稳健性的研究表明,更换分隔符、更改缩进或修改章节标题的大小写,都可能导致同一任务的准确率波动好几个百分点。一个显示“仅更改了空格”的 Diff 实际上是在向你展示一个被标记为噪声的真实行为变化。

在所有这些情况下,Diff 对 文本 都是诚实的,而对 行为 却是沉默的。评审员的信心随着屏幕上变化的减少而增加。而实际的风险则随着屏幕从未显示的东西而增加。

这种情况的发生还有一个更深层的原因。自然语言没有类型系统。当你修改代码时,编译器和测试套件会在人类介入之前捕获一整类错误。当你修改提示词时,没有编译器。“语法”永远是有效的,因为任何英语句子都是有效的英语。每一次提示词编辑都能通过“类型检查”。这正是为什么 Diff 看起来很干净 —— 也正是为什么干净的外表毫无意义。

加载中…
References:Let's stay in touch and Follow me for more thoughts and updates