想象你是体操世锦赛的裁判长,手下有一群聪明绝顶却毫无经验的新裁判。他们懂规则、反应快,但若你只扔给他们一句“请公正打分”,他们大概率会打出五花八门的分数。你必须提前发给他们一本《裁判手册》:先写明“你是国际体操联合会注册裁判”(角色),再规定“你负责给落地动作打分”(任务),接着是“在评分表上填写动作难度与完成度”(格式),最后补充“本次比赛的难度系数标准”(上下文)。当这些细节从“心照不宣的默契”变成“白纸黑字的操作手册”时,裁判的评分才可能公平一致。 在AI世界里,这位“新裁判”就是大语言模型(LLM),而《裁判手册》就是评分Prompt。LLM-as-Judge(LLM当裁判)就是用大模型自动评估其他模型的输出质量,而评分Prompt的设计水平,直接决定了这位AI裁判打分是否稳定、是否公正、是否可复现。本文将带你为AI裁判编写一本“不打糊涂分”的手册:从四段式框架、评分标准、示例选取、锚点校准,到验证方案、局限认知与可扩展设计。

岗位关联

对AI从业者而言,掌握评分Prompt设计意味着你能用LLM自动完成大规模评测,替代昂贵的人工标注,并让每一次评测结果都可信、可复现、可迭代。

目录
  1. 可视化演示
  2. 1. Prompt结构设计
  3. 2. 评分标准描述
  4. 3. Few-shot示例选择
  5. 4. 评分锚点定义
  6. 5. 效果验证方案
  7. 6. 评测指标局限
  8. 7. 可扩展设计
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示LLM-as-Judge评分Prompt四大组件结构、四种评分策略类型对比与位置偏见缓解机制,交互切换评分类型查看评判流程差异。

本节配有交互动效(进入视口后自动加载,约 3KB)。

评分Prompt四大组件结构 角色设定:定义Judge身份与评判职责 评分锚点:每个分数段附具体描述与示例 Prompt = Role + Criteria + Examples + Anchors + Target 完整评分Prompt包含角色设定、评分标准、few-shot示例和评分锚点四个核心组件

1. Prompt结构设计

裁判手册开篇必须写清四件事:你是谁、你要干什么、判完要填什么表、比赛有什么背景规则。缺一项,新裁判就会凭“感觉”发挥——有的裁判把自己当选手的教练,有的干脆不填评分表。LLM裁判也一样,没有清晰结构的Prompt,它就会以“聊天助手”的姿态回应你,而不是“评测员”。

在LLM-as-Judge中,手册的四件事对应评分Prompt的四大结构组件:系统角色设定(你是谁)、任务指令(你要干什么)、输出格式(你返回什么)、上下文传递(你依据什么)。角色设定通常写在System Message里,例如“你是一位公正严苛的AI评测专家”;任务指令明确“对以下问答对的回答质量从完整性和准确性打分”;输出格式要求JSON结构,包含分数字段和简短理由;上下文传递被评测的问题、参考答案和待打分回答。

这四部分互相咬合:没有角色设定,模型姿态错误;没有输出格式,模型可能输出一段散文而不是可解析的分数;没有上下文,模型无从评判。综合分的计算正是基于这种结构化输出展开:

回到比喻:有了四段式框架,新手裁判翻到手册第三章就知道“哦,我要填这张评分表”。结构固定,打分才可能一致。这是后续一切校准的基石。

score=∑i=1nwi×si\displaystyle \text{score} = \sum_{i=1}^{n} w_i \times s_i
通俗理解:综合分就是每个维度按重要性加权后的总和。权重越高,该维度对总分的影响越大。
  1. 维度权重 $w_i$表示第 $i$ 个评分维度(如相关性、完整性)在总分中的占比。Prompt里写“相关性最重要”时,$w_i$ 就对应较大的值,所有权重之和通常为1。
    wi∈[0,1],∑i=1nwi=1\displaystyle w_i \in [0,1],\quad \sum_{i=1}^{n} w_i = 1
  2. 维度得分 $s_i$LLM裁判对第 $i$ 个维度的打分,由评分标准描述和锚点决定。若标准模糊,$s_i$ 会出现较大随机波动。
    si∈{1,2,3,4,5}\displaystyle s_i \in \{1, 2, 3, 4, 5\}
  3. 加权求和 $\sum$把每个维度的得分乘上权重再累加,得到综合分。Prompt的“输出格式”通常要求模型先输出各维度 $s_i$,再输出总分,以便追溯。

2. 评分标准描述

只给裁判一本“手册框架”还不够。你告诉裁判“按相关性打分”,但裁判可能想:相关性是啥?是字数吗?是提到关键词吗?就像菜谱只写“加盐少许”,十个厨师能做出十个咸度。要保证标准一致,你必须把“少许”变成“3克”。

评分标准描述要做的正是这件事:把抽象形容词改写成可观察、可计数的具体行为。业界常用行为锚定等级评价(BARS)——给每个分数档写一句“当回答出现某类行为时给这个分”。1分:回答完全离题或空白;3分:点出核心概念但缺少论据;5分:论点、论据齐全且逻辑自洽。同时配以负面清单:列出必须扣分的情形,如“出现编造引用直接0分”。

语言校准强调用词一致性:避免“还不错”“有点差”这类模糊词,改用“包含2个以上支撑证据”这类可计数表述。当打分依据变成数学上的“达标程度”,模型就比较难各说各话了:

这就像米其林指南从“好吃”进化到“菜品呈现5种以上当季食材”,把主观感觉拆成可数的清单。LLM裁判由此从“玄学打分”变成“按图索骥”。

μ(x)={0,x≤ax−ab−a,a<x<b1,x≥b\displaystyle \mu(x) = \begin{cases} 0, & x \le a \\ \dfrac{x - a}{b - a}, & a < x < b \\ 1, & x \ge b \end{cases}
通俗理解:这是一个“连续及格线”——观察值低于下限全扣,高于上限满分,中间按比例得分。
  1. 下限 $a$ 与上限 $b$评分标准中某档位的最低与最高要求。例如“良好档”要求回答包含2~4个支撑证据,则 $a=2, b=4$。
    a=档位最低证据数,b=档位最高证据数\displaystyle a = \text{档位最低证据数},\quad b = \text{档位最高证据数}
  2. 观察值 $x$裁判数出的实际证据个数,是模型可从回答中提取的客观特征。
    x=回答中实际包含的支撑证据数\displaystyle x = \text{回答中实际包含的支撑证据数}
  3. 达标程度 $\mu(x)$$x$ 落在 $[a,b]$ 内时达标程度线性增长;低于 $a$ 完全不达标,高于 $b$ 完全达标。这就是把“还不错”变成数学上的连续程度。

3. Few-shot示例选择

裁判手册再厚,也比不上一两份“样板卷”。新手裁判拿到往年某场比赛的三份答卷和对应官方分数,心里顿时有底:原来7分水平长这样,3分水平长那样!这就是示例的魔力。

在评分Prompt中,few-shot示例是在Prompt末尾附上的“标准参考答案”:一些问题、对应的回答样例、以及该样例应得的分数。LLM裁判会模仿示例的分数范围和严格程度去打分。示例选取有四个原则。

一是覆盖多样:高分、中分、低分都要有,避免模型往示例集中的区间打分;二是正反对照:既有优秀回答样例,也有明显差的回答,明确两个极端的边界;三是边界案例:选一两个“好中带差”的暧昧例子,帮助模型在模糊地带稳住判断;四是数量适中:一般3~5个足够,再多会占用上下文且拖慢推理。示例多样性可以用信息熵量化:

就像给裁判准备样卷时“从满分到零分都要有”,他才知道分数分布的真实全貌,而非只见过高分卷就把所有答卷都打高分。

H(X)=−∑j=1kpjlog⁡pj\displaystyle H(X) = -\sum_{j=1}^{k} p_j \log p_j
通俗理解:熵越大,示例在不同分数档分布得越均匀;全是5分示例时熵最低,裁判也会全打5分。
  1. 频率 $p_j$第 $j$ 个分数档在示例中出现的频率。若全部示例都打5分,$p_5=1$,熵为0。
    pj=njN\displaystyle p_j = \frac{n_j}{N}
  2. 信息量 $-\log p_j$概率越小的事件,发生时携带的信息量越大。低分示例选得越少,模型学到的“低分该长什么样”越少。
    pj→0⇒−log⁡pj→+∞\displaystyle p_j \to 0 \Rightarrow -\log p_j \to +\infty
  3. 熵 $H(X)$衡量示例集合的多样性。熵值越高,模型越不容易把所有答案都打成一个档位。

4. 评分锚点定义

体育比赛裁判打分前常开“锚点校准会”:大家一起看一段录像,各自打分后讨论“这一跳到底值9.5还是9.6”,达成共识后,这段录像就是全体裁判心中的“锚”。评分锚点正是这个机制的AI版。

锚点是几个经过人工权威打分的样例及其分数。它和few-shot的区别在于:锚点不依赖“模仿”,而是让模型把当前答案与锚点答案做心理距离比较。锚点设计有四个要点:锚点数量——每个分数档设1~2个,档位少则不需太多;锚点描述——每个锚点必须写出该分数档的典型特征;一致性——不同档位锚点要能清晰区分,不能模棱两可;偏差控制——当裁判系统性打高分时,用“偏高锚点”来纠偏。纠偏过程可表示为:

锚点像一把“标准尺”。AI裁判如果给9.6分的录像只打了9.2分,那就把它给出的所有分数都放宽0.4分。这就是用已知答案校准未知判断。

sfinal=sinitial+λ×(sanchortarget−sanchorobserved)\displaystyle s_{final} = s_{initial} + \lambda \times (s_{anchor}^{target} - s_{anchor}^{observed})
通俗理解:如果AI裁判给锚点样例打偏了(比如给9.6分的锚点只打了9.2分),说明它整体偏严,所有分数都要相应放宽。
  1. 初始分 $s_{initial}$模型根据通用标准给出的原始综合分。
    sinitial=∑iwisi\displaystyle s_{initial} = \sum_{i} w_i s_i
  2. 目标锚分 $s_{anchor}^{target}$锚点样例的人工权威分数,是校准的“正确答案”。
    sanchortarget=人工标注的锚点分数\displaystyle s_{anchor}^{target} = \text{人工标注的锚点分数}
  3. 观测锚分 $s_{anchor}^{observed}$LLM裁判当前对锚点样例的打分,其与非零偏差揭示了裁判的系统性偏松或偏紧。
    sanchorobserved=LLM对锚点样例的实际打分\displaystyle s_{anchor}^{observed} = \text{LLM对锚点样例的实际打分}
  4. 修正强度 $\lambda$控制纠偏力度,太大会矫枉过正,太小则纠偏乏力,通常在验证集上调节。
    λ∈[0,1]\displaystyle \lambda \in [0, 1]

5. 效果验证方案

手册写完了,裁判也培训了,实际表现如何?你得组织“模拟赛”:让AI裁判和资深人工裁判背对背给同一批答卷打分,再看两边是否一致。如果AI裁判自己今天给9分明天给7分,这手册就是失败的。

效果验证的核心是量化一致性。Cohen's Kappa系数是最常用的指标,它剔除了“随机碰巧一致”的成分,比简单准确率更严格。验证流程是:构造100~200份答案的小型标注集 → 人工给出参考分数 → 用候选Prompt跑出AI分数 → 计算Kappa → 做误差分析,观察AI在哪些分数段、哪些题型上偏差最大 → 针对性修改Prompt再迭代。Kappa的计算公式:

Kappa就像模拟赛的“判分契合度报告”。AI裁判和资深裁判十场九场给分一致,说明手册训练到位;经常各执一词,就是时候回去改手册了。

κ=po−pe1−pe\displaystyle \kappa = \frac{p_o - p_e}{1 - p_e}
通俗理解:Kappa是把“两人实际一致的比率”扣掉“靠运气一致的比率”后的真实一致程度。
  1. 观测一致率 $p_o$AI裁判与人工裁判在 $N$ 份答案上打分完全相同的比例。
    po=1N∑i=1N1(yiAI=yihuman)\displaystyle p_o = \frac{1}{N}\sum_{i=1}^{N} \mathbb{1}(y_i^{AI} = y_i^{human})
  2. 随机一致率 $p_e$若两位裁判独立按各自分数分布随机打分,碰巧一致的概率,由各分数档频率乘积求和得到。
    pe=∑j=1kpjAI×pjhuman\displaystyle p_e = \sum_{j=1}^{k} p_j^{AI} \times p_j^{human}
  3. Kappa系数 $\kappa$$\kappa=1$ 完全一致,$\kappa>0.8$ 高度一致,$0.6\sim0.8$ 较强一致,低于0.4则Prompt需大改。
    κ∈[−1,1]\displaystyle \kappa \in [-1, 1]

6. 评测指标局限

这套打分体系并非万能。AI裁判有时会表现出“职业病”:排在第一位的答案容易手下留情,写满一整页的答案被当作“很有料”,自己公司模型生成的答案不自觉地加分。这些雷区,一场模拟赛未必能发现。

研究(如Zheng et al., 2023)归纳了三类典型偏差:位置偏差——LLM倾向于给列表中靠前的答案更高分,调换顺序后分数可能反转;长度偏差——LLM偏爱更长的回答,即使它啰嗦且信息量低;自我偏好——LLM给同源模型生成的答案打高分。这意味着Kappa很高也可能是“稳定地错”。检测位置偏差可以用Spearman秩相关:

应对策略包括:同一对答案做AB交换各评一次后取平均;在Prompt中明确“不要因为答案长度而加分”;用多个不同源模型组成联合裁判互相校验。指标只是仪表盘,你得知道哪些红灯是假报警。

ρ=1−6∑i=1ndi2n(n2−1)\displaystyle \rho = 1 - \frac{6 \sum_{i=1}^{n} d_i^2}{n(n^2 - 1)}
通俗理解:把AI对答案的偏好排名与真实质量排名做对比,像检查裁判有没有“地域偏见”。
  1. 名次差 $d_i$第 $i$ 个答案在“AI偏好排名”与“真实质量排名”中的名次之差。
    di=RiAI−Ritrue\displaystyle d_i = R_i^{AI} - R_i^{true}
  2. 答案数 $n$参与排序对比的答案总数,$n$ 越大,秩相关越稳定。
    n=对比组答案数\displaystyle n = \text{对比组答案数}
  3. 系数 $\rho$接近+1表示AI排序与真实质量高度一致;接近0表示排序几乎被位置、长度等因素污染。
    ρ∈[−1,1]\displaystyle \rho \in [-1, 1]

7. 可扩展设计

一届比赛的评价手册,下一届还能用吗?新题型出现、选手整体水平提升、甚至从体操换成跳水——如果手册所有规则都写死在一大段话里,改起来就是灾难。可扩展设计就是让评分Prompt具备模块化、可演进的架构能力。

做法是把Prompt拆成固定的骨架与可替换的模块:骨架包含角色设定与基础指令(基本不变),模块包括评分维度表、锚点库、few-shot示例库——每个模块独立维护,修改时只替换对应模块。版本管理用类似Git的方式记录每次修改对Kappa的影响,保存一份“评测配置清单”。新模型适配要求Prompt使用通用的人类可读语言,不过度绑定特定模型的表达习惯。跨领域迁移则通过替换维度定义和锚点库,把客服问答的评分Prompt复用到代码生成或翻译评测中。新旧能力叠加可写成加权融合:

好的裁判手册像一套积木:底座牢固通用,上面的模块随赛制随时拼装替换。下一次评测规则变了,你只需换一块带“新题型评分标准”的积木,而不是扔掉整本手册。

scorefinal=α×scorebase+β×scorenew,α+β=1\displaystyle \text{score}_{final} = \alpha \times \text{score}_{base} + \beta \times \text{score}_{new}, \quad \alpha + \beta = 1
通俗理解:基础能力用旧模块,新领域用新模块,两者按权重融合。迁移到新领域时只需调大新模块权重。
  1. 基础分 $\text{score}_{base}$骨架中通用维度(清晰度、相关性等)的综合分。
    scorebase=∑i=1mwisi\displaystyle \text{score}_{base} = \sum_{i=1}^{m} w_i s_i
  2. 新增分 $\text{score}_{new}$新领域特有维度(如代码可执行性、翻译忠实度)的得分,由新模块计算。
    scorenew=∑j=1kwj′sj′\displaystyle \text{score}_{new} = \sum_{j=1}^{k} w'_j s'_j
  3. 融合权重 $\alpha, \beta$新旧模块的权重和为1。当迁移到新领域时增大 $\beta$,无需改动基础骨架。
    β→1⇒新领域特征占主导\displaystyle \beta \to 1 \Rightarrow \text{新领域特征占主导}

AI 应用场景

大模型训练数据清洗中的自动质量评分

阶段:数据预处理 / 训练

解决的问题:从互联网爬取的海量问答对质量参差不齐,人工筛选百万级数据成本极高。传统规则去重只能过滤明显垃圾,无法判断语义质量。

具体案例:某团队从爬取的1000万条对话中采样5万条,让LLM裁判按评分Prompt从“有用性、无害性、真实性”三维度各打1~5分。Prompt加入了每个维度的行为锚定描述和负面清单,并配置了低分和高分锚点样例。筛选出Top 30%高质量数据用于SFT后,下游任务指标提升了约8%。

检索增强生成(RAG)系统的自动评测

阶段:模型评测 / RAG评估

解决的问题:RAG系统的回答融合了检索文档与生成内容,需要同时评估“检索相关性”和“生成忠实度”。传统BLEU/ROUGE只看字面重合,无法覆盖语义质量。

具体案例:评测团队设计了双阶段评分Prompt:先让LLM裁判给检索文档相关性打0~5分,再给生成回答的忠实度打分。锚点库中存放了“忠实但冗余”“不忠实但流畅”等典型样例,用于校准AI裁判的偏好。2000条测试集跑完后,与人工评测的Kappa达0.83。

新模型发布前的“沙盒裁判”验收

阶段:模型发布前验收

解决的问题:新模型每次迭代都需要快速、低成本、可复现的评估基准。B站等团队用权威大模型充当“沙盒裁判”,为候选模型的开放域生成质量打分。

具体案例:某团队选出涵盖数学、编程、写作的300道评测题,将评分Prompt拆成“通用维度骨架+分领域锚点库”模块。发布前自动跑分并输出结构化JSON结果,报告附带Kappa系数和偏差分析。上线后从收集的用户反馈中抽检了500条,人工复核一致率达87%。

Python 演示

python84 行
# -*- coding: utf-8 -*-"""LLM-as-Judge 评分Prompt设计演示: 构建Prompt并模拟裁判打分"""  def build_prompt(answer, anchors, weights):    """组装评分Prompt, 展示结构设计/评分标准和锚点三大要素"""    dimension_text = "、".join(f"{name}(权重{w})" for name, w in weights.items())    anchor_text = ";".join(        f"{score}分:{desc}" for score, desc in sorted(anchors.items())    )    return (        "你是一位公正严谨的AI评测裁判,请按以下维度打分。\n"        "评分维度:" + dimension_text + "\n"        "评分锚点:" + anchor_text + "\n"        "待评分回答:" + answer + "\n"        "请只输出一个0-5的整数分数。"    )  class JudgeScorer:    """模拟LLM裁判: 根据锚点校准给答案打分"""     def __init__(self, anchors, weights):        self.anchors = anchors        self.weights = weights        self._count = 0     def score(self, answer):        """启发式模拟: 用答案特征计算维度分, 再用锚点离散化"""        self._count += 1        length = len(answer)        has_example = "例如" in answer or "比如" in answer        has_conclusion = "总之" in answer or "因此" in answer         relevance = min(5, 2 + length / 20)        completeness = min(5, 2 + has_example * 2 + int(has_conclusion))        clarity = min(5, max(1, 1 + 4 * (1 - abs(length - 100) / 100)))         total = (            relevance * self.weights["相关性"]            + completeness * self.weights["完整性"]            + clarity * self.weights["清晰度"]        )        final_score = 1        for anchor_score in sorted(self.anchors.keys()):            if total >= anchor_score:                final_score = anchor_score        return final_score  def cohen_kappa(rater1, rater2, n_classes=6):    """Cohen's Kappa一致性系数: 剔除随机一致后的真实一致率"""    assert len(rater1) == len(rater2)    n = len(rater1)    observed = sum(1 for a, b in zip(rater1, rater2) if a == b) / n    p1 = [rater1.count(c) / n for c in range(n_classes)]    p2 = [rater2.count(c) / n for c in range(n_classes)]    expected = sum(p1[c] * p2[c] for c in range(n_classes))    if expected == 1:        return 1.0    return (observed - expected) / (1 - expected)  if __name__ == "__main__":    anchors = {3: "回答笼统、缺少细节", 5: "结构完整、有例子有结论"}    weights = {"相关性": 0.4, "完整性": 0.3, "清晰度": 0.3}    judge = JudgeScorer(anchors, weights)     answers = [        "因为数据量不足,模型会欠拟合。例如训练集只有100条时误差很大,因此需要扩充数据。总之数据越多越好。",        "答案不完整,缺少实验支撑。",        "该方法复杂度为O(n^2),在大规模数据上效率较低。可以改用哈希表优化。",        "好的。",    ]    human_scores = [4, 2, 5, 1]     print("=== 示例评分Prompt ===")    print(build_prompt(answers[0], anchors, weights))    print()    ai_scores = [judge.score(a) for a in answers]    print("AI裁判分数:", ai_scores)    print("人工参考分数:", human_scores)    kappa = cohen_kappa(ai_scores, human_scores)    print("Cohen's Kappa:", round(kappa, 3))
目的:演示如何构建一个包含结构设计和锚点的评分Prompt,并用模拟AI裁判打分计算与人工评测的Cohen's Kappa一致性。
  1. dimension_text = "、".join(f"{name}(权重{w})" for name, w in weights.items())把维度权重拼接成Prompt文本,让AI裁判知道每个维度占比多少。
  2. return (...多行字符串... )展示评分Prompt的骨架:角色声明 + 评分维度 + 锚点 + 待评答案 + 输出要求。
  3. relevance = min(5, 2 + length / 20)模拟“长度偏差”:答案越长相关分越高,这是评测指标局限性的体现。真实场景中Prompt需明确禁止这种倾向。
  4. total = relevance * self.weights["相关性"] + ...加权求和计算综合分,对应正文公式 score = Σ(wi × si)。
  5. final_score = 1; for anchor_score in ... if total >= anchor_score: final_score = anchor_score锚点校准:把连续总分离散到最近锚点分数档,对应正文的锚点纠偏思想。
  6. observed = sum(1 for a, b in zip(rater1, rater2) if a == b) / n计算两位裁判的观测一致率 p_o,即Kappa公式的分子项。
  7. expected = sum(p1[c] * p2[c] for c in range(n_classes))计算随机碰巧一致的概率 p_e,Kappa公式的分母项。
  8. return (observed - expected) / (1 - expected)输出Kappa系数,对应正文 κ=(p_o−p_e)/(1−p_e)。

常见误区

误区“只要把评分规则写得尽可能长、尽可能细,LLM裁判就会打分越准。我恨不得把每一条打分规则都规定死,让模型没有自由发挥余地。”

正解详细要有边界。过度冗长的Prompt会引入信息噪声和自相矛盾的条款,模型可能忽视关键指令,或在互相冲突的规则间摇摆。简洁、结构化的Prompt比冗长但混乱的描述更可靠。核心原则是每条规则都有可操作性,而非堆砌细节。

为何常见:人们直觉认为细节越多歧义越少,但LLM的注意力窗口和指令跟随能力有限,冗余信息会稀释关键指令的权重。

误区“多放几个示例模型就知道了标准,我放的全是最优秀的答案,这样AI才知道什么是好的。”

正解示例过多会超出上下文窗口并拖慢推理;全是高分示例会产生锚定效应,让裁判倾向于打高分,压缩分数区分度。正确做法是均衡覆盖高、中、低分,同时包含正反案例,必要时加入边界案例。

为何常见:人习惯通过“多看优秀范例”学习,但LLM裁判的示例既调节“尺度”也调节“分布”,单边示例会让分数整体偏移。

误区“锚点定了就永远不改,这样历次评测结果才可比较。改锚点会让之前的评测失去意义。”

正解锚点需要随评测场景演进。当新模型能力普遍提升,旧“5分”标准可能只配得上新“3分”;当发现AI裁判系统性偏离预期时,锚点也要调整。正确做法是记录锚点版本,保证同一次对比使用同一版本,但允许版本之间升级。

为何常见:混淆了“评测稳定性”与“标准过时”。可比较性要求版本内不变,但不代表版本之间不能升级。

误区“AI裁判和人工裁判Kappa到0.85了,评分Prompt已经完美,不用再改了。”

正解Kappa高只说明两者一致性强,但可能“稳定地错”。如果人工标注本身带有偏见,AI也会学到这些偏见并稳定复现。仍需检查偏差分析:位置偏差、长度偏差、自我偏好都可能藏在高Kappa背后。

为何常见:把量化指标等同于质量保证,忽略了指标本身的盲区。Kappa是必要条件,不是充分条件。

误区“LLM-as-Judge是万能的,自动化评测上线后,人工标注团队可以解散了。”

正解LLM裁判仍存在位置偏差、自我偏好等系统性缺陷;在创意写作、人文判断等高主观任务上,其与人类判断的一致性有限。实践落地通常采用“LLM初筛 + 人工抽检”的混合模式,既保证效率又守住质量底线。

为何常见:高估AI能力而低估评测任务的主观性与复杂性。评测不是“打标签”,而是“做判断”,判断标准本身也需要人类持续校准。

面试题

Q1. LLM-as-Judge是指什么?

单选题 · easy

  • A.用LLM生成裁判文书
  • B.用大模型充当评审裁判← 正确答案
  • C.用LLM训练裁判模型
  • D.用裁判数据微调LLM

答案:B。LLM-as-Judge的核心是用大语言模型作为评测裁判,去评估其他模型输出的质量。A是司法文书生成,C/D是用裁判数据训练或微调模型,都不是“用LLM当裁判”的定义。这就像聘请一位有经验的老裁判来给新选手打分,而不是让选手自己去写裁判手册。

Q2. 评分Prompt中加入“负面清单”的主要目的是?

单选题 · easy

  • A.列出所有正确参考答案
  • B.写明必须扣分的情形← 正确答案
  • C.让Prompt内容变得更长
  • D.替代few-shot示例的作用

答案:B。负面清单是把“什么情况必须扣分”写明,比如“编造引用直接0分”。它不是用来列正确答案的,也不是凑长度或替代示例。就像裁判手册里写明“落地出界扣0.5分”一样,负面清单给AI裁判划出明确的扣分红线,减少标准模糊。

Q3. 评分锚点在评分Prompt中扮演什么角色?

单选题 · mid

  • A.增加模型随机输出
  • B.提供分档参照样板← 正确答案
  • C.降低推理过程耗时
  • D.替代人工评测标注

答案:B。锚点是几个带权威分数的样例,LLM裁判拿当前答案与锚点做比较来校准分数。它不增加随机性,也不涉及推理速度。锚点解决的是“分数档位长什么样”的问题,就像体操裁判赛前一起看录像校准“9.6分该是什么样”。

Q4. 设计few-shot示例时,以下哪种选取策略最合理?

单选题 · mid

  • A.全部选取高分示例
  • B.全部选取零分示例
  • C.覆盖高中低分数段← 正确答案
  • D.随机抽取一个样例

答案:C。示例必须覆盖高、中、低多个分数档,模型才能学到完整的分数分布。全是高分会让裁判整体手松,全是零分则过于苛刻,随机一个样例缺乏代表性。就像给裁判的样板卷必须覆盖从满分到零分的各种水平,他打分才不会偏离真实分布。

Q5. AI裁判与人工裁判的Cohen's Kappa系数达到0.82,以下解读正确的是?

单选题 · mid

  • A.两位裁判基本完全独立
  • B.两位裁判评价高度一致← 正确答案
  • C.AI裁判明显总体偏高
  • D.评测样本数量还不足

答案:B。Kappa>0.8说明AI裁判与人工裁判在剔除随机一致后仍高度一致,这是评分Prompt效果较好的信号。A“完全独立”与高Kappa矛盾;C的高低偏倚需要通过误差分析判断,Kappa本身不反映;D样本量不足与Kappa数值无直接关系。

Q6. LLM裁判的“位置偏差”(Position Bias)指的是?

单选题 · hard

  • A.总是给第一个答案最高分
  • B.偏好给排在前面的答案高分← 正确答案
  • C.只关注答案末尾的内容
  • D.对中间位置答案有明显偏好

答案:B。位置偏差指LLM倾向于给列表中靠前的答案更高分,但不是说“永远给第一个满分”——调换顺序后它可能给新排第一的答案高分。C只关注末尾、D偏好中间都不符合定义。这就像一个裁判对“先上场的选手”天然手下留情,需要AB交换法来检测和纠正。

Q7. 裁判A给5份答案打分为[4,2,5,3,1],裁判B为[4,2,4,3,2]。两人的Cohen's Kappa系数最接近?

单选题 · extreme

  • A.0.33
  • B.0.50← 正确答案
  • C.0.67
  • D.0.75

答案:B。先算观测一致率 p_o=3/5=0.6;再算随机一致率 p_e=Σ(p_A·p_B)=0.2×0+0.2×0.4+0.2×0.2+0.2×0.4+0.2×0=0.2;最后 κ=(0.6−0.2)/(1−0.2)=0.5。Kappa剔除了随机碰巧一致的部分,所以比表面上的60%一致率低。这就像两位裁判虽然60%场次看法相同,但有一部分是“蒙对了”。

Q8. 下列哪些属于LLM裁判的评测指标局限?

多选题 · mid

  • A.位置偏差导致排序失真← 正确答案
  • B.长度偏差导致长答占优← 正确答案
  • C.自我偏好导致自答高分← 正确答案
  • D.计算效率得到大幅提升

答案:ABC。位置偏差、长度偏差、自我偏好是LLM-as-Judge被广泛验证的三类系统性偏差,会在评分中引入与质量无关的噪声。D是自动化评测的优势而非局限。这三类偏差就像裁判的“职业病”,即使Kappa很高也可能是稳定地错,必须通过AB交换、长度归一化、多裁判投票等方式主动防控。

Q9. 提升LLM裁判评分一致性可采用哪些策略?

多选题 · hard

  • A.增加锚点数量← 正确答案
  • B.精选正反示例← 正确答案
  • C.多次采样取平均← 正确答案
  • D.缩短提问长度

答案:ABC。增加锚点可让分数档更清晰,精选正反示例可校准分数分布,多次采样取平均可降低LLM随机波动——三者都提升一致性。D缩短提问长度可能丢失必要上下文,无法提升一致性,反而可能降低评分准确性。这就像给裁判更清晰的评分表、更丰富的样板卷,并让他多复核几遍。

Q10. 评分标准描述的关键要点包括哪些?

多选题 · easy

  • A.维度拆解成可观察行为← 正确答案
  • B.写明扣分负面清单← 正确答案
  • C.使用可计数的语言← 正确答案
  • D.尽可能增加Prompt长度

答案:ABC。评分标准描述的核心是把抽象维度拆成可观察行为、用负面清单写明扣分情形、用可计数语言替代模糊词。D“增加Prompt长度”本身不是目的,冗长无序反而降低质量。就像菜谱写“盐3克”比“盐少许”更能保证每位厨师做出同样的咸度。