β benchmark.beansbr.ai

SISTEMA DE AVALIAÇÃO — Benchmark Cego Multidomínio Multilíngue (v1.0)

Este documento descreve a arquitetura do sistema que executa o REGULAMENTO.md.
A implementação de referência está em harness/ e roda hoje, sem dependências externas
(Python 3.10+, apenas biblioteca padrão), em modo mock (determinístico, sem chaves de API)
ou modo ao vivo (chaves por variável de ambiente).

1. Visão geral

                 ┌──────────────────────────── CEGO DUPLO ────────────────────────────┐
                 │                                                                    │
 banco/ (700) ──►│ 1 CÁRREGAMENTO  2 APLICAÇÃO     3 ANONIMIZAÇÃO    4 JULGAMENTO     │
   jsonl         │    + canários     (15 IAs)         (SISTEMA-XX)       (3 juízes)     │
                 │                                                                    │
                 └────────────────────────────────────────────────────────────────────┘
                                                    │
                        ┌───────────────────────────┼───────────────────────────┐
                        ▼                           ▼                           ▼
                 5 AGREGAÇÃO                6 ESTATÍSTICA               7 RELATÓRIO
                 notas 0–100               IC 95% bootstrap             leaderboard.md
                 por domínio/idioma         matriz Bradley-Terry         resultados.csv

2. Módulos

MóduloArquivoResponsabilidade
Configuraçãoharness/config.jsonelenco, endpoints, chaves (por env), juízes, sementes, limites
Bancoharness/bank.pycarregamento, validação de schema, deduplicação, split calibração/prova, injeção de canário, hash do banco
Provedoresharness/providers.pycliente HTTP mínimo para API de chat, retry com backoff, medição de latência e tokens, captura de recusa
Mockharness/mock.pyprovedor determinístico que simula capacidade por IA (perfil de qualidade fixo), usado para ensaio do pipeline
Anonimizadorharness/blind.pyremove autoidentificação, marcas de produto e metadados; atribui SISTEMA-XX; embaralha com semente
Juízesharness/judge.pyprompt de rubrica ancorada (pt/en/zh), extração de nota por critério, cálculo de divergência, acionamento do adjudicador
Estatísticaharness/stats.pymédias, desvio, IC bootstrap 95%, matriz de confronto, Elo/Bradley-Terry, sobreposição de n-gramas
Relatórioharness/report.pyleaderboard.md, resultados.csv, itens.csv, auditoria.csv, resumo.json
Orquestradorharness/run.pypipeline completo, --mock, --limit, --seed, --out, logs e retomada
Testestests/validação do banco, estatística e anonimização

3. Cegueira dupla

**Cegueira do avaliado (art. 18).** O prompt de aplicação é neutro: não menciona benchmark, concorrentes, domínio do banco nem total de itens. A instrução de sistema é idêntica para todos.

**Cegueira do juiz (art. 19).** O anonimizador aplica, em ordem:

  1. remoção de expressões de autoidentificação (como o GPT-5, I am Claude, 我是 Kimi, etc.);
  2. remoção de nomes de produto e de provedor do elenco;
  3. remoção de metadados (temperatura, tokens, provedor);
  4. atribuição de rótulo opaco SISTEMA-01..15, sorteado por semente e não correlacionado com a ordem do elenco;
  5. apresentação em ordem aleatória reproduzível.

O mapa `SISTEMA-XX → participante` só é materializado no relatório final, depois de todas as notas consolidadas.

4. Instrumentos de medição

4.1 Itens objetivos (mcq, calc)

Correção determinística: `mcq` compara a alternativa declarada; `calc` compara o valor numérico com tolerância declarada no item. Zero depende de formato: a resposta é normalizada (minúsculas, remoção de pontuação, extração do primeiro número com unidade) antes da comparação.

4.2 Itens abertos e rubrica ancorada

Cada item aberto traz `rubric` com 3 a 5 critérios. O prompt do juiz exige:

A nota do item é a média aritmética dos critérios, limitada a 0–5, convertida para a escala de pontos do item (máx. 5).

4.3 Júri de três e adjudicação

Três juízes independente (perfis distintos: `strict`, `balanced`, `lenient`) pontuam sem se ver. Divergência máxima > 1,5 ⇒ `adjudicator` repontua com acesso à rubrica e às três notas, mas sem acesso à identidade (que continua oculta). A nota do adjudicador substitui a média.

4.4 Auditoria humana

10% dos itens abertos são amostrados com semente e pontuados por humano. O desvio humano–média é calculado por item; itens com desvio > 1,0 são anulados na rodada.

5. Estatística

6. Reprodutibilidade

Toda rodada grava `resultados//resumo.json` com: `seed`, `sha256` de cada arquivo do banco, versão do harness, identificadores exatos de modelo, temperatura, `max_tokens`, timeout, mapa de juízes e timestamps por etapa. Reexecutar com a mesma semente e o mesmo banco reproduz a ordenação dos itens e os rótulos opacos; notas de júri podem variar e são reportadas com intervalo.

7. Execução hoje

cd /home/matheus/benchmark-cego
make validate      # valida o banco de 700 itens
make demo          # rodada completa em modo mock (sem chaves) → resultados/demo/
make live          # rodada ao vivo (requer chaves em .env)
make test          # testes unitários

`make demo` produz, em minutos, um leaderboard completo com 15 sistemas simulados, evidenciando que o pipeline — cegueira, júri, adjudicação, estatística e relatório — está operacional antes de qualquer gasto com API.

8. Escalada prevista (roadmap)

FaseEntregaStatus
0Banco 700 itens + regulamento + harness mockentregue nesta versão
1Rodada de calibração com 3 juízes e 2 revisores humanospróximo passo
2Rodada ao vivo com os 15 participantes, 2 execuções por itemrequer chaves
3Painel contínuo (a cada trimestre) com detecção de derivaprevisto
4Abertura pública do banco após 90 dias (art. 42)previsto

9. Riscos conhecidos e mitigações

RiscoMitigação
Contaminação do bancocanários + sigilo + variantes + n-gramas
Viés do juiz a favor do próprio fornecedorjuiz não pode julgar a si ou ao grupo (art. 7º); 3 juízes de fornecedores distintos
Juiz premia respostas longasrubrica ancorada por critério + auditoria humana
Assimetria de idiomaparidade verificada na calibração; itens formulados no idioma de aplicação
Mudança de versão no meio da rodadacongelamento de model + repetição integral (art. 9º)
Customodo mock para ensaio; --limit e --only-domain para rodadas parciais