一个很典型的测试现场:你给退款客服写了一条断言,要求输出里包含“退款将在7个工作日内原路退回”。第一遍跑过了,第二遍挂了。模型这次说的是:“一般7个工作日左右退回原支付方式。”语义没变,断言挂了。
这不是模型“坏了”,而是传统断言方法在大模型测试里失效了。assert expected in output、精确字符串匹配、固定JSON字段全等,适合确定性函数;大模型是概率采样系统,同一个问题问三遍,措辞、语序、甚至关键条件都可能变。继续用“一次输出等于预期字符串”做判定,测试结果只会变成随机噪声。
要解决,不是简单把断言删掉,也不是一句“多采样几次”就完了。先拆清楚“不稳定”有哪几类,再给每类配度量方式,最后把判定口径和结果区间记下来。
一、先拆「不稳定」:三种类型,风险完全不同
下面这个例子是常见测试场景的脱敏示意,不是某个项目的实测数据。
类型
表现
示例
主要风险
主要度量
措辞变化但语义一致
同义替换、语序变化、礼貌词增减
“7个工作日内原路退回” vs “7个工作日左右退回原支付方式”
传统断言误杀
语义相似度 + 关键信息抽取
语义偏移
对象、范围、时间、条件、单位发生变化
“7个工作日”变成“7个自然日”;“原路退回”变成“退回余额”
用户被误导,业务规则被破坏
关键信息抽取比对 + 多次采样通过率
完全错误
答非所问、事实错误、安全违规、格式崩坏
问退款时效,答成退货地址;金额多一个零
严重事故
硬规则/关键字段比对 + 人工复核 + 通过率
关键点:相似度高不等于事实正确。 “7个工作日退回”和“7个自然日退回”在向量空间里可能非常接近,但业务上不是一回事。否定句、数值、单位、条件、对象,都是语义相似度的盲区。所以不能只靠一个相似度阈值判通过。
二、怎么测:三种度量方式,各自测不到什么
- 语义相似度阈值:只适合宽容“措辞变化”
做法:对模型输出和参考答案做 embedding cosine similarity,或使用 BERTScore 一类语义指标,设定阈值。阈值不要拍脑袋,拿一批人工标注的“通过/不通过”样本校准,并记录相似度模型版本、阈值、校准集版本。
判定口径示例:关键字段全部正确,且语义相似度 ≥ 0.85,才算通过。这里的 0.85 只是演示,必须按你的任务校准。
它测不到什么:测不到事实正确、数值正确、否定关系、单位、条件和安全约束。 相似度高可能只是“说法很像”,不代表“事实对”。因此它只能作为“措辞变化”类型的辅助宽容项,不能作为唯一通过标准。
- 多次采样统计通过率:回答“稳定不稳定”,但不回答“为什么错”
做法:同一个 prompt、同一组参数,独立采样 N 次,逐条按统一口径判定通过/失败,计算通过率 p = k/N,并给出置信区间。小样本建议用 Wilson 区间,不要只报一个点估计。
示例:N=30,通过 27 条,通过率 90%,Wilson 95% 区间约 74%–97%。这是格式演示,不是实测数据。这个区间说明:N=30 时,你不能很有把握地宣称“稳定在90%以上”。初筛可以用20–30次,验收通常要更多;高风险任务可以到100次以上。采样次数要写进记录,否则通过率不可比。
它测不到什么:测不到失败原因、长尾严重错误和系统性偏移。 10次里9次对、1次金额错,通过率仍很高,但风险很高。通过率必须和失败类型标签、关键字段硬校验一起看。
如果产品允许重试,还要区分“首次通过率”和“重试后通过率”。不能把“重试三次有一次对”记成“稳定通过”。
- 关键信息抽取比对:把“什么算对”说清楚
做法:先定义任务的关键字段,比如金额、时间、单位、对象、动作、条件、来源。用正则、JSON Schema、结构化抽取或人工标注抽取后做字段级比对。判定顺序建议是:
硬约束:格式、枚举、数值范围、安全规则、引用来源;任一失败即失败。
关键字段:金额、时效、单位、对象、条件;任一冲突即失败。
语义相似度:只用于容忍措辞变化,不用于推翻关键字段失败。
它测不到什么:测不到你没定义的信息、隐含约束、抽取器自身错误和文风安全。 抽取器也要版本化,并定期人工抽检;否则你测的是抽取器,不是模型。
一句话:先硬约束,再关键字段,最后语义宽容。 每次输出先过这套判定树,再统计通过率。
三、怎么记:一套可落地的记录模板
不要只记“通过/不通过”,也不要只记平均相似度。建议每条用例至少记录:
字段
说明
case_id / 任务
用例标识和业务场景
prompt版本
提示词版本,避免改了提示词还对比历史
模型与参数
模型版本、temperature、top_p、seed、服务商
判定口径版本
阈值、关键字段、硬规则、抽取器版本
采样次数 N
独立采样次数,是否允许重试
逐条结果
每条原始输出、判定结果、失败类型
通过数/通过率
k/N 和 p
结果区间
通过率 Wilson 95% CI;相似度 min/median/P90;字段通过率
失败类型分布
措辞误杀、语义偏移、完全错误、格式/安全
代表输出对比
原始输出并排保留,便于复盘
结论
是否达到任务容错口径,是否需人工复核
示例填写(仅演示格式,数据非实测):N=30,通过27,p=90%,Wilson 95% CI [74.4%, 96.5%];失败3条,其中2条“工作日/自然日”单位偏移,1条缺少退款路径;关键字段通过率90%;相似度 min 0.76、median 0.91。结论:通过率点估计达标,但区间下限不足,不能宣称稳定满足90%验收,需扩采样并修复单位约束。
最后提醒:判定口径要按任务容错要求调整。 高风险资金/医疗/安全任务,关键字段应要求100%正确,通过率看置信区间下限,并保留人工复核;低风险创意生成,可以放宽语义阈值,但仍要守住硬约束。先定义“这次输出算不算通过”,再谈采样次数和结果区间。否则,多采样只是在更精确地统计一个没定义清楚的东西。
本文部分内容参考了霍格沃兹测试开发学社整理的相关技术资料,主要涉及软件测试、自动化测试、测试开发及 AI 测试等内容,侧重测试实践、工具应用与工程经验整理。