Appearance
如何评估模型决策轨迹:Model-as-Judge、Trajectory 与 Tool Selection
前置:怎样建立可重复的 E2E Eval:Dataset 与 Deterministic Grader
核心问题:结果都正确时,怎样评价哪个 Agent 的工具选择和轨迹更合理,什么该用规则判、什么才需要 Model Judge?
比较两份技术解释的清晰度可用 judge;检查 Tool 是否调用一次直接从 trace 断言。两个 Agent 都答对,其中一个调用 18 次搜索,另一个 4 次;trajectory 指标能区分效率。
Mental Model
最终答案只能证明结果的一部分;Trajectory / Tool Selection 观察过程,Model-as-Judge 只补充那些无法用代码直接断言的语义质量,不能替代确定性证据。
Model-as-Judge
Model-as-Judge 适合评价代码很难直接判断的语义质量,例如回答是否完整、计划是否合理、解释是否忠实于证据。
但它不应该拿来判断本来就有确定事实的问题:
text
文件是否存在 → code check
Tool 是否调用成功 → execution record
JSON 是否符合 schema → validator
回答是否清晰且有依据 → judge 可以参与Judge 自身也会波动,因此需要固定 rubric、示例和版本,并用一部分人工标注样本验证 Judge 与人的一致性。否则只是“用另一个模型替第一个模型拍脑袋”。
Trajectory Evaluation
对中间轨迹评价选择了什么 tool、参数、计划、context item;它能发现最终答案偶然正确但路径浪费/危险的问题。Trajectory Eval 检查 Agent 走过的步骤是否合理,包括无效循环、错误 tool、过多探索、危险动作和恢复路径。最终答案相同的两条轨迹可能成本和风险完全不同。
Trajectory Eval 关注中间动作序列:是否选对工具、是否重复搜索、是否越权、是否走了不必要步骤。它解释“最终成功但过程昂贵/危险”。
Tool Selection Evaluation
Tool Eval 将 expected/acceptable tool、实际选择、参数正确性、调用次数和结果状态分开记录。confusion matrix 可以直接暴露 tool naming/description 重叠。
一个 Case 同时用确定性 Grader 和 Judge
任务是“修复一个明确的登录 bug,并解释原因”。可以把评分拆开:
text
pytest exit code == 0 → deterministic
禁止修改 migrations/ → deterministic
实际修改文件属于 auth/ → deterministic
Tool 调用次数是否超过预算 → deterministic
解释是否清楚、是否指出真正根因 → Model-as-Judge rubricTrajectory 还可以单独检查:模型是否先读文件再 patch、有没有连续重复搜索同一 query、是否在权限拒绝后尝试绕过。这样 Judge 不需要替代程序事实,只负责确实难以规则化的语义质量。
Judge 本身也要评估:拿一批人工标注 pair,测 judge 与人工的一致性;升级 judge model/prompt 后重新校准。否则“Eval 分数提高”可能只是裁判换了,而不是 Agent 变好了。
自测
- 最终答案正确,但模型中途调用了危险且无关的 Tool。只评 final answer 为什么会漏掉这个质量问题?
- Model-as-Judge 本身也有随机性。怎样通过 rubric、重复试验或人工样本校准它,而不是把 judge score 当真值?