Бенчмарк · agentic
SWE-rebench
SWE-rebench — постоянно обновляемый вариант бенчмарка кодинга SWE-bench, который берёт задачи из свежих issue на GitHub, чтобы снизить вероятность того, что модель уже видела их при обучении. Он показывает долю решённых инженерных задач (% resolved).
Подробнее
- Пример
- Типичная задача даёт модели реальный баг-репорт или запрос функции из репозитория на GitHub, и она должна отредактировать код проекта, чтобы устранить проблему.
- Метрика
- Метрика — % resolved: число задач, которые модель решила, делённое на общее число задач и выраженное в процентах.
- Приёмка
- Решение принимается автоматически, когда собственный набор тестов репозитория проходит на исправленном коде — фикс должен сделать падавшие тесты зелёными, не сломав остальные.
- Почему важно
- Поскольку задачи обновляются из свежих issue, бенчмарк даёт более честную оценку реального навыка программирования, которую труднее завысить, заучив старые публичные данные бенчмарков.
Разбор примера
Задача
Экземпляр SWE-rebench на основе реального Python-репозитория с GitHub (
python-slugify), зафиксированного на базовом коммите. Проблема: slugify('Hello, World!') возвращает 'hello--world' — идущие подряд разделители дают удвоенный дефис вместо одного, хотя ожидаемый slug — 'hello-world'. Нужно предоставить git-diff патч к снимку репозитория, который делает тест FAIL_TO_PASS проходящим, а все тесты PASS_TO_PASS оставляет зелёными.Решение
--- a/slugify/slugify.py
+++ b/slugify/slugify.py
@@ def slugify(text):
text = re.sub(r"[^\w\s-]", "", text).strip().lower()
- return re.sub(r"[\s]+", "-", text)
+ text = re.sub(r"[\s]+", "-", text)
+ return re.sub(r"-{2,}", "-", text)
Разбор
Построитель slug сворачивает пробелы в
-, но не убирает повторяющиеся дефисы, поэтому несколько разделителей просачиваются; добавление re.sub(r'-{2,}', '-', text) нормализует их до одного -. SWE-rebench оценивает исполнением: патч применяется в контейнере репозитория, и экземпляр считается решённым, только если тест FAIL_TO_PASS теперь проходит, а все тесты PASS_TO_PASS по-прежнему проходят (лидерборд = % решённых).