每个在没有评估(evals)的情况下发布 AI 功能的团队都会对自己讲同样的故事:我们会以后再添加衡量标准,等到找到产品与市场契合点(PMF)之后,等到提示词(prompt)稳定之后,等到下一次发布之后。六个月后,提示词已经被四位工程师和两名产品经理修改过,其行为支撑着三个客户集成,团队发现“以后添加评估”意味着要从从未为此目的结构化过的生产日志中重建意图。本应开发新功能的季度变成了考古季度。
一个有用的基准成本比大多数团队认为的要低:三十到五十个精心挑选的输入示例,并带有预期的行为属性(不是精确的字符串匹配——而是“拒绝提供医疗建议”、“在讨论价格时包含免责声明”、“提取三个必填字段”);一个针对所有示例运行当前提示词并将输出与最后一个已知良好版本进行对比的脚本;一个在修改提示词的 PR 上运行此脚本的 CI 钩子。仅此而已。这个基准可以捕捉到大部分本来会发布的回归,并创建了未来评估可以扩展的产物。
团队甚至跳过这一点的原因是文化上的,而非技术上的。早期 AI 工作感觉像是在做原型,而评估感觉像是生产纪律。但其不对称性在于,原型代码很容易丢弃,而提示词行为——一旦用户依赖它——就不是。生产中的提示词就是一份合同,而没有测试的合同是一项随使用量增加而增长的负债。
第一项是“发布前评测”门槛:如果没有经过整理的评测集(eval set)并达到最低通过阈值,任何 AI 功能都不得上线。这项规定颇具争议,因为它会推迟发布,但推迟正是其目的所在。一个无法定义何为“正常工作”的发布,注定要在以后压力巨大的情况下被迫定义它。执行这一门槛的团队会发现,定义评测集只需要两到三天,却能节省数个季度的补救工作。
第二项是将评测债视为一项可追踪的工程指标。展示未修复 Bug、未处理事故和过期 TLS 证书的同一个仪表板,也应该显示评测覆盖率陈旧或缺失的 AI 功能。让批准路线图的领导层看到这些债务,能将对话从“我们该不该增加评测?”转变为“本季度我们要消除哪些债务?”
陷阱不在于团队不知道评测的重要性。问起来时,大多数团队都会点头表示认同。陷阱在于跳过评测的代价在第一季度是不可见的,而到第三季度则会占据主导地位。等到买单的时候,当初做决定的团队已经离开了,接手代码库的团队有着不同的优先级,而整个工程组织只学到了一个通用于下一个 AI 功能的教训:先上线后测量,是高级工程师制造“职业生涯杀手级烂摊子”的方式。最健康的团队会在亲身经历教训之前,就将其编入流程。其余的团队则在生产事故和季度路线图重写中缴纳学费。