用模型當裁判:可靠的 LLM-as-judge 怎麼設計
讓模型評分很方便,但預設做法的偏誤很大。這幾個修正能大幅提升一致性。
人工評分昂貴且慢,用模型當裁判是務實選擇。但直接問「這個回答好不好,給 1 到 10 分」會得到非常不穩定的結果。
已知的偏誤
- 位置偏誤:兩兩比較時傾向選第一個或第二個。
- 長度偏誤:傾向選比較長的回答。
- 自我偏好:傾向自己(或同家族模型)的輸出。
- 分數集中:幾乎都給 7 到 8 分,區分度很差。
四個修正
- 改成兩兩比較,不要絕對評分。相對判斷穩定得多。
- 位置對調各跑一次,兩次結果不一致就標為平手。
- 給明確評分準則,把「好」拆成可判斷的條件。
- 要求先給理由再給結論,並且只解析結論欄位。
prompt = '''比較兩個回答對同一問題的品質。
評分準則(依序判斷,前面的優先):
1. 事實正確且有依據
2. 完整回答了問題
3. 沒有多餘資訊
4. 格式符合要求
先寫 reason 說明依據哪一條做出判斷,再給 winner。
輸出:{"reason": "...", "winner": "A|B|tie"}'''驗證裁判本身
裁判也要被評測。準備 50 組有人工標準答案的比較題,量測裁判與人的一致率。低於七成的裁判不值得信任,該回頭改準則。
不要用同一個模型既生成又評分自己的輸出。至少換一個模型家族,或用人工抽查校準。