模型更新后,我做的第一件事是跑旧用例
约 2 分钟0 阅读
上个月某个我常用的小模型出了个新版本,更新日志写得云淡风轻:「优化指令遵循,提升输出稳定性。」我照例没多想,把生产环境的模型 ID 切过去,然后就去吃饭了。
回来的时候,几条线上任务的输出全变了。不是报错,是那种「看起来没问题,但细看全不对」的变化——原本会分点输出的,现在糊成一段;原本会拒绝回答的越界问题,现在开始硬编。我第一反应是模型变笨了。
但我留了个心眼,把新旧两个版本并行跑了一遍我攒的那套旧用例。结果很有意思:模型没变笨,它变「乖」了。
变「乖」是什么意思
新版本对指令的字面遵循度变高了。我以前那套提示词里有一句「请灵活组织」,旧版本会理解成「合理分段」,新版本理解成「你怎么说我就怎么做,那就别���段了」。
同一个指令,两种理解,都不是错,但产出的可用性天差地别。模型本身的能力没退化,是我和它之间那份没写进合同的默契,被一次「优化」悄悄改写了。
从此我给模型配了「回归用例」
这次之后我做了件一直懒得做的事:给每个主力模型维护一份固定的测试用例集。大概二十条,覆盖我最常用的几种任务——摘要、结构化抽取、多轮对话、拒答边界。每次模型更新,先跑这套用例,肉眼对比新旧输出,再决定切不切。
这事不难,难在第一次要花两小时把用例攒齐。但攒完之后,每次更新就是十分钟的 diff,比出事再回查省太多。
一个反直觉的结论
很多人觉得模型更新就是「升级」,新版本理应更强。但我的体感是:模型更新的风险,和它宣称的改进幅度成正比。那些「提升指令遵循」「优化稳定性」的小更新,恰恰最容易在你看不见的地方改写行为;而那种「支持新模态」「上下文翻倍」的大更新,反而因为变化显眼,你会主动去测。
真正会咬人的,从来都是那些你不会专门去测的小改动。
所以现在模型一更新,我不急着切。先跑旧用例,再决定要不要信它。这大概是我从那次翻车里学到的最值钱的一句:别用生产环境替模型厂商做测试。
