Skip to content
预计 1 分钟右侧目录可快速定位

如何评估模型决策轨迹: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 rubric

Trajectory 还可以单独检查:模型是否先读文件再 patch、有没有连续重复搜索同一 query、是否在权限拒绝后尝试绕过。这样 Judge 不需要替代程序事实,只负责确实难以规则化的语义质量。

Judge 本身也要评估:拿一批人工标注 pair,测 judge 与人工的一致性;升级 judge model/prompt 后重新校准。否则“Eval 分数提高”可能只是裁判换了,而不是 Agent 变好了。

自测 ​

  1. 最终答案正确,但模型中途调用了危险且无关的 Tool。只评 final answer 为什么会漏掉这个质量问题?
  2. Model-as-Judge 本身也有随机性。怎样通过 rubric、重复试验或人工样本校准它,而不是把 judge score 当真值?

Sources ​

AI Engineering · Agent · Harness · Backend Systems