改一行 Prompt 就敢直接上线,是 LLM 应用团队最常见的事故源。传统代码有单元测试兜底,Prompt 的「测试」是什么?答案是评估集(Eval Set)工程------大部分团队有评估集,但做得不对。
评估集的三个常见死法
1. 一次性评估集 :项目初期花一周精心做了 50 条,之后再没更新。三个月后模型换了三轮、需求改了两版,评估集测的还是上个版本的产品。评估集是活的资产,要随需求变更同步进化。
2. 全能型评估集 :一套 case 测所有能力。正确做法是按能力维度拆分:格式遵从 20 条、边界输入 20 条、领域知识 20 条、对抗样本 10 条------分维度看分,才知道改这行 Prompt 动了哪块。
3. 只有正例 :全是「标准输入→标准输出」。负例(该拒绝的、该转人工的、该报错的)缺失,意味着你永远测不出「乱答」的问题。负例占比建议 20~30%。
语义断言:打破「标准答案」迷信
很多场景没有唯一标准答案(生成类任务),逐字比对必挂。语义断言是解法:不比对文本,比对「意思是否达标」------用一个小模型当裁判,按维度打分(准确性/完整性/格式),或者用规则断言(包含关键实体、不含禁词、长度区间)。
实践配比:规则断言管硬约束 (格式/禁词/必含要素,快且稳),模型裁判管软质量(语义达标度),人工抽检管最终校准------三层各司其职。
接入流程:评估左移
评估集最大的价值在「改之前」而不是「改之后」:每次改 Prompt/换模型/调参数,先跑评估集,分维度看分数变化------涨的那块是不是你想要的?跌的那块能不能接受?绿灯才上线。CI 化之后,改 Prompt 的心理成本从「祈祷」变成「看报表」。
结语
Prompt 是没有编译器检查的代码,评估集是它唯一的测试覆盖。没有评估集的 LLM 应用,等于裸奔着改生产代码------从今天起,把每次线上事故的 case 加进评估集,三个月后你会感谢这个习惯。