Описание задачи
RealCodeFG — это бенчмарк для оценки способности моделей дописывать тело функции в реальных Python-проектах. Задачи построены на основе настоящих репозиториев и валидируются через выполнение юнит-тестов. Датасет содержит 802
задачи.
Тестируемые навыки моделей: Instruction Following, Code Perception, Completion
Авторы: Павел Задорожный, Родион Левичев, Павел Адаменко, Айдар Валеев, Дмитрий Бабаев, Денис Кокосинский
Мотивация
Датасет проверяет, насколько хорошо модели:
- Дополняют тело функции по контексту (
`left_context`
);
- Интегрируются в существующий проект без нарушения логики;
- Проходят реальные тесты после вставки тела.
Основная метрика — `pass@k`
, оценивающая успешное выполнение тестов в Docker-среде.
Описание датасета
Поля датасета
instruction
[str] — строка, содержащая формулировку задания по генерации тела функции;inputs
— Вводные данные, формирующие задание для модели. Могут включать одну или несколько модальностей - видео, аудио, изображение, текст.left_context
[str] — код перед функцией, включая импорты и классы;
outputs
[str] — одномерный массив строк размера n_samples, где n_samples — количество требуемых сэмплов для подсчета pass@k;meta
— Метаданные, относящиеся к тестовому примеру, но не используемые в вопросе (скрытые от тестируемой модели).id
[int] — уникальный идентификатор примера;repo
[str] — имя GitHub-репозитория, из которого извлечена задача;base_commit
[str] — хэш коммита, зафиксировавшего состояние репозитория;gt
[str] — тело функции-истины без сигнатуры;right_context
[str] — код после функции, включая другие функции и классы;left_context
[str] — код перед функцией, включая импорты и классы;image_name
[str] — Docker-образ, в котором выполняется проект;build_command
[str] — команда для сборки проекта перед тестами;test_command
[str] — команда запуска тестов;fn
[str] — путь до файла, в котором находится функция;PASS_TO_PASS
[list] — список тестов, которые успешно проходят;FAIL_TO_PASS
[list] — список тестов, которые перестали падать;intent
[str] — название функции или метода;intent_type
[str] — тип элемента (function, class и т.д.)
Промпты
Для задачи были подготовлены 10 промптов, которые были равномерно распределены по вопросам по принципу "один вопрос – один промпт". Шаблоны в фигурных скобках в промпте заполняются из полей внутри поля inputs
в каждом вопросе.
Пример промпта:
Ответ оформите так: ```python
<code>```Контекст:
{left_context}
Требуется: продолжить только тело одной функции. Строго соблюдайте отступы Python. Не добавляйте лишнего текста и не пишите другие функции. Ваша генерация будет вставлена сразу после контекста и запущена тестами.
Создание датасета
Бенчмарк построен на основе 95 GitHub-репозиториев, созданных в 2024 году. Всего 802 задачи: для каждой задачи извлекается функция, ее контекст и проверяется прохождение изначальных тестов при генерации нового тела. Все примеры валидны и воспроизводимы.
Метрики
Для агрегированной оценки ответов моделей используются следующие метрики:
Pass@1
: доля задач, в которых хотя бы одна генерация прошла все тесты
execution_success
: доля задач, в которых проект успешно собрался и тесты запустились без сбоев