LLM 作为评审者的校准
用一个或多个 LLM 评审者自动标注数据,然后进行一次盲测的人工校准,以衡量准确率、一致性和校准误差。用一套可辩护、可复现的工作流回答「我该信任这个 LLM 评审者吗?」
评审者校准会用一个或多个 LLM 评审者自动标注你的数据,然后将它们与盲测的人工标签进行校准,让你能够量化在多大程度上可以信任一个 LLM 评审者。你编写一段评审者提示词、选定模型,Potato 会对你的数据用每个模型采样 k 次。随后你在看不到模型答案的情况下对一个样本进行盲标,Potato 会报告每个模型的准确率、人↔模型与模型↔模型的一致性、校准误差以及混淆矩阵。
用 LLM 来评判模型输出在如今的智能体与模型评估中已很常见,但只有当你知道一个评审者在多大程度上贴合人类判断时,它才真正有用。校准正是让这种信任变得可辩护的测量步骤。
工作原理
SETUP → GENERATING → HUMAN_CALIBRATION → REPORT → COMPLETED
- 生成 — 每个模型对每个条目查询 k 次。众数标签即为预测结果;这 k 个样本中与之一致的比例即为该模型的置信度。结果会写入一个专用存储,绝不会混入标注数据,因此人类看不到它们。
- 人工校准 — Potato 对已标注的条目抽取一个随机或分层样本,由一名或多名人类标注者通过常规标注界面对它们进行盲标。
- 报告 — 指标在人∩模型的交集上计算,并写入输出目录。
由于模型标签存放在独立的存储中且绝不会注入界面,盲测是结构上保证的,而不是依赖标注者的自律。
快速开始
从仓库根目录运行随附的示例:
python potato/flask_server.py start examples/ai-assisted/judge-calibration/config.yaml -p 8000 --debug- 打开
http://localhost:8000/judge_calibration/admin进行配置和运行。 - 生成完成后,在
http://localhost:8000/annotate对样本进行盲标。 - 点击 构建报告,然后打开
http://localhost:8000/judge_calibration/report。
该示例使用本地 Ollama 模型,因此无需 API 密钥。请先启动 Ollama 并运行 ollama pull llama3.2:3b。
配置
judge_calibration:
enabled: true
prompt: | # supports {text}, {labels}, {description}
You are an impartial expert annotator. Classify the sentiment as exactly
one of: positive, negative, neutral.
models:
- endpoint_type: openai # openai | anthropic | ollama | vllm | gemini | openrouter | huggingface
model: gpt-4o-mini
api_key: ${OPENAI_API_KEY} # env-var expansion supported
temperature: 0.7 # must be > 0 so the k samples vary
- endpoint_type: ollama
model: llama3.1:8b
base_url: http://localhost:11434
temperature: 0.7
k_samples: 5 # samples per model per item
max_items: 1000 # cap on items the LLMs label (null = all)
sampling:
strategy: stratified # random | stratified | all
sample_size: 200 # how many items humans blind-label
seed: 42
human:
num_raters: 1 # 1 = solo researcher; N adds human-human IAA
gold: single # single | majority
schemas: [sentiment] # annotation_scheme names to evaluate ([] = all)
output:
dir: judge_calibration_output你可以在管理向导中覆盖其中大部分项并重新运行。
请设置 temperature > 0。当 k_samples > 1 且温度为 0 时,各次采样完全相同,置信度始终为 1.0,校准报告也就失去意义;此时 Potato 会在启动时发出警告。
支持的标注类型
| 类型 | 状态 | 指标 |
|---|---|---|
radio / select | 已支持 | 准确率、P/R/F1、Cohen/Fleiss κ、Krippendorff α、ECE、混淆矩阵 |
likert | 已支持 | 以上各项,外加 MAE 和有序 Krippendorff α |
multiselect | 已支持 | 逐标签的 P/R/F1、平均 Jaccard、精确匹配准确率、校准 |
span | 实验性 | 基于 IoU 匹配的 P/R/F1、平均 IoU、span-F1 一致性、span 级校准 |
span 支持会将评审者在 k 次采样中得到的字符偏移跨度聚类,并通过交并比与黄金标签匹配;其启发式方法是有方向性的,而非精确的。
报告包含哪些内容
- 每个模型相对人工黄金标签的准确率、精确率、召回率、F1。
- 拆分为人↔模型、模型↔模型和人↔人三类配对的 Cohen κ。
- 跨所有评分者的 Fleiss κ 和 Krippendorff α。
- 期望校准误差 (ECE)、可靠性分箱以及 Brier 分数,展示投票比例置信度对正确性的贴合程度。
- 每个模型相对人工黄金标签的一个混淆矩阵。
指标在交集上计算:模型和人类都标注过的条目,并在抽取了校准样本时限定在该样本内。
输出会写入 output.dir 之下:llm_labels.jsonl(每个模型、条目和方案各占一行)、report.json,以及一份可读性强的 report.html。
评审者校准 vs. 评审者对齐
评审者校准使用多个评审者、经验性置信度(k 次采样的投票比例),并让人类严格保持盲测。评审者对齐将单个评审者与既有的人工黄金标签进行校准,在标注过程中内联展示其裁定,并围绕迭代评分标准而构建。当你在甄选候选评审者时,选择校准;当你针对固定的黄金标签集调校某一个评审者时,选择对齐。
相关内容
- 评审者 ↔ 人类对齐 — 单评审者内联校准
- 独立模式 — 完整的人机协同标注
- 标注者间一致性指南 — 深入讲解 kappa 与 alpha 指标
如需了解实现细节,请参阅源文档。