现场是这样的。两版提示词各跑 100 条人工标注,通过率 0.82 和 0.79,产品问能不能上线,测试集是从线上日志随机抽的。

中间走过弯路,把「两次标注的标准中途改过」当成主因,改完现象没变。

把日志和配置对完,能解释这个现象的基本就这几处。样本量不足以区分 3 个点的差异;两条测试集不是同一批样本;只统计通过率,没看错误类型分布。

做一次两比例检验

python -c "from statsmodels.stats.proportion import proportions_ztest;print(proportions_ztest([82,79],[100,100]))"

估算需要的样本量

python -c "from statsmodels.stats.power import zt_ind_solve_power;print(zt_ind_solve_power(0.03,power=0.8))"

同一批样本交叉跑两版

python run_eval.py --file same100.jsonl --prompt v6 --prompt v7

等前面都确认过,再按错误类型拆分对比

python breakdown.py --a v6.json --b v7.json --by error_type

改之前先确认了最近有没有人动过配置,避免白查一遍。

恢复的判定其实很直接。同一批样本上重跑后差距缩小到 1 分以内,p 值大于 0.05,结论改为无显著差异。

这里还有个坑。3 个点的差距在百条样本上大概率是噪声,先把样本量算清楚再谈上线。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189