Skip to content

Calibración de LLM como juez

Etiqueta tus datos automáticamente con uno o más jueces LLM y luego ejecuta una pasada de calibración humana a ciegas para medir exactitud, concordancia y error de calibración. Responde a «¿debería confiar en este juez LLM?» con un flujo de trabajo defendible y reproducible.

La calibración de jueces etiqueta tus datos automáticamente con uno o más jueces LLM y luego los calibra frente a etiquetas humanas a ciegas, de modo que puedas cuantificar hasta qué punto confiar en un LLM como juez. Escribes un prompt de juez, eliges los modelos y Potato muestrea cada uno k veces sobre tus datos. Luego etiquetas a ciegas una muestra sin ver las respuestas de los modelos, y Potato informa la exactitud por modelo, la concordancia humano↔modelo y modelo↔modelo, el error de calibración y las matrices de confusión.

Usar un LLM para calificar las salidas de los modelos ya es habitual en la evaluación de agentes y modelos, pero un juez solo es útil si sabes hasta qué punto sigue el juicio humano. La calibración es el paso de medición que hace que esa confianza sea defendible.

Cómo funciona

text
SETUP → GENERATING → HUMAN_CALIBRATION → REPORT → COMPLETED
  1. Generación — cada modelo se consulta k veces por ítem. La etiqueta modal es la predicción; la fracción de las k muestras que coinciden con ella es la confianza del modelo. Los resultados van a un almacén dedicado, nunca se mezclan con los datos de anotación, de modo que las personas no pueden verlos.
  2. Calibración humana — Potato extrae una muestra aleatoria o estratificada de los ítems etiquetados, y una o más personas los etiquetan a ciegas a través de la interfaz de anotación habitual.
  3. Informe — las métricas se calculan sobre el solapamiento humano∩modelo y se escriben en el directorio de salida.

Como las etiquetas del modelo viven en un almacén separado y nunca se inyectan en la interfaz, la condición de ciego es estructural y no una cuestión de disciplina del anotador.

Inicio rápido

Ejecuta el ejemplo incluido desde la raíz del repositorio:

bash
python potato/flask_server.py start examples/ai-assisted/judge-calibration/config.yaml -p 8000 --debug
  • Abre http://localhost:8000/judge_calibration/admin para configurar y ejecutar.
  • Cuando termine la generación, etiqueta la muestra a ciegas en http://localhost:8000/annotate.
  • Haz clic en Build report y luego abre http://localhost:8000/judge_calibration/report.

El ejemplo usa un modelo local de Ollama, así que no se necesita clave de API. Inicia Ollama y ejecuta ollama pull llama3.2:3b primero.

Configuración

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

Puedes sobrescribir la mayoría de estos valores en el asistente de administración y volver a ejecutar.

Define temperature > 0. Con k_samples > 1 y temperatura 0 las muestras son idénticas, la confianza es siempre 1.0 y el informe de calibración carece de sentido; en ese caso Potato emite una advertencia al arrancar.

Tipos de anotación admitidos

TipoEstadoMétricas
radio / selectAdmitidoexactitud, P/R/F1, Cohen/Fleiss κ, Krippendorff α, ECE, confusión
likertAdmitidolo anterior más MAE y Krippendorff α ordinal
multiselectAdmitidoP/R/F1 por etiqueta, Jaccard medio, exactitud de coincidencia exacta, calibración
spanExperimentalP/R/F1 con emparejamiento por IoU, IoU medio, concordancia span-F1, calibración a nivel de span

El soporte de spans agrupa los spans con desplazamientos de carácter del juez a lo largo de las k muestras y los empareja con el patrón de oro mediante intersección sobre unión; sus heurísticas son direccionales, no exactas.

Qué contiene el informe

  • Exactitud, precisión, recuperación y F1 de cada modelo frente a la etiqueta de oro humana.
  • κ de Cohen dividido en pares humano↔modelo, modelo↔modelo y humano↔humano.
  • κ de Fleiss y α de Krippendorff entre todos los evaluadores.
  • Error de calibración esperado (ECE), bins de fiabilidad y puntuación de Brier, que muestran hasta qué punto la confianza basada en la fracción de votos sigue la corrección.
  • Una matriz de confusión por modelo frente al patrón de oro humano.

Las métricas se calculan sobre el solapamiento: ítems que etiquetaron tanto los modelos como las personas, restringidos a la muestra de calibración cuando se extrajo una.

La salida se escribe bajo output.dir: llm_labels.jsonl (una línea por modelo, ítem y esquema), report.json y un report.html legible.

Calibración de jueces vs. alineación de jueces

La calibración de jueces usa varios jueces, confianza empírica (la fracción de votos a lo largo de las k muestras) y mantiene a la persona estrictamente a ciegas. La alineación de jueces calibra un único juez frente a etiquetas de oro humanas existentes, muestra su veredicto en línea durante la anotación y se construye en torno a iterar sobre una rúbrica. Recurre a la calibración cuando estás evaluando jueces candidatos; recurre a la alineación cuando ajustas un solo juez frente a un conjunto de oro fijo.

Relacionado

Para detalles de implementación, consulta la documentación de origen.