Бенчмарк · coding

RepoCoder

niche 0 результатов 0 моделей

RepoCoder оценивает дополнение кода на уровне репозитория: по позиции в исходном файле модель должна предсказать недостающий код, используя контекст из всего репозитория. Его бенчмарк RepoEval сообщает Exact Match и Edit Similarity для дополнения строк и вызовов API, а для целых тел функций — долю прохождения модульных тестов.

Подробнее
Пример
Завершение частично написанной строки в файле репозитория, которая вызывает функцию или класс, определённые в другом файле того же проекта: модель должна использовать межфайловый контекст репозитория, чтобы получить правильное дополнение.
Метрика
Дополнения строк и вызовов API оцениваются метриками Exact Match (1, если предсказание точно совпадает со скрытым эталонным кодом, иначе 0) и Edit Similarity (1 − нормированное расстояние Левенштейна), усреднёнными по всем примерам в процентах. Дополнения тел функций оцениваются исполнением: сгенерированное тело заменяет исходное и должно пройти существующие модульные тесты репозитория.
Приёмка
Для строк/API предсказание принимается по каждому примеру сравнением с эталонным кодом, скрытым из исходного репозитория, — точно (EM) или по близости на основе расстояния редактирования (ES). Дополнение функции принимается, только если собственные модульные тесты репозитория проходят на сгенерированном теле. Репозитории отбирались свежими и качественными, чтобы снизить утечку обучающих данных.
Почему важно
Реальное программирование происходит внутри больших существующих кодовых баз, а не в изолированных фрагментах. RepoCoder/RepoEval проверяет, умеет ли модель использовать специфичные для проекта API, идентификаторы и соглашения, разбросанные по многим файлам, — это более реалистичная мера помощников по коду, чем синтез отдельных функций.
Разбор примера
Задача
Дополнение на уровне строки (RepoEval). В репозитории utils/config.py определяет вспомогательную функцию load_config(path), а trainer.py начинается с from .utils.config import load_config. По приведённому ниже коду и извлечённому межфайловому контексту репозитория предскажите единственную скрытую следующую строку внутри __init__: ```python class Trainer: def __init__(self, path): ```
Решение
self.config = load_config(path)
Разбор
Верно, потому что load_config — собственная вспомогательная функция репозитория, импортированная в начале trainer.py; выявить её можно только по межфайловому контексту репозитория, поэтому обобщённая догадка (например, встроенное чтение JSON) не подойдёт. Строка оценивается метрикой Exact Match относительно скрытого эталона, а Edit Similarity даёт частичный зачёт.

По этому бенчмарку пока нет проверенных результатов.