Benchmark · coding
HumanEval+
HumanEval+ é uma versão rigorosa e ampliada do benchmark de geração de código HumanEval da OpenAI: mantém os 164 problemas de programação em Python escritos à mão originais, mas adiciona cerca de 80x mais casos de teste (via framework EvalPlus), e é pontuado com a métrica pass@k (geralmente pass@1).
Saiba mais
- Exemplo
- Cada item fornece uma assinatura de função em Python mais um docstring em linguagem natural — muitas vezes com um exemplo de doctest — descrevendo o comportamento desejado (por exemplo, 'retornar os elementos da lista estritamente maiores que um limiar, na ordem'), e o modelo deve gerar o corpo da função que o implementa.
- Pontuação
- A métrica é pass@k: para cada problema são amostradas n >= k completações, c passam em todos os testes, e o estimador não enviesado pass@k = 1 - C(n-c, k) / C(n, k) é calculado como média sobre os 164 problemas (pass@1 é o mais reportado). Uma completação conta apenas se passar em todo o conjunto de testes ampliado, então as pontuações no HumanEval+ ficam abaixo das do HumanEval original.
- Verificação
- Cada completação é executada em um sandbox isolado contra o conjunto de testes ampliado sob limites de tempo e memória, e é aceita apenas se todos os casos de teste passarem — os testes originais mais as entradas geradas pelo EvalPlus. Não há crédito parcial: um único teste que falhe ou estoure o tempo reprova a amostra inteira.
- Por que importa
- Os testes originais do HumanEval são esparsos, deixando soluções sutilmente incorretas passarem e inflarem as taxas de aprovação reportadas; os testes ~80x mais densos do HumanEval+ expõem esses falsos positivos e reordenam os rankings de modelos, tornando-o uma verificação de correção padrão e mais rigorosa para modelos de geração de código.
Exemplo resolvido
Tarefa
Um item representativo no estilo HumanEval+ — uma assinatura tipada em Python com docstring e doctest, na qual o modelo deve completar o corpo da função:
```python
from typing import List
def above_threshold(numbers: List[float], threshold: float) -> List[float]:
"""Return the numbers from the input list that are strictly
greater than the given threshold, preserving their original order.
>>> above_threshold([1.0, 5.5, 2.3, 8.0], 3.0)
[5.5, 8.0]
"""
```
Solução
```python
from typing import List
def above_threshold(numbers: List[float], threshold: float) -> List[float]:
return [n for n in numbers if n > threshold]
```
Explicação
A compreensão de lista mantém exatamente os elementos estritamente maiores que o limiar e preserva a ordem de entrada, satisfazendo a especificação e o doctest ([5.5, 8.0]). A correção executa isso contra todo o conjunto do HumanEval+ — muitos casos de borda autogerados como listas vazias, negativos e valores todos iguais — e atribui 1 apenas se todos os testes passarem.
| Data | Modelo | Pontuação | Fonte |
|---|---|---|---|
| 2026-07-13 | Qwen3.5-4B | 13.0% | Flint comprime rastros de raciocínio para reduzir o uso de tokens enquanto mantém a precisão |