返回 AIPA 笔记
AIPA Day 16

LLM-as-judge 四段式 rubric — judge prompt 结构与刻度选择

LLM-as-judge 四段式 rubric — judge prompt 结构与刻度选择

2026-06-30
llm-as-judgerubricbinary-vs-likertjudge-prompt

日期: 2026-06-30 阶段: Phase 1 - 产品定义×评测×可观测底座 标签: #llm-as-judge #rubric #binary-vs-likert #judge-prompt

核心问题

Day 15 守住了「能确定性断言的」地板。但 SAR 草稿的核心质量——叙述是否逻辑自洽、是否真正解释了「为什么可疑」、语气是否专业可提交——代码断言不了。这一层归 LLM-as-judge。

可 judge 本身是个有方差的概率系统:同一份 SAR,judge 给的分可能时高时低。如何让 judge 评分稳定到能进 CI?Aman Khan 给的答案是四段式(实为五段)judge prompt 结构(aman.ai LLM-as-a-judge primer):缺一段,judge 方差就不可控。今天拆解这个结构,并回答一个反直觉的工程选择——为什么让 LLM 打 1-5 分,比让它做二元判定噪声大得多

关键内容

A. 四段式 judge prompt 的逐段拆解(aman.ai)

Aman Khan 的 judge prompt 由五个可分辨的部分组成(口语常说「四段」,因为前两段常合并表述)。逐段看「这一段消除哪种方差」:

┌─ 第1段:角色与任务 (Role) ─────────────────────────┐
│ "你是一名严格、公正的评审员,评估 AML 调查系统    │
│  自动生成的 SAR 草稿质量。"                          │
│ 作用:钉死评审视角,避免 judge 用「乐于助人助手」  │
│       的口吻打人情分                                 │
├─ 第2段:评估标准 / rubric (Criteria) ──────────────┤
│ 列出维度 + 每个维度的刻度类型(见 B 节):          │
│  · 引用忠实度 faithfulness: 二元 (yes/no)          │
│  · 叙述完整性 coverage: 0-3 序数                    │
│  · 可提交性 submittable: 二元 (yes/no)             │
│ 作用:把「好」拆成可独立打分的轴,消除「整体感觉」 │
├─ 第3段:锚定示例 (Anchored few-shot) ──────────────┤
│ 每个刻度档给 1 条具体 SAR 片段作参照:              │
│  coverage=3 长这样 / coverage=1 长这样             │
│ 作用:calibration references,缩小相邻档的歧义     │
├─ 第4段:待评对象 (Input) ──────────────────────────┤
│ 注入本案 SAR 草稿 + 案件证据交易(供 judge 核对)  │
├─ 第5段:输出格式 (Output schema) ──────────────────┤
│ 强制 JSON:{faithfulness, coverage, submittable,   │
│             rationale},便于代码解析+聚合           │
│ 作用:结构化输出,让 judge 分能进 evalBaseline 聚合│
└────────────────────────────────────────────────────┘

aman.ai 原文对锚定示例的论断:anchored examples 作为「calibration references」,通过 few-shot learning「improves scale consistency, reduces ambiguity between adjacent scores, and stabilizes judgments」。

四段缺失的后果(这是「四段缺一方差不可控」的具体机制):

缺失段引入的方差/偏差
缺角色judge 用通用助手口吻,倾向给「鼓励性」高分
缺 rubricjudge 凭「整体印象」打分,不同案件标准漂移
缺锚定示例相邻档(coverage 2 vs 3)边界模糊,同输入复评不一致
缺输出格式输出自由文本,无法代码解析,judge 分进不了 CI 聚合

B. 二元判定 vs 1-5 量表:为什么 likert 不稳

这是今天的核心反直觉点。直觉觉得「1-5 分更细腻、信息量更大」,工程现实恰好相反。

eugeneyan 的实践口径(LLM-evaluators 长文):「where possible, I have my evaluators return binary outputs. This improves model performance while making it easier to apply classification metrics.」理由有二,一个统计、一个语义:

统计上——二元判定只需 judge 跨过一条决策边界(可提交/不可提交);1-5 分要求 judge 在四条相邻边界上都稳定(1|2、2|3、3|4、4|5)。每条边界都是一次噪声注入点。而「3 分 vs 4 分」之间根本没有客观锚——人类标注者自己都难一致,遑论 judge 复评。

语义上——LLM 对中间档(2/3/4)缺乏稳定的内部表征。它能可靠区分「明显好 / 明显坏」,但「中等偏上」对应输出概率分布上一片模糊地带,温度、措辞微调都能让它在 3 和 4 之间跳。

下表对比同一批 SAR 草稿、同一 judge、各评 5 遍的稳定性(量化口径,数字为本项目 W3 校准的设计目标基线,非已实测):

维度二元判定 (yes/no)1-5 likert 量表
同输入 5 次复评一致率高(目标 ≥0.95)低(经验常 0.6-0.75)
与人工的 Cohen's κ可达 substantial (>0.6)常掉到 fair (0.2-0.4)
可用的指标recall/precision/F1(分类指标)相关系数(eugeneyan:对相关指标持怀疑)
进 CI 的可解释性「judge 判 12 案不可提交」直接可行动「平均 3.4 分」无法定阈值行动
边界数1 条4 条相邻边界,各自注入噪声
信息量低(但稳)高(但噪声淹没增益)

反直觉洞察①(likert 的细腻是假象):1-5 分看起来比 yes/no 多 4 倍信息,但这些信息大部分是噪声而非信号。当 judge 在 3/4 之间的方差大于 3 分和 4 分真实质量差时,多出来的刻度只是在测量 judge 自己的随机性。eugeneyan 因此「skeptical of correlation metrics」,能二元就二元——用更粗的刻度换更稳的判定,是净收益

那需要程度区分怎么办? 答案不是上 likert,而是拆成多个二元/低基数序数维度。「SAR 质量」拆成:引用忠实度(二元)+ 完整性(0-3,每档有锚定示例)+ 可提交性(二元)。每个维度刻度尽量低、且有锚。aman.ai 的混合刻度示例正是这个思路:Accuracy 二元、Faithfulness 0-2、Coverage 0-3——没有一个维度用满 1-5,需要序数时也压到 3-4 档并逐档锚定。

C. rubric 锚定到 taxonomy

judge 的 rubric 维度不能拍脑袋定,必须锚定到 Day 3 提到的 failure taxonomy(Hamel/Shreya 的错误分析→开放编码→轴向编码产出的 5-6 类失败分类)。逻辑链:

真实/合成 SAR trace
      │ 开放编码(逐条自由标注失败)
      ▼
轴向编码 → 5-6 类 failure taxonomy
  例:F1 幻觉证据 / F2 叙述不完整 / F3 类型学误判
      F4 语气不专业 / F5 遗漏关键风险标记
      │ 映射
      ▼
judge rubric 维度(每个高频语义类失败 → 一个 judge 维度)
  F1 → faithfulness(二元)   ← 但 F1 结构部分已被 Day15 代码型 CITE-EXIST 抓
  F2 → coverage(0-3)
  F4 → professional_tone(二元)

注意分工:F1(幻觉证据)的结构层(引用 id 不存在)由 Day 15 代码型检查 CITE-EXIST 兜死;judge 的 faithfulness 维度只管语义层——「引用的交易确实支撑了这句结论吗」(id 存在但断章取义)。同一类失败,结构归代码、语义归 judge,不重叠不遗漏。

反直觉洞察②(不要为低频失败造 judge 维度):taxonomy 里有 6 类失败,不等于 judge 要有 6 个维度。只有高频 + 需语义判断的失败才值得做成 judge 维度。低频失败做成维度,等于让 judge 在大量正常样本上反复判一个几乎总是 pass 的轴——纯烧 token,还稀释 judge 注意力。低频的交给人工抽检(Day 18)逮即可。

设计要点/决策表

要点决策理由
默认刻度二元 (yes/no),能二元就二元一致率高、可用分类指标、阈值可行动
需程度时拆成多个低基数序数维度(≤4 档)+ 逐档锚定避免 1-5 的相邻边界噪声
禁用刻度单一「整体 1-5 分」边界多、无锚、与人工 κ 低
rubric 来源锚定 failure taxonomy 的高频语义类评的是真实失败,不是想象的维度
与代码型检查分工结构归代码、语义归 judge,同类失败分层faithfulness:id 存在性归代码,语义支撑归 judge
输出强制 JSON schema可代码解析、进 evalBaseline 聚合

对本项目的落地

  • 新建 src/aml/judgeRubric.ts:导出 buildJudgePrompt(case, sar) → string,按 A 节五段组装;rubric 维度为 faithfulness(二元)、coverage(0-3,每档内嵌锚定示例片段)、submittable(二元)。输出 schema 固定为 { faithfulness: boolean, coverage: 0|1|2|3, submittable: boolean, rationale: string }
  • 维度选取依据 taxonomy:W2 在 agent-v2 真实 traces + 66 案合成 SAR 上跑开放编码→轴向编码,产出 5-6 类 failure taxonomy;只把其中高频语义类升格为 judge 维度(C 节),低频留给 Day 18 人工抽检。
  • 与 Day 15 不重叠faithfulness 的引用存在性已由 src/aml/evalChecks.tsCITE-EXIST 兜死,judge 只评「引用是否语义支撑结论」;避免双层重复评同一结构失败。
  • 接入 evalBaseline:judge 输出的二元/序数分可被 src/aml/evalBaseline.ts 同款方式聚合(judge 判「不可提交」的案件数、coverage 均档分布),但judge 进 CI 前必须先过 Day 17 的校准门(judge×人工 Cohen's κ ≥ 阈值),未校准的 judge 分只记录不阻断。
  • 诚实标注judgeRubric.ts 头注明确——W1-W2 为 rule-template SAR,judge 用于评测该模板输出的语义质量;P3 接入真实 LLM 生成 SAR 后,judge 评测对象切换为 LLM 输出,rubric 维度不变。

参考资料

  1. aman.ai — LLM-as-a-Judge / Autoraters primer:五段式 judge prompt(角色/标准/锚定示例/待评对象/输出格式);混合刻度示例(Accuracy 二元、Coverage 0-3、Faithfulness 0-2、Clarity 1-5);anchored examples 作为 calibration references 降方差 (2026)
  2. eugeneyan — Evaluating the Effectiveness of LLM-Evaluators (aka LLM-as-Judge):「where possible, I have my evaluators return binary outputs…improves model performance while making it easier to apply classification metrics」;对相关系数指标持怀疑;few-shot 对 label/顺序/数量敏感不稳 (持续更新)
  3. SurePrompts — LLM-as-Judge: A Practical Guide to Automating Prompt Evaluation 2026 (2026)
  4. Langfuse — LLM-as-a-Judge 文档(rubric + 结构化输出实践)(2026)
  5. 本仓库 src/aml/types.tsSarDraft/TypologyAssessment 契约)、src/aml/sarDraft.ts(6 段 5W1H heading)(2026-06)

SOTA 检查 (2026-06-11)

  • 四/五段式 judge prompt 是 2026-06 的主流结构:aman.ai、SurePrompts、Langfuse、Confident AI 口径收敛——角色+rubric+锚定示例+结构化输出是标配;本日 WebSearch 未见替代结构。
  • 「二元优于 likert」是实践共识但非铁律:eugeneyan 是代表性倡导者;近期 arXiv(如 2512.01020 法律推理 issue-based rubric)也指出「粗 likert 一次性评整条不如 issue-based 拆分」,与本笔记「拆成多个低基数维度」同向。引用时区分:这是工程经验+小样本研究,非大规模 RCT。
  • judge 自身需校准方可信:本笔记的二元/序数分必须过 Day 17 的 Cohen's κ 校准门才进 CI——judge 分数不是终点,校准才是。
  • 过时认知警示:「让 GPT 打个 1-10 分就当评测」是 2024 早期做法,已被「低基数+锚定+校准」取代;反向警惕「二元就万能」——需要程度区分的场景仍要序数维度,只是压低基数。
  • 待跟踪:W2 taxonomy 产出后,确定 judge 实际上几个维度;W3 用真实数据测二元 vs 序数维度的复评一致率,回填 B 节「设计目标基线」为实测值。