Бенчмарк · coding
BigCodeBench
BigCodeBench — бенчмарк генерации кода на Python из 1140 реальных задач программирования, каждая из которых требует комбинировать вызовы нескольких библиотек; оценивается через исполняемый Pass@1 — долю задач, чьё сгенерированное решение проходит все юнит-тесты.
Подробнее
- Пример
- Типичная задача даёт сигнатуру функции и подробный docstring — например, «загрузить CSV, посчитать сводную статистику по группам с помощью pandas, затем построить столбчатую диаграмму через matplotlib» — и просит модель написать тело, корректно связывающее несколько вызовов библиотек.
- Метрика
- Метрика — калиброванный Pass@1, обычно с жадным декодированием: каждая сгенерированная программа выполняется против юнит-тестов задачи в песочнице, задача считается решённой только если проходят все тесты, а итог — процент решённых задач. Публикуются два среза — Complete (дописать функцию по docstring) и Instruct (только инструкция на естественном языке) — плюс усложнённый набор Hard из 148 задач.
- Приёмка
- Приём — исключительно по исполнению: решение должно пройти все написанные вручную юнит-тесты задачи (в среднем 5,6 на задачу, при ~99% среднем покрытии ветвей) при запуске в изолированной среде. Нет ни частичного зачёта, ни сверки с эталонным текстом.
- Почему важно
- В отличие от коротких однофункциональных бенчмарков вроде HumanEval, BigCodeBench проверяет, способна ли модель следовать сложным инструкциям и правильно использовать разнообразные реальные API из 139 библиотек и 7 доменов, что лучше отражает практическую работу с кодом; срез Instruct и набор Hard дополнительно нагружают следование инструкциям и композицию инструментов.
Разбор примера
Задача
```python
import pandas as pd
import numpy as np
def task_func(df, column):
"""
Стандартизировать заданный числовой столбец DataFrame к нулевому среднему
и единичной дисперсии и вернуть изменённый DataFrame.
Требования:
- pandas
- numpy
Параметры:
df (pd.DataFrame): Входные данные.
column (str): Имя числового столбца для стандартизации.
Возвращает:
pd.DataFrame: DataFrame со стандартизированным столбцом.
Пример:
>>> df = pd.DataFrame({'a': [1, 2, 3, 4, 5]})
>>> round(task_func(df, 'a')['a'].mean(), 5)
0.0
"""
```
Решение
```python
df[column] = (df[column] - np.mean(df[column])) / np.std(df[column])
return df
```
Разбор
Вычитание среднего по столбцу и деление на стандартное отклонение генеральной совокупности (np.std, ddof=0) масштабирует значения к среднему 0 и единичной дисперсии, удовлетворяя docstring и его doctest (среднее округляется до 0.0), и задействует обе требуемые библиотеки. Оценка основана на исполнении: BigCodeBench запускает завершённую функцию на скрытых юнит-тестах задачи и присуждает Pass@1, только если проходят все тесты.
По этому бенчмарку пока нет проверенных результатов.