工具教程 · 小互解读

Prompt 删了一句无关紧要的话,三天后发现输出内容变差了:提示词版本管理指南很重要

prompt 坏起来不报错、不告警、监控一切正常,只是悄悄变差;治法是一套 git 加一个脚本就能抄的四道关口
一分钟速览
  • 一条正在给用户干活的 prompt 被顺手删掉一句「废话」,上线后没有任何东西报警,三天后靠一张客服工单才暴露。
  • 1018 条打过分的 prompt 里,最差的一项是「有没有交代过遇到烂输入该怎么办」,均分只有 31.5 分,而它恰好是删改时最先被当成废话删掉的那部分。
  • 治法是四道关口,其中一道能在上线前把这类改动直接拦回去。不买工具的话,git 加一个打分脚本就够。
⚑ 主线来自 Reddit r/PromptEngineering 版的一篇方法帖。写帖的人同时是打分工具 PromptEval 的开发者,这层利益相关他在帖子里主动挑明了;文中 1018 条 prompt 的打分数据来自他自家平台,没有第三方复核。四步工作流本身不依赖任何产品。
问题 · 事故

删掉几句看着没用的话,上线后没有任何报警

有人在改一条正在给用户干活的 prompt。他看里面有几句话没什么用,就删掉了,顺带还省了几个 token。上线前顺手做的那种清理,谁都做过,不会多想一秒。上线之后,没报错,没告警,监控一切正常。三天后一张客服工单来了:用户拿到的回复含混、跑题,有时候还错得很自信。

这是 Reddit 的 r/PromptEngineering 版上一篇开发者复盘帖,讲的是他被这件事逼出来的一套 prompt 版本管理流程。只要你有 prompt 正在给用户干活,接了 API 的应用也好、每天自动跑的流水线也好,这就是你迟早会踩、而且踩了不知道的那个坑。

起因
看 prompt 里有几句话没什么用,删掉了(顺带省几个 token)
现象
没报错、没告警、测试通过;程序那边收到的是成功,日志扫一眼也正常
结果
三天后一张客服工单:回复含混、跑题,有时候还错得很自信
问题
那条 prompt 技术上「还在正常工作」,它只是工作得更差了,而整条管线没有任何一个环节吭声,直到一个真实用户被烦到愿意坐下来打字投诉

三天里,一条已经变差的 prompt 在服务真实流量,悄悄发出去一批更差的答案,中间信号是零。

问题 · 为什么没人发现

prompt 变差为什么不报警,眼睛也看不出来

同样是改坏了,代码和 prompt 的差别在于:坏了之后有没有人告诉你。

代码改坏了prompt 改坏了
当场发生什么抛异常、编译不过、一跑就崩照样返回一段像样的文本
程序收到什么一个失败一个正常结果
谁会告诉你测试、编译器、监控告警没有人
你什么时候知道当场三天后,靠用户投诉

差别的根子在于:prompt 是自然语言,你把它改得再残缺,模型也会尽力返回一串文本。它不报错,也不给任何失败信号。所以它不会突然坏掉,只会一次比一次差一点,直到「差一点点」攒够了,变成「客户开始察觉了」。

代码改坏了 当场抛异常 编译不过 · 一跑就崩 就地停下 prompt 改坏了 照样返回 · 照样通日志 一路绿灯 部署 日志正常 测试通过 第 3 天 · 一张客服工单
同一种「改坏了」,代码那条当场停在原地,prompt 那条一路绿灯跑到底,线的颜色在悄悄变浅,但沿途每一个检查点都显示正常。(本站示意图)

那上线前扫几个输出看看行不行?肉眼能抓住的只有显性错误:返回一串报错、格式整个乱掉、答非所问到一眼可见。质量滑坡抓不住,原因有两条,输出看上去仍然是一个正经答案,只是更差的那个;而你自己是带着预期去看的,知道这条 prompt 该说什么,读到的每句都往那个方向对号入座。真正的滑坡要等大量真实用户花式提问才露得出来,而那时候露出来的形式就是工单。

原因 · 数据

1018 条 prompt 打分,应付意外输入这项最低

这不是一个人手滑。1018 条 prompt 打过分之后,同一个毛病到处都是。打分满分 100,拆成四项看,这四项本身就是一份「一条 prompt 可能烂在哪」的清单:

这一项要求什么典型翻车
清晰度
Clarity
这个任务只有一种合理解读,模型不用猜动词含糊:「帮我处理一下」「改进一下这个」
具体度
Specificity
对输出的要求要能衡量,不能只给形容词,别让模型自己猜「什么算做完了」「写一段简洁的摘要」,而不是「用大白话写一段三句话的摘要」
结构
Structure
指令按逻辑顺序排:角色在前、背景第二、任务第三、格式最后格式要求埋在任务后面、角色压根没写、约束条件散落各处
健壮度
Robustness
对最可能出岔子的那几种情况,写死了该怎么办prompt 默认用户会给干净规整的输入,而真实用户什么都往里塞

四项里垫底的是最后一项,健壮度英文原词 Robustness。它问的是:这条 prompt 有没有交代过「遇到不正常的输入该怎么办」,用户没说清需求返回什么、输入是空的返回什么、格式完全不对返回什么。这几种情况要一个个点名写死动作,笼统一句「请妥善处理」不算。,也就是这条 prompt 有没有交代过「遇到不正常的输入该怎么办」。1018 条的均分只有 31.5 分。