模型迭代了,你的AI功能却在退步:一份Prompt回归防线搭建指南

📅 2026/4/26 ✍️ 小文 📖 约 1 分钟

模型厂商每月更新,你的提示词和评测集却停在半年前。本文讲清AI功能上线后为什么会悄悄退化,以及如何用黄金测试集、双跑对比、语义断言搭起一套轻量的回归防线。

有团队发现一个奇怪现象:客服AI的回答质量,三个月里慢慢变差了。没有人改过程序,没有人改过提示词,模型版本号也”只是小更新”。

这就是AI系统的隐形债务。传统软件不改代码行为就不变,AI系统不改任何东西,行为也在变——模型在更新,上游返回的数据在变,用户的提问分布也在变。

上线不是终点,是回归测试的起点。但AI功能的回归测试和单元测试完全不是一回事,得专门搭。

一、AI功能退化的三个来源

1. 模型静默更新

厂商推新版本,通常”整体指标更好”。但整体更好不等于你的场景更好——某些细分能力(比如特定格式遵从、特定语言表达、长文档里的细节保持)可能悄悄变差。

多数厂商的模型别名会自动指向最新版。你没有升级,是升级找上了你。

2. 输入分布漂移

用户会用你没预料到的方式提问。促销期会有大量活动咨询,新品上线会有大量新名词,这些都不在原设计的覆盖范围内。

更隐蔽的是上游数据变化:知识库更新了文档格式,检索出来的片段结构变了,模型的输入就变了。

3. 提示词腐化

改动通常很小心,但累积起来会出事:加一句话让格式更严格,加一句话修复某个边界案例,再删一句”没用的”。三个月后提示词变成两千字,任何一处删除都可能是别人加的那句”救命句”。

最糟糕的是没有记录。 你不知道哪句话是为了修什么问题加的。

二、黄金测试集:回归的锚

回归测试的前提,是有一套稳定、有代表性、结果已知的测试集。AI场景下这叫黄金测试集(golden set)。

怎么建

不用一开始就搞几百条。从线上真实请求里抽,是最有效的方式。

推荐结构:

  • 20条核心路径:最常被问的问题类型,代表主业务
  • 10条边界案例:曾经出错、曾引发投诉的输入
  • 10条对抗输入:试图诱导越界、注入指令、要求超纲回答的
  • 5条极端输入:超长、空、乱码、多语言混排
  • 5条格式验证:专门测输出结构是否合法

合计50条,一天能建完。

关键原则

  • 每条都要有”期望结果”,但不必是唯一答案。 用评分点或断言描述,而不是逐字比对。
  • 来源要记来源。 每条标注来自哪个场景、哪个用户反馈,将来知道为什么它在里面。
  • 定期换血。 每季度用新的线上样本替换5~10条,防止测试集变成”过时的题库”。

三、三条断言策略

策略一:结构化断言(最可靠)

能用程序判断的,绝不交给模型判断。

  • 输出是不是合法JSON?字段齐不齐?
  • 数值是否在合理区间?
  • 有没有出现禁止词、有没有泄露其他用户信息?
  • 长度是否超标?

这类断言成本极低、判断绝对可靠,应该覆盖尽可能多的测试点。 很多”质量问题”其实就是格式问题。

策略二:语义断言(用模型当裁判)

开放式回答没法用程序判,就用另一个模型打分。但要避免”让模型判自己的答案”。

做法:

  • 使用不同的模型做裁判,最好换厂商
  • 给出明确的评分标准,每个维度0~5分并说明什么算5分
  • 要求输出理由,理由用来人工抽检裁判是否靠谱
  • 固定裁判模型版本,否则裁判标准也在漂移

要注意裁判模型本身有偏好:通常偏爱更长的回答、更正式的语气、更”全面”的表述。评分前先跑一批已知好答案和坏答案,看裁判能不能区分,区分不了就先修评分标准。

策略三:人工抽检(不可省略)

每个月抽20条输出人工看一遍。不是全量评估,是校准——看模型裁判是否和人的判断一致。

人工抽检的作用不是发现单条错误,而是发现”评分体系已经跟不上产品要求了”。

四、双跑对比:升级模型前的必做动作

模型要升级(或你被迫升级)时,别直接切换。用同一套黄金测试集,旧模型跑一遍、新模型跑一遍,逐条对比。

对比时看四个数:

指标含义怎么判断
平均分变化整体好坏涨了不代表没事
最差5条的变化长尾表现下滑就要警惕
格式违规率结构遵从必须为0
评分分歧率两个模型差异多大差异大的条目人工看

最容易被忽略的是”最差5条”。平均分涨了0.3分,但如果你最依赖的那个边界场景从”可用”变成”不可用”,这次升级就是失败的。

还有一件事:新旧模型都保存完整输出。过几周线上出现问题时,这份历史输出是唯一能还原现场的线索。

五、把它接进CI

回归测试不接自动化,就会变成”想起来才跑”。

最简版本:

  1. 黄金测试集存成代码文件,纳入版本管理
  2. 提示词改动必须触发回归——这是最重要的触发条件
  3. 模型版本变动也触发(定期跑一次兜底)
  4. 低于阈值就阻断合并

阈值怎么定:不要求全通过。黄金集里有几条永远过不了很正常。设”不得比上次基线更差”作为红线,比设”必须90分”更实际。

运行成本要控制:50条 × 每次跑,如果用中档模型,一次约几块钱。每周跑几次完全可接受。如果需要跑几次才能确定结果,那说明系统本身不稳定,这也是重要信息。

六、常见错误

  • 测试集只有简单问题:全部通过,感觉良好,线上照样出事。
  • 期望答案写得太死:AI换了个说法就判失败,天天红不过,最后大家就不看了。
  • 用写提示词的模型做裁判:它和生成模型有同样的偏见,看不出问题。
  • 只测质量不测延迟:新版质量涨了,但延迟从1.5秒变4秒,用户跑了。
  • 改了提示词不更新测试集:新的需求变更是新增场景,测试集不动就等于没覆盖。

七、最小可行版本

如果你现在什么都没有,按这个顺序做:

  1. 今天:从线上日志里抽20条真实问题,人工写下期望结果(哪怕只是打勾标注”这样算好”)
  2. 本周:写个脚本,跑这20条,输出结构化断言结果
  3. 下周:把脚本接进CI,提示词文件改动时自动跑
  4. 下个月:加语义断言和一个人工抽检的节奏

20条的测试集,比没有强100倍。 完美的评测体系永远建不完,够用的今天就能有。

结语

AI功能的可靠性不是靠”选对模型”保证的,是靠持续验证保证的。

模型会变,用户会变,需求会变。唯一稳定的东西,是你手里那套知道”什么叫做对”的测试集。

它是你在这个快速变化的领域里,唯一的地基。

📤 分享到