O HumanEval é um conjunto de problemas de programação em Python publicado pela OpenAI junto com o artigo sobre o modelo Codex. Ele virou uma das referências mais citadas quando alguém quer comparar modelos de IA que escrevem código.

Como funciona

Cada problema traz uma função com nome, assinatura e uma descrição em texto, chamada de docstring. O modelo recebe esse início e precisa completar o corpo da função.

Depois, o código gerado roda contra testes unitários escondidos. Se todos passam, o problema conta como resolvido. Se qualquer teste falha, conta como erro.

O resultado mais comum é o pass@1: a chance de o modelo acertar na primeira tentativa. Também existe o pass@k, que permite k tentativas e verifica se pelo menos uma passa.

A vantagem desse método é que ele não depende de opinião. O código funciona ou não funciona, e qualquer pessoa pode repetir o teste.

Exemplo prático

Imagine um problema assim: escrever uma função que recebe uma lista de números e diz se dois deles estão mais próximos do que um limite dado.

Python
def has_close_elements(numbers, threshold):
    """Retorna True se existirem dois números a menos de threshold de distância."""

O modelo escreve o corpo. Os testes então rodam com listas diferentes, incluindo casos de borda como lista vazia. Se a resposta funcionar em todos, esse problema soma um ponto.

Quando você vê um modelo anunciado com uma porcentagem no HumanEval, é isso que está por trás: a fração de problemas desse tipo que ele resolveu.

Para que serve

O HumanEval serve para ter um número simples e repetível de qualidade de geração de código. Quem escolhe um modelo para um assistente de programação usa esse tipo de nota como primeiro filtro.

Ele também ajuda times que treinam ou ajustam modelos a perceber se uma mudança melhorou ou piorou a capacidade de programar.

Limites do HumanEval

Os problemas são pequenos, de uma função só, e o conjunto é público. Isso significa que um modelo pode ter visto exemplos parecidos no treino, o que infla a nota.

Trabalho real de programação envolve vários arquivos, bibliotecas e contexto de projeto. Por isso o HumanEval não substitui testes no seu próprio código.

Para tarefas mais próximas do dia a dia, como corrigir issues de repositórios reais, veja o SWE-bench. Use as duas notas juntas e, sempre que possível, faça seu próprio teste com um caso do seu projeto.