Описание задачи
RealCodeJava — это бенчмарк для оценки способности моделей дописывать тело функции в реальных Java-проектах. Задачи построены на основе настоящих репозиториев и валидируются через выполнение юнит-тестов. Датасет содержит 298
задач.
Тестируемые навыки моделей: Instruction Following, Code Perception, Completion
Авторы: Дмитрий Воробьев, Павел Задорожный, Родион Левичев, Павел Адаменко, Айдар Валеев, Дмитрий Салихов, Дмитрий Бабаев
Мотивация
Датасет проверяет, насколько хорошо модели:
- Дополняют тело функции по контексту (left_context, right_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] — тело функции-истины без сигнатуры;stub
[str] — тело функции-заглушки без сигнатуры;right_context
[str] — код после функции, включая другие функции и классы;left_context
[str] — код перед функцией, включая импорты и классы;image_name
[str] — Docker-образ, в котором выполняется проект;build_command
[str] — команда для сборки проекта перед тестами;test_command
[str] — команда запуска тестов;file_path
[str] — путь до файла, в котором находится функция;PASS_TO_PASS
[list] — список тестов, которые успешно проходят;FAIL_TO_PASS
[list] — список тестов, которые перестали падать;intent
[str] — название функции или метода;intent_type
[str] — тип элемента (function, class и т.д.)
Промпты
Для задачи были подготовлены 10 промптов, которые были равномерно распределены по вопросам по принципу "один вопрос – один промпт". Шаблоны в фигурных скобках в промпте заполняются из полей внутри поля inputs
в каждом вопросе.
Пример промпта:
```
Есть контекст задачи:
{left_context}
Напишите содержимое последней функции после заголовка с аргументами. В ответе ожидается только тело одной функции. Не добавляйте в ответ новые функции и классы, старайтесь использовать те, что уже есть в контексте, или импортированы в самом начале. Соблюдайте отступы в коде и форматирование как в примере. Ответ оформите так:
```java
поместите сюда содержимое вашего ответа```
```
Создание датасета
Бенчмарк построен на основе 27 GitHub-репозиториев, созданных в 2024-2025 гг. Для каждой задачи извлекается функция, ее контекст и проверяется прохождение изначальных тестов при генерации нового тела. Все примеры валидны и воспроизводимы.
Метрики
Для агрегированной оценки ответов моделей используются следующие метрики:
Pass@1
: доля задач, в которых хотя бы одна генерация прошла все тесты
execution_success
: доля задач, в которых проект успешно собрался и тесты запустились без сбоев