Бенчмарк · coding

Aider Polyglot

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

Aider Polyglot — бенчмарк редактирования кода из инструмента Aider, который проверяет, насколько хорошо LLM редактирует существующий код на многих языках программирования. Оценка — это доля задач, в которых правки дают корректный код, проходящий тесты задачи.

Подробнее
Пример
Типичный пункт — упражнение по программированию в стиле Exercism на одном из нескольких языков (Python, Rust, Go, Java, JavaScript или C++), где модель должна отредактировать предоставленные исходные файлы, чтобы реализовать нужную функцию и пройти её тесты.
Метрика
Метрика — процент решённых задач: задача засчитывается, только если отредактированный код проходит все автоматические тесты. Aider также отслеживает, как часто правки приходят в корректном, применимом формате.
Приёмка
Результаты проверяются автоматически: отредактированные файлы прогоняются через набор модульных тестов упражнения, и задача считается пройденной, только если проходят все тесты — без человеческих голосов и сравнения на точное совпадение.
Почему важно
Он отражает реальную работу разработчика — редактирование существующих файлов на многих языках, а не написание фрагментов с нуля, — поэтому это практический сигнал того, насколько модель полезна как помощник по программированию.
Разбор примера
Aider Polyglot берёт 225 самых трудных задач по программированию с Exercism на языках C++, Go, Java, JavaScript, Python и Rust; модели дают условие и файл-заготовку, и она должна вернуть правку (в формате блока SEARCH/REPLACE, принятом в aider), после которой проходят скрытые модульные тесты, с одной автоматической повторной попыткой, если первая не удалась. Характерная задача на Python «Acronym» просит преобразовать фразу в аббревиатуру: берём первую букву каждого слова в верхнем регистре, считаем пробелы и дефисы разделителями, а остальную пунктуацию игнорируем — дан файл `acronym.py` с `def abbreviate(text): pass`, нужно, чтобы прошли тесты вроде `abbreviate("Portable Network Graphics") == "PNG"` и `abbreviate("Ruby on Rails") == "ROR"`. Правильное решение заменяет заготовку блоком SEARCH/REPLACE: ``` acronym.py <<<<<<< SEARCH def abbreviate(text): pass ======= import re def abbreviate(text): words = re.split(r"[^A-Za-z']+", text) return "".join(word[0].upper() for word in words if word) >>>>>>> REPLACE ``` Рассуждение: разбиваем текст по любой последовательности не-буквенных символов, чтобы и пробелы, и дефисы служили границами слов, отбрасываем пустые фрагменты, а затем склеиваем первую букву каждого оставшегося слова в верхнем регистре — получая «ROR» для «Ruby on Rails». Задача считается решённой, только если проходят все модульные тесты, а итог бенчмарка — процент из 225 задач, решённых таким образом.

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