评测 5 轮对话的客服场景,脚本只取最后一轮回答打分,前 4 轮答错但被第 5 轮纠正的样本全部记满分,整体通过率比人工抽检高 18 个点。

把日志和配置对完,能解释这个现象的基本就这几处。只评最终轮,中途错误没有计入;打分粒度是整段会话而不是单轮;数据集中没有轮级标签;纠正行为被当成正确回答。

上来先把每轮问答拆成独立样本再评分

python split_turns.py --in dialogs.jsonl --out turns.jsonl

随后对每轮单独跑裁判并记录结果

python judge_turns.py --in turns.jsonl --out scores.jsonl

接着统计需要纠正的样本占比

python -c "import json;rows=[json.loads(l) for l in open('scores.jsonl')];print(sum(1 for r in rows if r['score']<3))"

末了按轮级结果重算会话通过率

python aggregate.py --in scores.jsonl --by dialog_id --out report.json

中途换过一次思路,把范围缩到最小的那一层,反而快了。

别只看报错消失,验证要多做一步。会话级通过率与人工抽检的差距收敛到 3 个点以内,前几轮的错误能在报告里单独看到。

提醒一点。多轮评测要把每轮都当样本,只看最后一轮等于把中间的错误全部洗掉,指标会虚高得离谱。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189