Бенчмарк · coding

RepoBench

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

RepoBench — бенчмарк автодополнения кода на уровне репозитория для Python и Java, который проверяет, способна ли система предсказать следующую строку кода, используя как контекст внутри файла, так и кросс-файловый контекст из других файлов того же репозитория. Он состоит из трёх задач — поиск (RepoBench-R), дополнение следующей строки (RepoBench-C) и сквозной конвейер (RepoBench-P) — и оценивается главным образом по Exact Match и Edit Similarity, а для задачи поиска — по точности поиска.

Подробнее
Пример
По предшествующим строкам исходного файла плюс фрагментам кода, извлечённым из других файлов того же репозитория (например, модуль, определяющий вспомогательную функцию или класс), предсказать единственную следующую строку кода — обычно строку, которая вызывает или ссылается на что-то, определённое в другом файле.
Метрика
Дополнение (RepoBench-C и -P): предсказанная следующая строка сравнивается с эталонной по Exact Match (доля полностью идентичных строк) и Edit Similarity (оценка 0–100 = 1 − нормированное расстояние Левенштейна); также сообщается CodeBLEU. Поиск (RepoBench-R): accuracy@k — доля элементов, у которых эталонный кросс-файловый фрагмент входит в топ-k найденных кандидатов.
Приёмка
Оценка автоматическая и основана на эталоне (без выполнения кода): выходная строка модели нормализуется и сравнивается по строке с настоящей следующей строкой, скрытой из исходного репозитория. По Exact Match дополнение засчитывается как верное, только если оно строково идентично эталонной строке; Edit Similarity даёт частичный балл; поиск принимается, когда эталонный фрагмент попадает в топ-k.
Почему важно
Настоящие ассистенты для кода должны рассуждать по всему репозиторию, а не только по открытому файлу. RepoBench изолирует моделирование кросс-файлового контекста — извлечение нужного контекста и предсказание зависящей от него следующей строки — поэтому он стал стандартным полигоном для репозиторно-осведомлённых и длинноконтекстных моделей кода.
Разбор примера
Задача
Кросс-файловый контекст (helpers/formatting.py): def to_title(text): return text.strip().title() Контекст внутри файла (report.py): from helpers.formatting import to_title def make_heading(raw): Предскажите следующую строку.
Решение
return to_title(raw)
Разбор
Скрытая следующая строка вызывает to_title — вспомогательную функцию, определённую в кросс-файловом фрагменте и импортированную в начале, — применяя её к аргументу функции, что и делал исходный код репозитория в этом месте; модель, игнорирующая другой файл, не смогла бы узнать, что нужен именно вызов to_title. Оценка: Exact Match с эталонной строкой, а Edit Similarity даёт частичный балл за близкие совпадения.

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