Benchmark · coding

EvalPlus

0 resultados 0 modelos

O EvalPlus avalia com rigor o código gerado por LLM ampliando os benchmarks HumanEval e MBPP (como HumanEval+ e MBPP+) com muito mais casos de teste; a métrica é pass@k (normalmente pass@1).

Saiba mais
Exemplo
Uma tarefa de completar função em Python: dada a assinatura e um docstring em linguagem natural com alguns exemplos, o modelo escreve o corpo, que é então executado contra um conjunto de testes bastante ampliado, com casos de borda (entradas vazias, limites, valores grandes) que o benchmark original deixava passar.
Pontuação
A métrica é pass@k, quase sempre pass@1. Um problema só conta como resolvido se o código gerado passar em todos os testes (os «base» originais mais os novos «plus»). pass@k é a estimativa não enviesada: com n≥k amostras e c corretas, 1 − C(n−c, k)/C(n, k); a pontuação relatada é a fração de problemas resolvidos em todo o conjunto.
Verificação
Cada solução é executada em sandbox contra o conjunto completo base+plus com tempo limite por teste e só é aceita se todas as asserções passarem. As entradas extras são geradas por mutação ciente de tipos mais sementes de um LLM e filtradas contra soluções de referência validadas, então um veredito «passed» significa concordar com a referência em cada entrada.
Por que importa
Os conjuntos de teste originais do HumanEval/MBPP são fracos demais e deixam passar código plausível, mas incorreto, superestimando a correção dos modelos; os conjuntos do EvalPlus, ~80× (HumanEval+) e ~35× (MBPP+) maiores, capturam esses erros e costumam reduzir o pass@1 em vários pontos, tornando-se o padrão mais confiável para avaliar LLMs de código.
Exemplo resolvido
Tarefa
Item representativo no estilo EvalPlus (HumanEval+) — complete o corpo da função a partir da sua assinatura e do docstring: ```python from typing import List def sum_even_at_odd_index(numbers: List[int]) -> int: """Return the sum of all even values located at odd indices. >>> sum_even_at_odd_index([3, 8, 7, 4, 5]) 12 >>> sum_even_at_odd_index([1, 3, 5]) 0 """ ```
Solução
```python
def sum_even_at_odd_index(numbers: List[int]) -> int:
    return sum(n for i, n in enumerate(numbers) if i % 2 == 1 and n % 2 == 0)
```
Explicação
A solução percorre a lista com enumerate, mantém os valores em índices ímpares (i % 2 == 1) que são pares (n % 2 == 0) e os soma, correspondendo aos dois exemplos do docstring e a casos de borda como lista vazia ou totalmente ímpar. A correção é binária (pass/fail): a função é executada contra todo o conjunto base+plus e o item só conta se todos os testes passarem.

Ainda não há pontuações verificadas para este benchmark.