Skip to content
Guides7 min read

¿Puedes confiar en tu juez LLM? Calibrar LLM-as-Judge frente a humanos

Usar un LLM para calificar las salidas de un modelo es fácil. Saber si creerle es la parte difícil. Un recorrido por la calibración humana a ciegas de Potato 2.6: votación con k muestras, kappa de Cohen y de Fleiss, y el error de calibración esperado.

Potato Team

Usar un modelo de lenguaje grande para calificar las salidas de otros modelos se ha convertido en el recurso por defecto en evaluación. Escribes una rúbrica, le pides a GPT-4o o a Claude que puntúe mil respuestas y lees una cifra de exactitud. Es rápido, es barato y escala más allá de cualquier cosa que un equipo humano pueda etiquetar a mano.

También da por sentado, en silencio, justo lo que más necesitas comprobar: que el juez coincide con las personas. Un LLM como juez que se equivoca con seguridad produce una tabla de clasificación de aspecto limpio construida sobre arena. Antes de fiarte de los veredictos de un juez, tienes que medir hasta qué punto siguen el juicio humano. Ese paso de medición es la calibración, y Potato 2.6 añade un flujo de trabajo para ello.

Esta entrada cubre Judge Calibration (calibración del juez): cómo muestrea los modelos, cómo mantiene honesto el pase humano y qué te dice realmente el informe. La documentación de referencia tiene la lista completa de opciones.

El veredicto de un juez LLM mostrado junto a una anotación humana, con un kappa que se calcula en vivoCalibración del juez en línea en Potato

La forma del problema

Un juez puede fallar de dos maneras distintas, y conviene atrapar las dos.

La primera es el desacuerdo: el juez califica de "correcto" lo que una persona cuidadosa calificaría de "incorrecto". Eso es lo que miden las métricas de exactitud y de acuerdo.

La segunda es la confianza errónea: el juez dice estar seguro al 95% y acierta el 60% de las veces. Un juez puede tener una exactitud decente y aun así estar muy mal calibrado, lo cual importa en el momento en que empiezas a usar su confianza para enrutar trabajo o fijar umbrales. Eso es lo que mide el error de calibración.

El pase de calibración de Potato está hecho para sacar a la luz ambas cosas a la vez.

Cómo funciona

El flujo de trabajo se ejecuta como una breve máquina de estados:

text
SETUP → GENERATING → HUMAN_CALIBRATION → REPORT → COMPLETED

Generación (Generating). A cada modelo se le consulta k veces por ítem. La etiqueta modal de esas k muestras es la predicción del modelo, y la fracción de muestras que coinciden con ella es su confianza. Muestrear k veces en lugar de una sola es lo que te da una señal de confianza empírica en vez de una cifra que el modelo se inventó sobre sí mismo. Estos resultados van a un almacén dedicado y nunca se escriben en los datos de anotación.

Calibración humana (Human calibration). Potato extrae una muestra aleatoria o estratificada de los ítems y la enruta a una o varias personas, que la etiquetan a través de la interfaz de anotación habitual, sin ver nunca las respuestas del modelo.

Informe (Report). Las métricas se calculan sobre el solapamiento entre lo que etiquetaron los modelos y lo que etiquetaron las personas, y luego se escriben en disco.

Aquí lo importante es la ceguera. Como las etiquetas del modelo viven en un almacén separado y nunca se inyectan en la interfaz, la persona no puede quedar anclada por ellas ni siquiera por accidente. La ceguera es estructural, no una cuestión de pedir a quien anota que aparte la vista.

El proceso de calibración: votación del modelo con k muestras, un pase humano a ciegas y un informe comparativoCómo calibra Potato un juez frente a etiquetas humanas a ciegas

Configuración

Una calibración de juez es un único bloque de configuración. Escribes el prompt del juez, enumeras los modelos y fijas cuántas veces muestrear cada uno:

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 | ...
      model: gpt-4o-mini
      api_key: ${OPENAI_API_KEY}
      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]
  output:
    dir: judge_calibration_output

Warning: Ajusta temperature > 0. Con k_samples > 1 y temperatura 0, las muestras son idénticas, la confianza queda fijada en 1.0 y el informe de calibración no significa nada. Potato emite un aviso al arrancar cuando detecta esa combinación.

Puedes enumerar más de un modelo y calibrarlos en paralelo, que es la forma natural de elegir entre un juez local barato y uno alojado caro.

Probarlo sin clave de API

El ejemplo incluido usa un modelo local de Ollama, así que puedes ejecutar todo el ciclo sin conexión. Arranca Ollama, descarga el modelo y lanza:

bash
ollama pull llama3.2:3b
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, etiqueta a ciegas la muestra en /annotate, luego genera el informe y léelo en /judge_calibration/report.

Qué te dice el informe

El informe está hecho para responder a "¿debería confiar en este juez?" con cifras que puedes poner en una sección de métodos:

  • Exactitud, precisión, exhaustividad (recall) y F1 de cada modelo frente a la etiqueta de oro humana.
  • κ de Cohen desglosada en pares humano↔modelo, modelo↔modelo y humano↔humano, para que veas si el juez coincide con las personas tanto como las personas coinciden entre sí.
  • κ de Fleiss y α de Krippendorff sobre todos los evaluadores.
  • Error de calibración esperado (ECE), bins de fiabilidad y una puntuación de Brier: la respuesta al modo de fallo de la confianza errónea.
  • Una matriz de confusión por modelo, que suele contar la historia real: un juez correcto en las clases fáciles que se desmorona en una distinción difícil.

Todo se calcula sobre el solapamiento: los ítems que etiquetaron tanto los modelos como las personas, limitados a la muestra de calibración. La salida queda bajo output.dir como llm_labels.jsonl, report.json y un report.html legible.

Qué admite

La calibración es totalmente compatible con los esquemas categóricos que usa la mayoría de los jueces, y alcanza tipos más difíciles:

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

La calibración de spans agrupa los spans de desplazamiento de caracteres del juez a lo largo de las k muestras y los empareja con el oro por intersección sobre unión (intersection-over-union); trata sus cifras como orientativas más que exactas.

Calibración frente a alineación

Potato incluye un segundo flujo de trabajo, relacionado, que es fácil de confundir con este. Judge Alignment (alineación del juez) calibra un único juez frente a un conjunto de oro humano existente, muestra su veredicto en línea durante la anotación y está pensado para iterar sobre una rúbrica hasta que sube el acuerdo.

La regla práctica: recurre a la calibración cuando estás evaluando jueces candidatos y quieres una cifra de confianza empírica y a ciegas; recurre a la alineación cuando ya te has decidido por un juez y estás afinando su rúbrica frente a un conjunto de oro fijo. Ambas se tratan juntas en Cerrar el ciclo (Closing the Loop).

Los jueces LLM no van a desaparecer; hay demasiado que evaluar y muy poca gente para hacerlo a mano. El sentido de la calibración no es sustituir al juez por personas, sino saber, con una cifra, hasta dónde exactamente se puede confiar en el juez antes de que una persona tenga que mirar.

La documentación de Judge Calibration cubre todas las opciones, y la guía de acuerdo entre anotadores explica a fondo las métricas kappa y alpha.