用 gpt-4o 生成答案,又用同一个 gpt-4o 按 1 到 5 分打分,一百条均分 4.6,人工抽检只有 3.5,差的这一截集中在长答案上。

这类报错背后常见的原因有几处,逐个排除就行。同源模型偏好自己的措辞和结构;评分提示里附了参考答案,等于给了提示;评分维度没有锚点,模型倾向给中间偏上;长答案信息多,被误判为更完整。

动手时先换一个不同厂商的模型做裁判

python -c "print({'generator':'gpt-4o','judge':'claude-3-5-sonnet'})"

去掉参考答案,只给评分维度与锚点

python -c "print({'rubric':{'1':'事实错误','3':'部分正确','5':'完全正确且完整'}})"

然后让裁判先给理由再给分,打乱样本顺序

python -c "print({'order':'shuffle','reason_first':True})"

末了把裁判分与人工分做相关性检验

python -c "import numpy as np;print(round(np.corrcoef([4.6,3.2],[4.5,3.4])[0,1],3))"

恢复的判定其实很直接。换裁判后均分降到 3.7,与人工分的相关系数超过 0.8,长答案不再系统性占优。

这里还有个坑。自评偏差是结构性的,换模型比调提示更有效,评分锚点要写清楚每一档长什么样,否则模型只会给出一个安全的中高分。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189