Modelos de IA não estão prontos para substituir desenvolvedores, segundo pesquisa da OpenAI

Pesquisadores da OpenAI conduziram um estudo para avaliar o desempenho de modelos de IA em tarefas de programação do mundo real.

O estudo utilizou o recém-lançado benchmark SWE-Lancer, que reúne mais de 1.400 tarefas de engenharia de software freelance extraídas da plataforma Upwork, as quais totalizam 1 milhão de dólares em pagamentos a desenvolvedores humanos e incluem desde a implementação de funcionalidades no código (IC SWE) até a avaliação e seleção das melhores soluções propostas (SWE Manager).

O benchmark abrange desafios que variam de pequenos ajustes, avaliados em 50 dólares, até implementações mais complexas, que podem chegar a 32 mil dólares.

Os modelos testados foram GPT-4o e o1, da OpenAI, e Claude 3.5 Sonnet, da Anthropic.

No subconjunto SWE-Lancer Diamond, que contém 502 tarefas, o Claude 3.5 Sonnet obteve o melhor desempenho, resolvendo 26,2% das tarefas de código e 44,9% das tarefas de escolha entre diferentes propostas de implementação. Em seguida, vieram o modelo o1 (16,5% e 41,5%) e o GPT-4o (8% e 37%).

Considerando o conjunto completo de 1.488 tarefas, o Claude 3.5 Sonnet manteve a liderança com 21,1% e 47%, seguido pelo o1 (20,3% e 46,3%) e pelo GPT-4o (8,6% e 38,7%).

No geral, nenhum modelo foi capaz de resolver a maioria das tarefas propostas, com os melhores resultados alcançando pouco mais de 40% do valor total disponível. Os modelos demonstraram um desempenho superior na escolha entre propostas já existentes do que na criação de soluções funcionais do zero.

Entre as principais dificuldades observadas, destacam-se:

  • Incapacidade de compreender corretamente alguns bugs.
  • Alterações no código sem validação adequada da solução.
  • Falhas na consideração de todas as regras e interações do código, resultando em soluções incompletas.
  • Desempenho insatisfatório em UI/UX, devido à dificuldade em interpretar o comportamento esperado do usuário.

Em um exemplo, o GPT-4o tentou corrigir um erro de validação de código postal simplesmente modificando o regex utilizado, sem verificar se a alteração realmente solucionava o problema para o usuário final.

Desenvolver não é o mesmo que codar. E não adianta criar sem entender a real necessidade.