Вернуться к списку задач

RealCode

Таксономии
Instruction Following
Code Perception
Completion
Метрика
pass@k
execution_success
Языки
Python

Описание задачи

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: доля задач, в которых проект успешно собрался и тесты запустились без сбоев