Skip to content

LLM 作为评审者的校准

用一个或多个 LLM 评审者自动标注数据,然后进行一次盲测的人工校准,以衡量准确率、一致性和校准误差。用一套可辩护、可复现的工作流回答「我该信任这个 LLM 评审者吗?」

评审者校准会用一个或多个 LLM 评审者自动标注你的数据,然后将它们与盲测的人工标签进行校准,让你能够量化在多大程度上可以信任一个 LLM 评审者。你编写一段评审者提示词、选定模型,Potato 会对你的数据用每个模型采样 k 次。随后你在看不到模型答案的情况下对一个样本进行盲标,Potato 会报告每个模型的准确率、人↔模型与模型↔模型的一致性、校准误差以及混淆矩阵。

用 LLM 来评判模型输出在如今的智能体与模型评估中已很常见,但只有当你知道一个评审者在多大程度上贴合人类判断时,它才真正有用。校准正是让这种信任变得可辩护的测量步骤。

工作原理

text
SETUP → GENERATING → HUMAN_CALIBRATION → REPORT → COMPLETED
  1. 生成 — 每个模型对每个条目查询 k 次。众数标签即为预测结果;这 k 个样本中与之一致的比例即为该模型的置信度。结果会写入一个专用存储,绝不会混入标注数据,因此人类看不到它们。
  2. 人工校准 — Potato 对已标注的条目抽取一个随机或分层样本,由一名或多名人类标注者通过常规标注界面对它们进行盲标。
  3. 报告 — 指标在人∩模型的交集上计算,并写入输出目录。

由于模型标签存放在独立的存储中且绝不会注入界面,盲测是结构上保证的,而不是依赖标注者的自律。

快速开始

从仓库根目录运行随附的示例:

bash
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

配置

yaml
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 次采样的投票比例),并让人类严格保持盲测。评审者对齐单个评审者与既有的人工黄金标签进行校准,在标注过程中内联展示其裁定,并围绕迭代评分标准而构建。当你在甄选候选评审者时,选择校准;当你针对固定的黄金标签集调校某一个评审者时,选择对齐。

相关内容

如需了解实现细节,请参阅源文档