Benchmark · coding
HumanEval+
HumanEval+ es una versión rigurosa y ampliada del benchmark de generación de código HumanEval de OpenAI: conserva los 164 problemas de programación en Python escritos a mano originales, pero añade aproximadamente 80x más casos de prueba (mediante el framework EvalPlus), y se puntúa con la métrica pass@k (normalmente pass@1).
Leer más
- Ejemplo
- Cada ítem da una firma de función en Python más un docstring en lenguaje natural — a menudo con un ejemplo de doctest — que describe el comportamiento deseado (por ejemplo, «devolver los elementos de la lista estrictamente mayores que un umbral, en orden»), y el modelo debe generar el cuerpo de la función que lo implementa.
- Puntuación
- La métrica es pass@k: para cada problema se muestrean n >= k completaciones, c pasan todas las pruebas, y el estimador insesgado pass@k = 1 - C(n-c, k) / C(n, k) se promedia sobre los 164 problemas (pass@1 es lo más reportado). Una completación cuenta solo si pasa todo el conjunto de pruebas ampliado, por lo que las puntuaciones en HumanEval+ son más bajas que en HumanEval original.
- Verificación
- Cada completación se ejecuta en un sandbox aislado contra el conjunto de pruebas ampliado con límites de tiempo y memoria, y se acepta solo si pasan todos los casos de prueba — las pruebas originales más las entradas generadas por EvalPlus. No hay crédito parcial: una sola prueba fallida o que exceda el tiempo hace fallar toda la muestra.
- Por qué importa
- Las pruebas originales de HumanEval son escasas, lo que permite que soluciones sutilmente incorrectas se cuelen e inflen las tasas de aprobación reportadas; las pruebas ~80x más densas de HumanEval+ exponen estos falsos positivos y reordenan los rankings de modelos, convirtiéndolo en una verificación de corrección estándar y más exigente para modelos de generación de código.
Ejemplo resuelto
Tarea
Un ítem representativo al estilo de HumanEval+ — una firma tipada en Python con un docstring y un doctest, donde el modelo debe completar el cuerpo de la función:
```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]
"""
```
Solución
```python
from typing import List
def above_threshold(numbers: List[float], threshold: float) -> List[float]:
return [n for n in numbers if n > threshold]
```
Explicación
La comprensión de lista conserva exactamente los elementos estrictamente mayores que el umbral y preserva el orden de entrada, satisfaciendo la especificación y el doctest ([5.5, 8.0]). La corrección lo ejecuta contra todo el conjunto de HumanEval+ — muchos casos límite autogenerados como listas vacías, negativos y valores todos iguales — y otorga 1 solo si pasan todas las pruebas.
| Fecha | Modelo | Puntuación | Fuente |
|---|---|---|---|
| 2026-07-13 | Qwen3.5-4B | 13.0% | Flint comprime las trazas de razonamiento para reducir el uso de tokens mientras mantiene la precisión |
| 2026-06-27 | iLLaDA-Instruct | 16.5pts | iLLaDA: Un modelo de lenguaje de difusión enmascarado de 8B con atención totalmente bidireccional |