用 gpt-4o 做裁判给两版回答打分,A 版简洁 80 字,B 版 400 字但信息更少,跑了 200 条后 B 平均高 0.7 分,人工复核认为 A 更好。
一开始怀疑是「打分档位描述里完整与简洁两条互相冲突」,查了一圈,方向不对。
原因不止一个,得分开看。评分提示里没有约束长度,裁判把篇幅当成详尽。也可能是参考答案本身很长,短答案被判覆盖不足。
不容易想到的是,单次绝对打分,没有做成对比较。
量化长度与分数的相关性
python -c "import pandas as pd;d=pd.read_csv('judge.csv');print(d[['len_a','score_a']].corr())"
评分提示里加与长度无关的硬约束
python judge.py --prompt rubrics_v2.txt --pairwise
随后改成成对比较并随机换序
python judge.py --pairwise --shuffle-order --n 200
等前面都确认过,再抽三十条人工复核校准
python sample_review.py --n 30 --out review.csv
改完先别撤,确认这几项。长度与分数的相关系数降到 0.2 以下,成对比较的一致率与人工复核超过 0.8。
裁判的偏好是提示词写出来的,不加约束它就会奖励篇幅,成对比较比绝对打分稳。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。
