Benchmark · coding

EvalPlus

0 resultados 0 modelos

EvalPlus evalúa con rigor el código generado por LLM ampliando los benchmarks HumanEval y MBPP (como HumanEval+ y MBPP+) con muchos más casos de prueba; la métrica es pass@k (normalmente pass@1).

Leer más
Ejemplo
Una tarea de completar una función de Python: dada la firma y un docstring en lenguaje natural con algunos ejemplos, el modelo escribe el cuerpo, que luego se ejecuta contra un conjunto de pruebas muy ampliado que añade casos límite (entradas vacías, fronteras, valores grandes) que el benchmark original omitía.
Puntuación
La métrica es pass@k, casi siempre pass@1. Un problema cuenta como resuelto solo si el código generado pasa todas las pruebas (las «base» originales más las nuevas «plus»). pass@k es la estimación insesgada: con n≥k muestras y c correctas, 1 − C(n−c, k)/C(n, k); la puntuación reportada es la fracción de problemas resueltos en todo el conjunto.
Verificación
Cada solución se ejecuta en un sandbox contra el conjunto completo base+plus con un tiempo límite por prueba y se acepta solo si pasan todas las aserciones. Las entradas adicionales se generan por mutación con conocimiento de tipos más semillas de un LLM y se filtran contra soluciones de referencia validadas, así que un veredicto «passed» significa coincidir con la referencia en cada entrada.
Por qué importa
Los conjuntos de pruebas originales de HumanEval/MBPP son demasiado escasos y dejan pasar código plausible pero incorrecto, sobrestimando la corrección de los modelos; los conjuntos de EvalPlus, ~80× (HumanEval+) y ~35× (MBPP+) más grandes, detectan esos errores y suelen bajar pass@1 varios puntos, convirtiéndose en el estándar más fiable para evaluar LLM de código.
Ejemplo resuelto
Tarea
Elemento representativo al estilo de EvalPlus (HumanEval+): completa el cuerpo de la función a partir de su firma y su 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 """ ```
Solución
```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)
```
Explicación
La solución recorre la lista con enumerate, conserva los valores en índices impares (i % 2 == 1) que son pares (n % 2 == 0) y los suma, lo que coincide con ambos ejemplos del docstring y con casos límite como una lista vacía o totalmente impar. La calificación es binaria (pass/fail): la función se ejecuta contra todo el conjunto base+plus y el ítem solo cuenta si pasan todas las pruebas.

Aún no hay puntuaciones verificadas para este benchmark.