给模型输出写快照测试

用快照测试锁住模型输出的结构,而不是锁住具体文字,让提示词改动可回归、不误报。

更新于 4天前

适用场景

  • 改了一句系统提示词,想确认结构化输出的字段没被改坏
  • CI 里模型输出每次都不一样,断言全红没法用
  • 要给产品演示前做一轮输出质量回归
PROMPT
团队每次调 DeepSeek 的系统提示词都心里没底,改完不知道结构化输出的字段还对不对,需要一套不会因为文字润色就误报的回归测试时用这个。

【需求】
设计模型输出的快照测试方案:
1. 被测对象是一个返回 JSON 的接口,字段固定为 title、summary、keywords、scenes 四个;
2. 断言只锁结构不锁文字:字段名集合、字段类型、keywords 数组长度区间、每条长度上限;
3. 文字部分用相似度阈值(比如与上次快照的余弦相似度不低于 0.75)而不是精确相等;
4. 快照文件按用例名存 JSON,首次运行生成、之后比对,提供 --update 参数更新;
5. 给出 CI 里的执行方式,以及模型临时不可用时如何跳过而不是失败。

【输出要求】
1. 用 Python + pytest 实现,给完整可跑的测试文件;
2. 相似度用标准库实现(字符级 n-gram 重合度即可),不引入第三方库;
3. 说明为什么不能直接断言全文相等(模型有随机性、温度大于 0 时必然抖动);
4. 最后列出 3 类应该做精确断言的情况(枚举值、必填字段、长度硬上限)。

---
标签
快照测试 回归 CI