Calibração de LLM como juiz
Rotule seus dados automaticamente com um ou mais juízes LLM e, em seguida, execute uma rodada de calibração humana cega para medir acurácia, concordância e erro de calibração. Responde à pergunta «devo confiar neste juiz LLM?» com um fluxo de trabalho defensável e reproduzível.
A calibração de juízes rotula seus dados automaticamente com um ou mais juízes LLM e depois os calibra contra rótulos humanos cegos, para que você possa quantificar até onde confiar em um LLM como juiz. Você escreve um prompt de juiz, escolhe os modelos, e o Potato amostra cada um k vezes sobre seus dados. Em seguida, você rotula uma amostra às cegas sem ver as respostas dos modelos, e o Potato reporta a acurácia por modelo, a concordância humano↔modelo e modelo↔modelo, o erro de calibração e as matrizes de confusão.
Usar um LLM para avaliar as saídas dos modelos já é comum na avaliação de agentes e modelos, mas um juiz só é útil se você souber o quanto ele acompanha o julgamento humano. A calibração é a etapa de medição que torna essa confiança defensável.
Como funciona
SETUP → GENERATING → HUMAN_CALIBRATION → REPORT → COMPLETED
- Geração — cada modelo é consultado k vezes por item. O rótulo modal é a predição; a fração das k amostras que concorda com ele é a confiança do modelo. Os resultados vão para um repositório dedicado, nunca misturados aos dados de anotação, de modo que as pessoas não podem vê-los.
- Calibração humana — o Potato extrai uma amostra aleatória ou estratificada dos itens rotulados, e uma ou mais pessoas os rotulam às cegas pela interface de anotação habitual.
- Relatório — as métricas são calculadas sobre a sobreposição humano∩modelo e gravadas no diretório de saída.
Como os rótulos do modelo ficam em um repositório separado e nunca são injetados na interface, a cegueira é estrutural, e não uma questão de disciplina do anotador.
Início rápido
Execute o exemplo incluído a partir da raiz do repositório:
python potato/flask_server.py start examples/ai-assisted/judge-calibration/config.yaml -p 8000 --debug- Abra
http://localhost:8000/judge_calibration/adminpara configurar e executar. - Quando a geração terminar, rotule a amostra às cegas em
http://localhost:8000/annotate. - Clique em Build report e abra
http://localhost:8000/judge_calibration/report.
O exemplo usa um modelo local do Ollama, então não é necessária chave de API. Inicie o Ollama e execute ollama pull llama3.2:3b primeiro.
Configuração
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_outputVocê pode sobrescrever a maioria desses valores no assistente de administração e executar novamente.
Defina temperature > 0. Com k_samples > 1 e temperatura 0, as amostras são idênticas, a confiança é sempre 1.0 e o relatório de calibração não tem sentido; nesse caso, o Potato emite um aviso na inicialização.
Tipos de anotação suportados
| Tipo | Status | Métricas |
|---|---|---|
radio / select | Suportado | acurácia, P/R/F1, Cohen/Fleiss κ, Krippendorff α, ECE, confusão |
likert | Suportado | o acima mais MAE e Krippendorff α ordinal |
multiselect | Suportado | P/R/F1 por rótulo, Jaccard médio, acurácia de correspondência exata, calibração |
span | Experimental | P/R/F1 pareados por IoU, IoU médio, concordância span-F1, calibração em nível de span |
O suporte a spans agrupa os spans com deslocamentos de caractere do juiz ao longo das k amostras e os pareia com o padrão-ouro por interseção sobre união; suas heurísticas são direcionais, não exatas.
O que o relatório contém
- Acurácia, precisão, recall e F1 de cada modelo em relação ao rótulo-ouro humano.
- κ de Cohen dividido em pares humano↔modelo, modelo↔modelo e humano↔humano.
- κ de Fleiss e α de Krippendorff entre todos os avaliadores.
- Erro de calibração esperado (ECE), bins de confiabilidade e pontuação de Brier, mostrando o quanto a confiança baseada na fração de votos acompanha a correção.
- Uma matriz de confusão por modelo em relação ao padrão-ouro humano.
As métricas são calculadas sobre a sobreposição: itens rotulados tanto pelos modelos quanto pela(s) pessoa(s), restritos à amostra de calibração quando uma foi extraída.
A saída é gravada sob output.dir: llm_labels.jsonl (uma linha por modelo, item e esquema), report.json e um report.html legível por pessoas.
Calibração de juízes vs. alinhamento de juízes
A calibração de juízes usa vários juízes, confiança empírica (a fração de votos ao longo das k amostras) e mantém a pessoa rigorosamente às cegas. O alinhamento de juízes calibra um único juiz em relação a rótulos-ouro humanos existentes, mostra seu veredito em linha durante a anotação e é construído em torno de iterar sobre uma rubrica. Recorra à calibração quando estiver avaliando juízes candidatos; recorra ao alinhamento quando estiver ajustando um único juiz em relação a um conjunto-ouro fixo.
Relacionado
- Alinhamento juiz ↔ humano — calibração em linha de um único juiz
- Modo individual — rotulagem colaborativa completa humano-LLM
- Guia de concordância entre anotadores — as métricas kappa e alpha em profundidade
Para detalhes de implementação, consulte a documentação de origem.