跳转到主要内容
judge 断言是第五种评分机制,和 Assert 里的四种并列。用在“对不对靠规则说不清”的地方——开放式行文、语气、事实一致性、摘要质量。裁判模型和被测 agent 完全分离,避免自评:同一个模型给自己的输出打分,天然会打得偏高。

judge 的三种固定形状

t.judge.autoevals 只暴露三种固定形状,评什么都落进其中之一:
  • closedQA(question, opts?) —— 闭合式判断:输出满不满足这条标准?适合打分标准明确的检查(“语气是否礼貌、具体""是否没有编造政策细节”)。
  • factuality(reference, opts?) —— 输出和你给的参考文本之间的事实一致性。
  • summarizes(source, opts?) —— 输出是否忠实摘要了某个源文档。
{ on } 指定被评的值,默认值按接收者决定(见下文);{ model } 单次覆盖裁判模型。

judge 挂在哪:tsessionturn

和作用域断言一样,judge 调用遵守同一条规则:接收者决定默认材料,不是调用方式决定
t.judge / session.judge 是 session 级,适合评整段对话的回答质量或跨轮一致性;turn.judge 是 turn 级,只看这一轮的消息——多轮评估用例里不同轮次需要不同评分标准时用它:
要评的不是对话本身——Sandbox diff、文件内容或其它材料——不管挂在哪个接收者上,都用 { on } 显式传:

judge 模型解析优先级

裁判模型按从具体到笼统解析:
三级都没配时,最后还会读环境变量 NICEEVAL_JUDGE_MODEL;连它也没有就是配置错误,调用点直接报错——judge 没有内置默认模型。

评判端点与 key:OpenAI 兼容协议

裁判模型走 OpenAI 兼容的 /chat/completions 协议。OpenAI 官方、DeepSeek,以及任何兼容这个协议的网关都能当评判端点,在 judge 配置里指定:
baseUrl 和 key 都按从具体到笼统解析,配置字段优先、环境变量兜底:
key 一个都解析不到时,judge 断言静默跳过——不报错、不记分,eval 照常跑。全绿不代表 judge 真的评过。配完 key 先跑一条带 t.judge 的 eval,在 niceeval view 里确认出现了 judge 分数。

严重度:judge 默认 soft

judge 调用和其它断言一样是评分函数,遵守 Assert · gate 与 soft 严重度 同一套机制——只是默认值和大多数值匹配器不同:
不调 .atLeast() 也不调 .gate() 时,裸的 judge 调用纯粹记一个质量分——会显示在 eval 的分数徽章上,但单独永远不会让运行失败。这是 judge 合理的默认值:一个概率模型在给另一个概率模型的输出打分,把每次没打满分都当硬失败会让整套 eval 变得脆弱、动不动就红。只有当被评的属性真的是硬底线时(比如”回复不能编造账户信息”),才用 .gate()

相关阅读

  • Assert — gate / soft 严重度的完整规则,以及 judge 分数最终折进的判定规则。
  • Drivet.send()t.newSession(),以及 t.judge / session.judge / turn.judge 各自挂在哪个 handle 上。
  • 评估 — judge 分数如何折进评估用例生命周期和 verdict 类型。