MBPP, abreviação de Mostly Basic Python Problems, é um conjunto de dados de referência (benchmark) projetado para avaliar as capacidades de geração de código de modelos de linguagem de grande porte. Ele consiste em 974 problemas de programação Python coletados de fontes colaborativas (crowd-sourced) que visam habilidades fundamentais de programação, como sintaxe básica, manipulação de strings, loops e aritmética. O benchmark é amplamente utilizado no campo da inteligência artificial para medir quão bem os modelos podem traduzir descrições de problemas em linguagem natural para código Python executável.
O conjunto de dados foi introduzido em 2021 por uma equipe de pesquisadores do Google Research, incluindo Jacob Austin, Augustus Odena, Maxwell Nye e outros. Foi apresentado no artigo "Program Synthesis with Large Language Models", que também introduziu o benchmark relacionado APPS. O MBPP foi criado para fornecer um conjunto de avaliação mais acessível e focado em comparação com benchmarks existentes, que frequentemente exigiam a resolução de desafios algorítmicos complexos ou envolviam enunciados de problemas extensos.
Cada problema no MBPP consiste em uma descrição em linguagem natural, uma assinatura de função e vários casos de teste que verificam a correção do código gerado. Os problemas são projetados para serem resolvíveis por programadores com alguns meses de experiência em Python, tornando o benchmark adequado para avaliar competências básicas de programação. O conjunto de dados é dividido em um conjunto de treinamento com 374 problemas, um conjunto de validação com 90 problemas e um conjunto de teste com 500 problemas. O conjunto de teste é ainda subdividido em dois subconjuntos: um para avaliar modelos com uma única tentativa (pass@1) e outro para avaliar modelos com múltiplas tentativas (pass@k).
Metodologia de Avaliação
A métrica principal usada para o MBPP é pass@k, que mede a probabilidade de que pelo menos uma de k amostras de código geradas passe em todos os casos de teste fornecidos. Essa métrica leva em conta a natureza estocástica da amostragem de modelos de linguagem. Por exemplo, pass@1 indica a probabilidade de que uma única solução gerada esteja correta, enquanto pass@80 mede a chance de que pelo menos uma de 80 amostras tenha sucesso. O processo de avaliação envolve gerar conclusões de código a partir de um modelo, dada a descrição do problema, e então executar os casos de teste contra cada conclusão.
Para garantir justiça, o benchmark fornece um conjunto de soluções canônicas e casos de teste. Os modelos são tipicamente avaliados em um cenário de poucos exemplos (few-shot), onde um pequeno número de problemas de exemplo é incluído no prompt para guiar o formato de saída do modelo. O artigo original relatou resultados para vários modelos, incluindo GPT-Neo, GPT-3 e uma versão ajustada do GPT-2, com pontuações pass@1 variando de 3% a 37%, dependendo do tamanho do modelo e dos dados de treinamento.
Significância na Pesquisa em IA
O MBPP tornou-se um benchmark padrão para tarefas de geração de código, ao lado de outros conjuntos de dados como HumanEval e APPS. Seu foco em problemas básicos o torna particularmente útil para avaliar modelos que não são especificamente treinados em código, pois testa raciocínio geral e conhecimento de programação. O benchmark foi adotado por numerosos grupos de pesquisa e é frequentemente citado em artigos sobre aprendizado de máquina e aprendizado profundo.
Uma das principais vantagens do MBPP é sua simplicidade, que permite avaliações rápidas e reproduzíveis. Isso o tornou uma escolha popular para comparar o desempenho de diferentes modelos, incluindo aqueles desenvolvidos por OpenAI, Anthropic e outras organizações. O benchmark também tem sido usado para estudar o impacto do tamanho dos dados de treinamento, da arquitetura do modelo e das estratégias de ajuste fino na capacidade de geração de código.
Limitações e Críticas
Apesar de seu uso generalizado, o MBPP tem várias limitações. Os problemas são relativamente simples e podem não refletir a complexidade de tarefas de programação do mundo real. Além disso, os casos de teste não são exaustivos, então uma solução que passa em todos os testes ainda pode conter bugs ou falhar em casos extremos não cobertos pelo benchmark. Alguns pesquisadores notaram que o benchmark pode ser "enganado" por modelos que memorizam soluções dos dados de treinamento, pois os problemas estão disponíveis publicamente.
Outra crítica é que o benchmark foca principalmente na correção funcional e não avalia outros aspectos da qualidade do código, como legibilidade, eficiência ou estilo. Isso levou a pedidos por benchmarks mais abrangentes que incorporem esses fatores. No entanto, o MBPP continua sendo uma ferramenta valiosa para avaliações iniciais de modelos de geração de código.
Aplicações e Extensões
O MBPP tem sido usado em várias aplicações além da pesquisa acadêmica. Por exemplo, foi empregado para avaliar as capacidades de geração de código de assistentes de IA comerciais, como GitHub Copilot e outras ferramentas construídas sobre arquiteturas transformers. O benchmark também foi estendido ou adaptado para fins específicos, como testar geração de código multilíngue ou avaliar modelos em conjuntos de problemas mais desafiadores.
Além disso, o MBPP inspirou a criação de benchmarks semelhantes em outras linguagens de programação e domínios. Por exemplo, o conjunto de dados MBXP estende o MBPP para múltiplas linguagens, enquanto outros benchmarks focam em áreas específicas como ciência de dados ou desenvolvimento web. Essas extensões ajudam a ampliar o escopo da avaliação de geração de código e fornecem desafios mais diversos para sistemas de IA.
Direções Futuras
À medida que a IA generativa continua a avançar, benchmarks como o MBPP provavelmente evoluirão para acompanhar novas capacidades. Versões futuras podem incluir problemas mais complexos, incorporar cenários de programação do mundo real ou introduzir métricas que avaliem a qualidade do código além da correção. Pesquisadores também estão explorando maneiras de tornar os benchmarks mais robustos contra contaminação de dados e garantir que reflitam com precisão as habilidades dos modelos em configurações práticas.
O desenvolvimento contínuo do MBPP e de benchmarks semelhantes é crucial para o progresso da inteligência artificial na engenharia de software. Ao fornecer métodos de avaliação padronizados, esses benchmarks permitem comparações justas entre modelos e impulsionam melhorias na tecnologia de geração de código. Em 2025, o MBPP permanece um dos benchmarks mais citados no campo, e sua influência provavelmente persistirá por muitos anos.