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
SETUP → GENERATING → HUMAN_CALIBRATION → REPORT → COMPLETED
- 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.
- 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.
- 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:
python potato/flask_server.py start examples/ai-assisted/judge-calibration/config.yaml -p 8000 --debug- Abre
http://localhost:8000/judge_calibration/adminpara 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
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_outputPuedes 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
| Tipo | Estado | Métricas |
|---|---|---|
radio / select | Admitido | exactitud, P/R/F1, Cohen/Fleiss κ, Krippendorff α, ECE, confusión |
likert | Admitido | lo anterior más MAE y Krippendorff α ordinal |
multiselect | Admitido | P/R/F1 por etiqueta, Jaccard medio, exactitud de coincidencia exacta, calibración |
span | Experimental | P/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
- Alineación juez ↔ humano — calibración en línea de un solo juez
- Modo individual — etiquetado colaborativo completo humano-LLM
- Guía de concordancia entre anotadores — las métricas kappa y alpha en profundidad
Para detalles de implementación, consulta la documentación de origen.