Benchmark · agentic
SWE-Lancer
O SWE-Lancer é um benchmark de 1488 tarefas reais de engenharia de software freelance do Upwork, avaliadas em 1 milhão de dólares (USD) em pagamentos reais; ele mede quanto desse dinheiro um modelo consegue «ganhar» ao resolvê-las por completo, pontuado como o total de USD ganhos (e a proporção de tarefas resolvidas).
Saiba mais
- Exemplo
- Uma tarefa de correção de bug no estilo freelance: dado um issue real (no estilo do GitHub) e o repositório completo do app, o modelo deve produzir um patch que faça um fluxo de usuário quebrado voltar a funcionar (por exemplo, a tela de dividir uma conta ou de pagamento), verificado por testes end-to-end. Uma segunda trilha traz tarefas de gestão: escolher a melhor proposta de engenharia entre várias.
- Pontuação
- Cada tarefa carrega o preço real em USD pelo qual foi paga no Upwork (de cerca de 50 a 32.000 dólares). Um modelo ganha o preço integral de uma tarefa somente se sua solução passar — não há crédito parcial dentro de uma tarefa. A métrica principal é o total de dólares ganhos do fundo de 1 milhão, junto com a porcentagem de tarefas resolvidas; as duas trilhas (codificação IC e gestão) também são reportadas separadamente.
- Verificação
- As tarefas de codificação (IC) são avaliadas por testes end-to-end (Playwright) que simulam ações reais do usuário, escritos e verificados por engenheiros profissionais e executados em um ambiente Docker isolado; o patch do modelo deve passar em todos os testes da tarefa, e o modelo não pode vê-los nem editá-los. As tarefas de gestão são aceitas quando o modelo escolhe a mesma proposta que o gerente que contratou de fato escolheu.
- Por que importa
- Ele vincula o desempenho do modelo a trabalho economicamente real, precificado pelo mercado, sobre uma base de código de produção real, em vez de problemas sintéticos ou autoavaliados. Como a avaliação usa fluxos de usuário end-to-end completos (não correções isoladas de funções), mais uma trilha de decisão gerencial, ele testa se os modelos de fronteira conseguem fazer a engenharia completa e valiosa pela qual as pessoas realmente pagam freelancers.
Exemplo resolvido
Tarefa
Tarefa IC SWE (ilustrativa, ~US$ 250): a tela «Split Bill» do app mostra um total de NaN quando um participante é removido antes de digitar um valor. Trabalhando em um contêiner Docker com o repositório completo, corrija o bug para que o total exibido volte a $0.00; um teste end-to-end oculto reproduz esse fluxo de usuário.
Solução
```diff
function getSplitTotal(amounts) {
- return amounts.reduce((sum, a) => sum + a.value, 0);
+ return amounts.reduce((sum, a) => sum + (Number(a?.value) || 0), 0);
}
```
Explicação
Remover um participante deixa uma entrada cujo value é undefined, então a.value transforma a soma corrente em NaN; converter cada valor com Number(...) || 0 pula o valor ausente e o total é exibido como $0.00. A avaliação é binária — o patch ganha o preço integral em USD da tarefa apenas se passar em todos os testes end-to-end daquela tarefa, executados contra o fluxo de usuário real.
| Data | Modelo | Pontuação | Fonte |
|---|---|---|---|
| 2025-03-05 | GPT-4.5 | 32.6% | OpenAI lança GPT-4.5, seu maior modelo, para o ChatGPT Plus |