Phase 14 - Lesson 19
Benchmarks: SWE-bench, GAIA, AgentBench
Três benchmarks ancoram a avaliação de agentes em 2026. O SWE-bench testa a correção de código. O GAIA testa o uso geral de ferramentas. O AgentBench testa o raciocínio em múltiplos ambientes. Conheça sua composição, sua história de contaminação e o que eles não medem.
Type: Learn Languages: Python (stdlib) Prerequisites: Phase 14 · 06 (Tool Use) Time: ~60 minutos
Learning Objectives
- Nomear o harness de teste do SWE-bench (FAIL_TO_PASS) e explicar por que ele é limitado por testes unitários.
- Explicar por que o SWE-bench Verified (OpenAI, 500 tarefas) existe e o que ele remove.
- Descrever o design do GAIA: simples para humanos, difícil para IA; três níveis de dificuldade.
- Nomear os oito ambientes do AgentBench e seu principal obstáculo para LLMs de código aberto.
- Resumir a descoberta de contaminação do SWE-bench+ e suas implicações.
The Problem
Os rankings (leaderboards) dizem qual modelo vence em um benchmark. Eles não dizem a você:
- Se o benchmark está contaminado (soluções nos dados de treinamento, vazamento de teste).
- Se o benchmark mede o que importa para você (código vs. navegação vs. generalista).
- Se o avaliador é robusto (comparação de AST, verificações de estado, revisão humana).
Conheça os três benchmarks de ancoragem e seus modos de falha antes de citar um número.
The Concept
SWE-bench (Jimenez et al., ICLR 2024 oral)
- 2.294 problemas (issues) reais do GitHub de 12 repositórios Python populares.
- O agente recebe: a base de código no commit pré-correção + a descrição do problema em linguagem natural.
- O agente produz: um patch.
- Avaliador: aplica o patch, executa a suíte de testes do repositório. O patch deve alternar os testes FAIL_TO_PASS (que falhavam anteriormente, agora passando) sem quebrar os testes PASS_TO_PASS.
O SWE-agent (Yang et al., 2024) atingiu 12,5% no lançamento ao enfatizar interfaces agente-computador (comandos do editor de arquivos, sintaxe de busca que o modelo compreende).
SWE-bench Verified
OpenAI, agosto de 2024. Subconjunto de 500 tarefas curado por humanos. Remove problemas ambíguos, testes não confiáveis e tarefas onde a correção não era clara. Benchmark principal para "seu agente entrega patches reais?"
Contamination
- Mais de 94% dos problemas do SWE-bench precedem a maioria das datas de corte (cutoffs) dos modelos.
- O SWE-bench+ descobriu que 32,67% dos patches bem-sucedidos vazaram soluções no texto do problema (o modelo viu a correção na descrição) e 31,08% eram suspeitos devido à cobertura de teste fraca.
- O Verified é mais limpo, mas não é livre de contaminação.
Implicação prática: um modelo que pontua 50% no SWE-bench pode pontuar 35% no SWE-bench+. Sempre relate ambos se alegar desempenho no SWE-bench.
GAIA (Mialon et al., Nov 2023)
- 466 perguntas; 300 retidas para o ranking privado em huggingface.co/gaia-benchmark.
- Filosofia de design: "conceitualmente simples para humanos (92%), mas difícil para IA (GPT-4 com plugins: 15%)."
- Testa raciocínio, multimodalidade, web e uso de ferramentas.
- Três níveis de dificuldade; o Nível 3 exige longas cadeias de ferramentas em várias modalidades.
O GAIA é o que você executa para medir "capacidade generalista". Não o confunda com benchmarks específicos de código.
AgentBench (Liu et al., ICLR 2024)
- 8 ambientes abrangendo código (Bash, DB, KG), jogos (Alfworld, LTP), web (WebShop, Mind2Web) e geração aberta.
- Múltiplos turnos, ~4k-13k turnos por divisão.
- Descoberta principal: raciocínio de longo prazo, tomada de decisão e acompanhamento de instruções são os obstáculos para que LLMs de código aberto alcancem os comerciais.
What these do not measure
- Custo operacional no mundo real (tokens, tempo de execução/relógio de parede).
- Comportamento de segurança em condições adversárias.
- Desempenho no seu domínio (use suas próprias avaliações, Lição 30).
- Falhas de cauda (os benchmarks medem a média; operadores de produção se importam com o pior 1%).
Where benchmarking goes wrong
- Fixação em número único. Um resultado de 50% no SWE-bench diz menos do que a distribuição de custo + etapas em P50/P75/P95.
- Alegações contaminadas. Relatar o SWE-bench sem mencionar o Verified ou o SWE-bench+ é enganoso.
- Benchmark como meta de desenvolvimento. Otimizar para o benchmark diverge da utilidade em produção.
Build It
code/main.py implementa um harness simples semelhante ao SWE-bench:
- Tarefas sintéticas de correção de bugs (3 tarefas).
- Um "agente" roteirizado que propõe patches.
- Um executor de testes que verifica FAIL_TO_PASS (bug agora corrigido) e PASS_TO_PASS (nada quebrado).
- Um classificador de dificuldade no estilo GAIA baseado na profundidade de decomposição da pergunta.
Execute-o:
python3 code/main.py
A saída mostra a taxa de resolução por tarefa + por dificuldade e torna as regras do avaliador concretas.
Use It
- SWE-bench Verified para agentes de código. Sempre relate as pontuações do Verified.
- GAIA para agentes generalistas. Use a divisão do ranking privado.
- AgentBench para comparação de múltiplos ambientes.
- Avaliações personalizadas (Lição 30) para o formato real do seu produto.
Ship It
outputs/skill-benchmark-harness.md constrói um harness no estilo SWE-bench para qualquer par base-de-código/tarefa com validações FAIL_TO_PASS / PASS_TO_PASS.
Exercises
- Adapte o harness simples para rodar em um repositório real (escolha um dos seus). Escreva 3 testes FAIL_TO_PASS para bugs conhecidos.
- Adicione uma métrica de contagem de etapas. Nas suas 3 tarefas, quantas etapas de agente por resolução?
- Leia o artigo do SWE-bench+. Implemente uma verificação de vazamento de solução (correspondência de padrão entre o texto do problema e o diff).
- Baixe uma pergunta do GAIA da divisão pública. Rastreie o que um agente da classe GPT-4 faria. De quais ferramentas ele precisa?
- Leia o detalhamento por ambiente do AgentBench. Qual ambiente espelha a superfície do seu produto? Como é o "SOTA" lá?
Key Terms
| Termo | O que as pessoas dizem | O que realmente significa |
|---|---|---|
| SWE-bench | "Benchmark de agentes de código" | 2.294 problemas do GitHub; o patch deve alternar testes FAIL_TO_PASS |
| SWE-bench Verified | "SWE-bench limpo" | 500 tarefas curadas por humanos, OpenAI |
| FAIL_TO_PASS | "Filtro de correção" | Testes que falhavam anteriormente e devem passar após o patch |
| PASS_TO_PASS | "Filtro de não regressão" | Testes que estavam passando e devem continuar passando |
| GAIA | "Benchmark generalista" | 466 perguntas fáceis para humanos / difíceis para IA com múltiplas ferramentas |
| AgentBench | "Benchmark multi-ambiente" | 8 ambientes; múltiplos turnos de longo horizonte |
| Contamination | "Vazamento no conjunto de treinamento" | Tarefas do benchmark presentes no treinamento do modelo |
| SWE-bench+ | "Auditoria de contaminação" | 32,67% de vazamento de solução encontrado em patches bem-sucedidos do SWE-bench |
Further Reading
- Jimenez et al., SWE-bench (arXiv:2310.06770) — o benchmark original
- OpenAI, SWE-bench Verified — o subconjunto curado
- Mialon et al., GAIA (arXiv:2311.12983) — benchmark generalista
- Liu et al., AgentBench (arXiv:2308.03688) — suíte multi-ambiente