问题出现得很突然,日志倒是留得挺全。模型从 4o 换到 4.1 后回归集分数从 86 掉到 78,同一批用例人工看差异不大,回归集 300 条是从线上日志里按时间取的。

刚开始盯着「评分脚本换了版本,prompt 与上一次不同」,折腾了半个多小时,排掉了。

真正麻烦的地方在于,几个原因的现象几乎一样。回归集里长尾场景占比偏高,与线上分布不一致。还有一种是用例按时间抽样,恰好覆盖了某个故障窗口。

还有一种情况,部分用例答案被更新过,旧标准答案没同步。

上来先按场景维度统计用例分布

python -c "import json,collections;d=[json.loads(l) for l in open('eval.jsonl')];print(collections.Counter(x['scene'] for x in d))"

与线上近一周流量分布做对比

python dist_cmp.py --eval eval.jsonl --traffic traffic.json --out diff.json

固定评分 prompt 版本并重跑两版模型

python eval.py --judge prompt_v3 --models 4o,4.1 --out cmp.json

等前面都确认过,再按线上权重重算加权分数

python eval.py --reweight traffic.json --out weighted.json

改完先别撤,确认这几项。加权后的分差缩小到 2 分以内,两版模型在长尾场景的差距与人工判断一致,评分 prompt 版本已固定。

这里还有个坑。离线分数下降先怀疑集合而不是模型,分布偏移和评分器变更都会造成假掉分,加权重算能快速区分两者。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189