Бенчмарк · coding

HumanEval+

saturated 2 результатов 2 моделей

HumanEval+ — это строгая расширенная версия бенчмарка генерации кода HumanEval от OpenAI: он сохраняет исходные 164 написанные вручную задачи на Python, но добавляет примерно в 80x больше тест-кейсов (через фреймворк EvalPlus) и оценивается метрикой pass@k (обычно pass@1).

Подробнее
Пример
Каждый пункт даёт сигнатуру функции на Python плюс докстринг на естественном языке — часто с примером-doctest — описывающий нужное поведение (например, «вернуть элементы списка, строго большие порога, в исходном порядке»), а модель должна сгенерировать тело функции, которое это реализует.
Метрика
Метрика — pass@k: для каждой задачи семплируется n >= k завершений, c из них проходят все тесты, и несмещённая оценка pass@k = 1 - C(n-c, k) / C(n, k) усредняется по 164 задачам (чаще всего сообщают pass@1). Завершение засчитывается, только если оно проходит весь расширенный набор тестов, поэтому баллы на HumanEval+ ниже, чем на обычном HumanEval.
Приёмка
Каждое завершение выполняется в изолированной песочнице на расширенном наборе тестов с ограничениями по времени и памяти и принимается, только если проходят все тест-кейсы — исходные тесты плюс сгенерированные EvalPlus входные данные. Частичного зачёта нет: один провалившийся или зависший по времени тест проваливает весь образец.
Почему важно
Исходные тесты HumanEval разрежены, из-за чего слегка некорректные решения проскакивают и завышают заявленные показатели прохождения; в ~80x более плотные тесты HumanEval+ вскрывают эти ложные срабатывания и перетасовывают рейтинги моделей, делая его стандартной, более жёсткой проверкой корректности для моделей генерации кода.
Разбор примера
Задача
Показательный пункт в стиле HumanEval+ — типизированная сигнатура на Python с докстрингом и doctest, где модель должна дописать тело функции: ```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] """ ```
Решение
```python
from typing import List

def above_threshold(numbers: List[float], threshold: float) -> List[float]:
    return [n for n in numbers if n > threshold]
```
Разбор
Списковое включение оставляет ровно те элементы, что строго больше порога, и сохраняет порядок входа, удовлетворяя спецификации и doctest ([5.5, 8.0]). Оценка прогоняет это на полном наборе HumanEval+ — множество автогенерируемых крайних случаев, таких как пустые списки, отрицательные и полностью равные значения, — и ставит 1, только если проходят все тесты.
0 4.5 9 13.5 18 2026-06-25 2026-07-04 2026-07-13 iLLaDA-Instruct · 16.5 · 2026-06-25 Qwen3.5-4B · 13 · 2026-07-13
iLLaDA-Instruct Qwen3.5-4B
Хронология
Дата Модель Результат Источник
2026-07-13 Qwen3.5-4B 13.0% Flint сжимает цепочки рассуждений для снижения расхода токенов при сохранении точности
2026-06-25 iLLaDA-Instruct 16.5pts iLLaDA: 8-миллиардная языковая модель с маскированной диффузией и полностью двунаправленным вниманием