简介:直接让大模型给Agent输出“打个分”,结果常常不稳定、难复现、无法进入流程。本文对比朴素LLM-as-Judge与工程化LLM-as-Judge(Rubric量表设计+偏置校准+结构化输出)两种用法,从评分标准、轨迹评估、偏置控制、可复现性、成本等维度拆解差异,给出场景化选型建议与迁移注意事项,帮助团队把模型评估从“玄学打分”升级为可审计的工程闭环。
构建一个能调用工具、执行流程的Agent,在今天已经不算难事:接入模型、封装工具、串起工作流,很快就能跑通Demo。真正的挑战在于“衡量它是否可靠”。Agent的质量不等于“回答写得好”,而取决于它在真实环境里能否稳定完成任务:理解对、计划对、工具用对、参数填对、失败能恢复、长期交互不跑偏,同时成本可控、过程可审计。
这意味着评估对象必须从“最终回复文本”升级为“行为轨迹”——把多轮对话与每一步工具调用纳入可回放、可量化、可定位的评测体系。而LLM-as-Judge(用大模型充当评估器)是实现这一目标最常用的自动化手段,但实践中的“翻车”非常普遍,根因集中在三个方面:
正因如此,“LLM-as-Judge怎么用”本身就是一个值得严肃对比的工程问题。本文对比两类典型用法:
典型形态是把被评估的回答直接交给一个强模型,提示词类似:“请评估以下回答的质量,给出1~10分和理由。”其特点是:评分标准隐式存在于模型自身的默认价值观中;输出是自由文本,分数与理由混在一起;评估对象通常是最终回答,不包含完整轨迹;接入成本几乎为零,一条提示词即可运行。
方案B把“评估”当作一个独立的工程系统来建设,核心是三件套:
为了让对比更完整,需要说明两个边界参照:人工评估一致性强,但成本高、速度慢、难以规模化;规则与代码评估(如参数格式校验、必填字段检查、敏感内容拦截)完全确定,但只能覆盖可形式化的部分。工程化LLM-as-Judge的目标不是取代它们,而是与它们分工协作。
朴素用法下,“好”的定义完全由模型自行决定,评估结果实际反映的是“这个模型觉得什么是好回答”,而不是“业务认为什么是好行为”。模型版本一换、温度一调,分数口径就漂移。方案B通过Rubric把业务标准显式化:每个维度、每个分档都有行为锚点,评估器只是“执行量表的裁判”,而不是“定义标准的人”。标准因此可以评审、可以版本化、可以随业务演进。
朴素用法通常只把最终回答交给评估器,这会系统性漏掉中间过程的错误:参数填错一位但最终答案碰巧合理、走了绕远的工具路径、失败后没有恢复等,在“只看结果”的评分里都可能被放过。方案B的输入是完整轨迹——多轮对话、每一步工具调用、入参出参、重试记录——并支持步骤级评分与结果级评分分离:例如“工具调用正确性”看每一步的选型与参数,“任务完成度”看最终是否达成目标。这正是把评估从“文本评分”升级为“系统工程问题”的关键一步。
朴素用法对以下常见偏置基本没有防御:
方案B的对应手段包括:成对评估时交换顺序各评一次,取均值或在结果不一致时触发复评;用人工确认的“金标准”样本做锚定,校准评分尺度;对同一样本多次采样投票;持续监控分数分布,发现漂移即告警;定期抽样与人工标注对齐,用一致性统计(如相关系数、Kappa系数)度量评估器与人的吻合程度。
朴素用法的自由文本输出存在三个问题:难以程序化解析;分数与理由可能自相矛盾;无法直接进入下游流程。方案B用结构化输出解决:评估结果是一个可校验的JSON对象,包含逐维分数、证据引用(指向轨迹中的具体步骤)、硬性违规标记与置信度。程序可以校验分数是否在合法区间、理由是否为空、违规标记与扣分是否对账,然后聚合为组件级与系统级指标,接入持续集成流程作为回归门禁。当前主流模型服务平台(例如百度智能云提供的模型服务)普遍支持约束模型输出为指定JSON结构的能力(具体能力形态以平台文档为准),工程上实现这一契约的门槛已经不高。
朴素用法的评估结论很难复现:换个时间、换个模型、改个措辞,分数就不同,且无法解释“为什么扣分”。方案B的分数—证据—理由三者对账,任何一次扣分都能回放到轨迹中的具体行为,满足审计要求,也让“评估失败”变成可定位、可修复的工程问题,而不是一次主观争论。
方案A接入成本几乎为零,单次调用即可,适合高频粗筛;方案B需要量表设计、人标校准、多次采样,建设与运行成本都更高。但两者并不互斥:常见做法是级联——先用方案A对大批量数据粗筛,再对疑似问题样本用方案B精评,在成本与质量之间取得平衡。
| 对比维度 | 方案A:朴素LLM-as-Judge | 方案B:工程化LLM-as-Judge |
|---|---|---|
| 评分标准 | 隐式,依赖模型默认价值观 | 显式Rubric,分档锚点+一票否决项 |
| 评估对象 | 通常是最终回答文本 | 完整轨迹:多轮对话+每步工具调用 |
| 偏置控制 | 基本没有 | 换序、锚定样例、多采样投票、分布监控 |
| 输出形式 | 自由文本,难解析 | 结构化JSON,可校验可聚合 |
| 可复现性 | 低,随提示词与模型波动 | 较高,量表版本化+受控输出 |
| 可审计性 | 弱,分数与理由难对账 | 强,分数—证据—理由可回放 |
| 接入成本 | 极低 | 中,需量表设计与人工校准 |
| 运行成本 | 低(单次调用) | 中高(多采样、多维评估),可级联控制 |
| 适用阶段 | 原型探索、数据冷启动、粗筛 | 回归门禁、灰度决策、生产监控 |
以下为通用示意,不依赖任何特定工具。
Rubric片段(以“工具调用正确性”维度为例):
[维度:工具调用正确性] 满分5分5分:所有工具选择与参数完全正确;出现失败时按预案重试并恢复3分:存在1处非关键参数偏差,但未影响任务完成1分:工具选择错误或关键参数错误,导致流程失败0分:出现未授权操作或越权调用(一票否决,直接判定不通过)
结构化输出Schema(示意):
{"overall_score": 82,"dimensions": [{"name": "task_completion", "score": 4, "max": 5,"evidence": "第3步正确调用订单查询并返回结果"},{"name": "tool_call_correctness", "score": 5, "max": 5,"evidence": "全部工具入参与轨迹记录一致"},{"name": "failure_recovery", "score": 2, "max": 5,"evidence": "第5步调用超时后未重试,直接放弃"}],"hard_violations": [],"rationale": "任务完成但失败恢复不足,扣分项见failure_recovery","confidence": "high"}
换序校准流程(成对比较示意):
输入:问题q,候选回答A,候选回答Bs1 = judge(q, A, B) # 原始顺序s2 = judge(q, B, A) # 交换顺序若 s1 与 s2 结论一致:取该结论否则:标记为"不稳定样本",进入复评或人工仲裁
朴素LLM-as-Judge与工程化LLM-as-Judge的差异,本质上是“把评估当作一条提示词”与“把评估当作一个系统工程”的差异。前者胜在零成本、快启动,适合探索期;后者通过Rubric量表把业务标准显式化、通过偏置校准压制系统性偏差、通过结构化输出让结果可校验可审计,才能承担回归门禁与上线决策的职责。两者的相同点同样重要:都依赖底层模型、都受非确定性影响、都需要人工与规则兜底,也都必须嵌入“离线评估+影子流量+灰度门禁+生产监控+自动回归”的评价驱动开发闭环。选型的核心判断只有一个:评估结果要不要为上线决策背书。要背书,就用工程化方案把评估做成可审计的工程;只是内部快速感知,朴素用法配上级联精评,通常已经足够。