Verificação e Evals|INEMA.CLUB-PRO

Aula 7 · 18 min

Métricas honestas: pass@k, pass^k, variância, SWE-bench e METR

"Acerta 90%" pode querer dizer que acerta quase sempre ou que acerta pelo menos uma vez em três tentativas. Para um loop que roda sem você, só a primeira serve. Nesta aula você mede as duas no seu conjunto de ouro, vê quanto o número oscila entre rodadas e aprende a ler SWE-bench e o horizonte do METR sem exagerar.

Começar a aula
Tela de osciloscópio com curvas sobrepostas e papel milimetrado com pontos espalhados ao lado.

Nesta aula você vai

  1. 1pass@k (ao menos um acerto) e pass^k (acerta todas)
  2. 2Repetir o conjunto e ver o número oscilar
  3. 3SWE-bench: passar no teste não é ser aceito
  4. 4Horizonte METR: o que mede e o que não mede

Objetivo: medir pass@k e pass^k com repetições, ler a variância entre rodadas e citar SWE-bench e o horizonte METR sem exagero.

01O mesmo agente, três números diferentes

Clique em cada etapa.

Clique em cada bloco do diagrama para ver o que ele faz.

Para loop autônomo, reporte pass^k e o desvio entre rodadas, não o pass@k.

02Ensaio: um agente com 25% de ruído

O agente de triagem falso, com TRIAGEM_RUIDO=0.25, erra o "urgente" em 25% das tentativas (sorteio fixo, reproduzível).

Terminal · 10 casos × 3 tentativas
E=~/projetos/loop-r-eng-verificacao-v72/kit/evals; mkdir -p /tmp/ensaio-evals
TRIAGEM_RUIDO=0.25 python3 $E/rodar-evals.py --agente "python3 $E/agente-triagem-falso.py" \
  --k 3 --saida /tmp/ensaio-evals/k3.tsv > /dev/null
python3 $E/passk.py /tmp/ensaio-evals/k3.tsv
Exemplo do repositório
10 casos × 3 tentativas
taxa por tentativa: 73%  (rodada 1: 70% · rodada 2: 80% · rodada 3: 70%; desvio 5 pontos)
pass@3: 90%  (ao menos 1 acerto)
pass^3: 50%  (acertou todas)
se fossem independentes, 73%^3 = 39%
instáveis: t01 t06 t08 t10

O mesmo agente pode ser anunciado como "90%" (pass@3) ou descrito como "metade dos casos sai certa sempre" (pass^3). A rodada 2 sozinha diria 80%; a 1 e a 3, 70%.

03Benchmarks: o que dá para afirmar

Só o que a fonte primária diz, com data.

1. Passa ≠ aceito

O METR estimou que cerca de metade dos PRs que passam nos testes do SWE-bench Verified não seriam aceitos pelos mantenedores do projeto.

Teste verde mede o que o teste cobre. Estilo, escopo e efeito colateral ficam de fora: é o espaço do avaliador cético e da amostra humana.

04O seu agente com k = 3

Sai da sua cota: 30 chamadas com o conjunto do ensaio. Depois, troque pelo seu conjunto.

Terminal · real (continua do bloco anterior)
python3 $E/rodar-evals.py --agente 'claude -p --tools ""' --k 3 --saida /tmp/ensaio-evals/real-k3.tsv
python3 $E/passk.py /tmp/ensaio-evals/real-k3.tsv
Exemplo do repositório
armadilha  3/3
bug        15/15
duvida     6/6
pedido     6/6
total      30/30 (100%)  → /tmp/ensaio-evals/real-k3.tsv
10 casos × 3 tentativas
taxa por tentativa: 100%  (rodada 1: 100% · rodada 2: 100% · rodada 3: 100%; desvio 0 pontos)
pass@3: 100%  (ao menos 1 acerto)
pass^3: 100%  (acertou todas)
se fossem independentes, 100%^3 = 100%
instáveis: nenhum

Claude Code 2.1.303, modelo padrão da assinatura, 4 min 20 s. Com 10 casos fáceis, o agente real acertou as 30 tentativas: este conjunto não mede variância nenhuma. Para ver pass^k cair, o conjunto precisa de casos difíceis (aula 5). O seu número vai depender do seu conjunto.

05Prática

Ensaio, o seu agente e uma frase honesta.

E19 · pass@3 contra pass^3

10 min

Rode o ensaio com ruído de 25%.

Pronto quando: passk.py imprime pass@3: 90%, pass^3: 50% e instáveis: t01 t06 t08 t10.

E20 · O seu conjunto com k = 3

20 min

Rode o seu conjunto de ouro (aula 5) com --k 3 e o seu agente real. Anote no progress.md ou no README do agente uma linha com data, N de casos, pass^3 e desvio entre rodadas.

Pronto quando: python3 $E/passk.py [seu tsv] imprime as linhas pass@3:, pass^3: e instáveis:, e grep -c "pass^3" [arquivo onde anotou] → 1 ou mais.

06Teste da aula

Pergunta 1 de 4

Para um loop que roda sem supervisão, qual métrica importa?competência

07Em três frases

pass^k para loopspass@k mede sorte com escolha; pass^k mede o que acontece quando ninguém escolhe.
Ruído antes de melhoraRode mais de uma vez; diferença menor que a oscilação entre rodadas não é ganho.
Benchmark com data e ressalvaPassar no SWE-bench não é ser aceito; horizonte METR é tempo de tarefa humana a 50%, e a série parou em 2026.

Para ir além

Aula anteriorPróxima aula