LLM-as-Judge 的基本思路很直观:给定一条输入和对应的模型输出,让一个"法官"模型按预设的维度(准确性、完整性、安全性等)打分或写评语。这个模式在 Prompt 评测、RAG 质量监控、Agent 轨迹评估中已经用得很多了。
团队把 AI 应用推上线之后,最头疼的问题往往不是模型跑得慢,而是"怎么知道这次改得好不好"。Prompt 改了一个词,RAG 换了一个分块策略,Agent 加了一条工具调用路径——每个变更都可能在线上产生肉眼看不出来的质量退化。靠人工一条条看日志打标签,两天就撑不住了。
于是很多人想到同一个办法:让另一个 LLM 来打分。这就是 LLM-as-Judge 的起点——用模型评估模型,把评估本身自动化。听起来直接,但真正落地走一圈就会发现,这个"法官"并不比被评估的模型更可靠。
为什么 LLM 当不好法官
LLM-as-Judge 的基本思路很直观:给定一条输入和对应的模型输出,让一个"法官"模型按预设的维度(准确性、完整性、安全性等)打分或写评语。这个模式在 Prompt 评测、RAG 质量监控、Agent 轨迹评估中已经用得很多了。
但实践下来,几个系统性的偏误反复出现。
位置偏误(Position Bias)是最容易被发现的。给法官同时呈现两个答案让选哪个更好,法官倾向于选排在前面的那个。交换顺序之后,偏好也跟着换。这在 pairwise 对比评测中影响尤其大——如果团队用 A/B 测试的方式对比两个 Prompt 版本,不控制答案顺序,结论很可能就是反的。
冗长偏误(Verbosity Bias)更隐蔽。法官给更长、用词更丰富的答案打高分,哪怕这些答案的信息密度并不高。这在 Agent 场景下尤其明显——Agent 生成了带详细推理过程和中间步骤的长回复,法官认为"更完整",实际上有效信息可能混在重复的推理链里。
自增强偏误(Self-Enhancement Bias)指法官模型对自己同类模型生成的答案打分偏高。用 GPT-4o 做法官,GPT-4o 自己的输出容易拿到高分;换 Claude 做法官,Claude 的输出又占优。这不是模型有"私心",而是不同模型对"好答案"的标准有系统性偏差——它们在自己擅长的表达风格上更宽容。
这些偏误不是理论上的"可能存在问题",而是真实影响评估结论的工程问题。有团队在 Prompt 评测流水线里发现,同一个变更用不同法官模型评估,结论完全相反。不是哪个法官错了,而是每个法官都带着自己的偏误,只是偏误方向不同。
校准不是可选项
LLM-as-Judge 不是"选一个模型,写好 Prompt,就能跑"。不经过校准的评估流水线,得出的分数可能比随机猜好不了太多。
校准的核心思路是:用一组已知质量的标注样本,衡量法官的评分是否准确,然后调整评分策略。最直接的做法是准备一个 golden set——几十到几百条人工标注过的输入输出对,每条都标好了"好/坏"或 1-5 分。定期拿这个 golden set 去跑法官,算准确率和一致性,低于阈值就告警。
但 golden set 的维护成本不低。标注标准会随着业务变化漂移,三个月前的"好答案"标准放到今天可能已经过时了。所以更实际的做法是:golden set 只覆盖核心场景的边界案例,不追求全覆盖,然后通过持续监控法官评分分布的变化来发现偏移。
还有一个常见的工程陷阱:法官和被评估的模型用的是同一个 API 或同一个服务。这样做的好处是方便,但一旦模型供应商改了底座模型的行为,法官的评分标准也跟着变,评估结果就会前后不一致。很多团队遇到的"这周评测分数突然涨了,但业务指标没变化"的问题,排查到最后发现是法官模型悄悄升级了。
工程上怎么落地
真正把 LLM-as-Judge 跑进生产环境,有几个架构选择要做。
法官模型的选择。不是越大越好。实践中,一个中等规模的模型(比如 Claude Sonnet 或 GPT-4o-mini 级别)做单一维度的评分,效果往往不输更大的模型,而成本和延迟低很多。关键是要把评估维度拆细——不要用一个 Prompt 让法官同时评估"准确性、完整性、安全性、流畅度",而是每个维度单独调一个法官 Prompt,甚至单独用一个模型实例。拆开之后,每个维度的评分标准更清晰,调试和校准也更容易。
Multi-Judge 不是万能的,但是有效的。用多个不同的法官模型投票,能显著降低单一模型的偏误。但要注意:投票策略不是简单的少数服从多数。如果三个法官里有两个来自同一系列(比如 GPT-4o 和 GPT-4o-mini),它们的偏误方向一致,投票结果只是放大了这个偏误。更有效的做法是法官模型来自不同的供应商或不同的架构,比如一个用 Claude,一个用 GPT,一个用本地部署的较小模型。投票时也可以加权——每个法官的 golden set 准确率作为权重。
评估 Prompt 本身需要版本管理。法官的评估标准和评分规则写在 Prompt 里,这个 Prompt 跟上线的应用 Prompt 一样需要版本控制和变更评审。很多团队在 Propmt 上做了严格的 CI/CD 门禁,但评估 Prompt 的变更却没人管——结果评估标准变了,分数趋势跟着变,业务方看到的"质量提升"可能只是评估标准放宽了。
流式评估与离线评估分开。在线场景下对每条用户请求做实时评估,成本和延迟都扛不住。通常的做法是:线上只做轻量级的安全检查和格式校验,完整的 LLM-as-Judge 评估走离线管道,用异步队列处理采样的请求轨迹。采样率取决于业务量级,一般 5%-20% 的流量足够发现质量退化趋势。
评估链本身的评估
LLM-as-Judge 落地中最容易被忽视的问题是:谁来评估评估者?
团队花了大量精力优化应用的 Prompt 和 Agent 逻辑,但很少去验证评估流水线本身的质量。一个常见的做法是定期做"反向校准"——用人工标注的样本检查法官评分与人工评分的一致性,偏差超过阈值就触发评估 Prompt 的调整或模型切换。
另一个做法是 consistency check:对同一条输入输出,多次调用法官(同一个 Prompt、同一个模型),看评分是否一致。如果同一个法官对同一条输出打了 4 分和 2 分,说明评估 Prompt 本身有问题——可能评分标准写得太模糊,或者评估维度之间有冲突。
还有一个实践是"对抗性评估"——专门构造一些边界案例来测试法官的判别能力。比如故意在输出中插入事实错误但保持表达流畅,看法官能不能识别出来;或者构造一个答案简短但正确的输出,看法官会不会因为"不够详细"而打低分。这些边界案例可以不断补充到 golden set 里,持续提升评估流水线的鲁棒性。
落到实处的建议
如果团队正在搭建或已经运行 LLM-as-Judge 评估流水线,有几个检查点可以优先看看:
第一个检查点:golden set 的覆盖率。当前标注样本覆盖了多少核心场景?有没有包含边界案例?更新频率是多少?
第二个检查点:法官模型的稳定性。过去一个月法官的评分分布有没有明显漂移?如果漂了,是因为业务变化还是法官模型本身变了?
第三个检查点:评估维度的独立性。单个 Prompt 里塞的评估维度是不是太多了?拆成独立维度后,分数解读是否更清晰?
第四个检查点:评估结果的可复现性。对同一条输入,多次评估的结果波动有多大?如果波动大,是先解决评估 Prompt 的稳定性,还是先通过多次采样取均值来平滑?
LLM-as-Judge 不是"装上就能用"的工具,它需要持续投入校准和维护。但它带来的价值也很明确:当团队每天有上百次 Prompt 变更、几十次 Agent 逻辑调整时,只有自动化的评估流水线能给出"这次改好还是改坏了"的答案——前提是它值得信任。