Бенчмарк · coding
MBPP+
MBPP+ — это версия кодинг-бенчмарка MBPP (Mostly Basic Python Problems) со строго расширенным набором тестов, построенная на фреймворке EvalPlus. Она измеряет функциональную корректность сгенерированных моделью функций на Python и выражается метрикой pass@1.
Подробнее
- Пример
- Типичное задание содержит краткое описание на естественном языке простой функции на Python, которую нужно написать (например, «найти общие элементы двух списков»), вместе с несколькими примерами-утверждениями (assert), задающими ожидаемое поведение.
- Метрика
- Метрика — pass@k, обычно pass@1: задача считается решённой, только если сгенерированная функция проходит все тесты; итоговый балл — доля решённых задач в процентах. pass@k вычисляется стандартной несмещённой оценкой по n сгенерированным вариантам.
- Приёмка
- Каждая функция-кандидат запускается в песочнице против полного набора тестов — исходных утверждений MBPP плюс автоматически сгенерированных входов EvalPlus (мутация с учётом типов и подсказки от LLM, примерно в 35 раз больше тестов, чем в MBPP). Задача засчитывается, только если функция проходит все тесты в пределах лимита времени.
- Почему важно
- В оригинальном MBPP всего около трёх тестов на задачу, поэтому неочевидно ошибочный код может проскочить как ложноположительный результат. MBPP+ ужесточает проверку, так что публикуемые показатели прохождения и рейтинги моделей отражают реальную корректность, а не слабость тестов.
Разбор примера
Задача
Напишите функцию, которая находит общие элементы двух заданных списков и возвращает их как отсортированный список уникальных значений. Ваш код должен проходить тесты вида: assert shared_elements([1, 2, 3, 4], [3, 4, 5, 6]) == [3, 4]
Решение
```python
def shared_elements(list1, list2):
return sorted(set(list1) & set(list2))
```
Разбор
Пересечение двух списков как множеств с последующей сортировкой даёт уникальные общие значения по порядку и удовлетворяет утверждениям. MBPP+ дополнительно прогоняет множество дополнительных входов (пустые списки, дубликаты, более крупные случаи); при оценке pass@1 решение засчитывается, только если проходит их все.
По этому бенчмарку пока нет проверенных результатов.