Benchmark · agentic
SWE-bench Pro
Uma versão mais difícil e resistente à contaminação do SWE-bench, feita pela Scale AI. Ela reúne ~1,865 issues reais do GitHub a partir de repositórios corporativos, de startups e de código aberto reservados (held-out) nos quais os modelos não foram treinados, e as correções normalmente abrangem vários arquivos.
Saiba mais
- Exemplo
- A partir de uma issue real e do repositório completo, o agente precisa produzir um patch — muitas vezes alterando vários arquivos — para que a suíte de testes oculta do projeto passe. Os problemas vêm de repositórios privados e comerciais justamente para evitar vazamento de dados de treinamento.
- Pontuação
- % de issues resolvidas, reportada como pass@1 (uma tentativa). Quanto maior, melhor. As pontuações ficam mais baixas do que no SWE-bench Verified porque as tarefas são mais difíceis e nunca vistas antes.
- Verificação
- Totalmente automático e reservado (held-out): o patch gerado é aplicado e os testes unitários ocultos reais do repositório são executados em um sandbox. Uma tarefa só conta se todos os testes-alvo passarem e nada mais regredir.
- Por que importa
- Criado para resistir à contaminação e à saturação que inflam as pontuações no SWE-bench Verified, sendo assim um sinal mais limpo da habilidade real e generalizável de um agente de código em código que o modelo nunca viu.
Exemplo resolvido
Tarefa
Repositório
acme/payments em um commit base fixo. Issue: Money('0.05').allocate([1, 1, 1]) perde um centavo — as três partes somam $0.04, e não $0.05. Produza um patch para que uma alocação sempre volte a somar o valor original.Solução
--- a/payments/money.py
+++ b/payments/money.py
@@ def allocate(self, ratios):
- total = sum(ratios)
- return [self._from_minor(self.minor * r // total) for r in ratios]
+ total = sum(ratios)
+ shares = [self.minor * r // total for r in ratios]
+ remainder = self.minor - sum(shares)
+ for i in range(remainder):
+ shares[i] += 1
+ return [self._from_minor(s) for s in shares]
Explicação
A divisão inteira trunca o resultado, então as unidades menores restantes (centavos) eram perdidas silenciosamente. A correção calcula cada parcela e depois distribui o resto uma unidade de cada vez para as primeiras partes, garantindo que as partes alocadas sempre somem o total. Os testes ocultos verificam
sum(m.allocate(ratios)) == m em vários valores e proporções.