SWE-bench

Материал из Systems analysis Wiki
Перейти к навигации Перейти к поиску

SWE-bench — это масштабный бенчмарк (набор тестовых задач) для оценки возможностей больших языковых моделей (LLM) в области автоматизированной разработки и отладки программного обеспечения[1]. Он был разработан группой исследователей из Принстонского университета и других организаций и представлен на конференции ICLR 2024[2]. SWE-bench отличается от традиционных кодовых бенчмарков использованием реальных задач из практики разработки: тестовый набор включает 2294 задачи, основанных на закрытых задачах (issues) и соответствующих исправлениях (pull request) из 12 популярных открытых Python-репозиториев на GitHub[1][3]. Каждая задача содержит описание проблемы (issue) и предоставляет модели доступ к исходному коду соответствующего проекта; цель модели — сгенерировать минимальные изменения в кодовой базе (патч), которые исправят указанную проблему[1][3].

Методика и особенности оценки

SWE-bench моделирует реальный процесс разработки программного обеспечения. Для каждой задачи модели предъявляется текст исходного GitHub-issue (описание проблемы) и снапшот кода репозитория в версии до внесения исправления[4]. Модели (или агенту на основе модели) требуется проанализировать исходный код, понять природу ошибки или требуемого изменения и внести правки в соответствующие файлы кода, устранив проблему[4][5]. Валидация решения автоматизирована: к каждой задаче привязаны реальные модульные тесты из pull request, закрывшего эту проблему. Среди них имеются как «падающие-проходящие» тесты (fail-to-pass, которые не проходят на исходном коде, но должны пройти после применения правильного исправления), так и тесты регрессии (pass-to-pass, которые изначально проходят и должны продолжать проходить после внесения изменений)[3]. Предложенный моделью патч применяется к коду, после чего запускаются соответствующие тесты: если все fail-to-pass тесты начинают проходить и при этом pass-to-pass тесты не нарушены, задача считается решённой корректно[3]. Такой подход к оценке позволяет проверить не только способность модели генерировать синтаксически корректный код, но и умение действительно решить поставленную задачу без нарушения существующей функциональности. При этом модели приходится оперировать большим контекстом (целый репозиторий кода), понимать взаимосвязи между компонентами и координировать изменения в нескольких файлах одновременно[1] — всё это значительно сложнее типичных задач по написанию функции по описанию.

В оценках SWE-bench обычно участвуют не просто сами LLM, а агентные системы, которые оборачивают модель вспомогательными инструментами (например, для навигации по файлам, выполнения кода, использования отладчика и т.п.)[4][6]. Такая система имитирует реальный цикл разработки: модель может последовательно просматривать файлы, запускать тесты или скрипты и поэтапно улучшать решение, пока не достигнет успешного результата[4]. Показательно, что эффективность решения задач SWE-bench во многом зависит от качества этого «скаффолдинга» (инфраструктуры агента): одни и те же базовые модели могут показывать разный результат в зависимости от того, как организовано взаимодействие с репозиторием и инструментами[4][7]. Таким образом, SWE-bench служит мерилом возможностей совокупности модели и её стратегии решения задач, приближая оценку к реальным условиям работы автономного разработчика-ИИ[4][7].

Варианты набора задач

Авторы SWE-bench и сообщество впоследствии представили несколько производных наборов для различных целей оценки:

  • SWE-bench Lite — облегчённая версия бенчмарка, включающая ~300 задач[8], отобранных так, чтобы снизить сложность и вычислительные затраты на тестирование моделей. Этот поднабор был создан для быстрого эксперимента с моделями и исключает наиболее трудоёмкие валидации, сохраняя при этом репрезентативность основных проблем[7]. По сути, Lite содержит более простые и короткие задачи по исправлению ошибок, и результаты моделей на Lite обычно выше, чем на полном наборе, за счёт исключения самых сложных случаев[7].
  • SWE-bench Verified — отфильтрованный ручной проверкой поднабор, представленный в августе 2024 г. совместно с OpenAI[7]. Исследователи привлекли 93 профессиональных разработчика для анализа каждой задачи исходного бенчмарка и исключили случаи, где исходное описание проблемы слишком нечёткое или требуемое тестами поведение не вытекает явно из условия задачи[7]. Также были убраны задачи, которые на практике невозможно решить из-за проблем со средой или некорректных тестов[7]. В итоге сформирован набор из 500 задач, гарантированно решаемых и корректно сформулированных[7]. SWE-bench Verified призван обеспечить более надёжную оценку возможностей моделей, устранив случаи, когда даже правильное решение отвергается из-за неадекватности тестов или задания[7]. Этот набор заменил собой оригинальные тестовые выборки SWE-bench (полную и Lite) в качестве основного ориентира для сравнения моделей[7]. Кроме того, вместе с Verified были опубликованы оценки сложности задач (например, выделены «лёгкие» задачи, решаемые за <15 минут человеком, и «трудные», требующие >1 часа)[7], а также выпущен новый инструментальный каркас на базе Docker для более стабильного и воспроизводимого прогона тестов[7].
  • SWE-bench Multimodal — расширение бенчмарка, представленное в январе 2025 г., включающее задачи, где описание проблемы содержит не только текст, но и визуальные элементы (например, изображения интерфейса, скриншоты ошибок и т.п.)[8]. Данный набор (517 задач[8]) проверяет способность моделей и агентов понимать и использовать визуальную информацию при решении задач программирования. Оценка на мультимодальном наборе организована аналогично, но требует от модели мульти-modal возможностей (например, распознавания текста на изображениях). Тестовая часть SWE-bench Multimodal оставлена закрытой (скрытой) для предотвращения подгонки решений под известные ответы; разработчики могут отправлять решения на удалённый лоббард для оценки своих моделей на этих задачах[2].

Помимо этих основных вариаций, вокруг SWE-bench сформировалась экосистема инструментов: SWE-agent — открытый программный «агент»-решатель, демонстрирующий передовые результаты на задачах бенчмарка[2]; SWE-smith — фреймворк для обучения собственных моделей-разработчиков; SWE-REX — инструмент для расширенного извлечения и обработки информации из репозиториев и др. Эти проекты нацелены на упрощение воспроизведения результатов и продвижение исследований в области автономных систем программирования.

Результаты и прогресс моделей

При первом появлении SWE-bench выявил значительный разрыв между современными LLM и навыками опытных программистов. Авторы сообщали, что даже самые мощные модели начала 2023 года справлялись лишь с единицами процентов задач: например, модель Claude 2 от компании Anthropic успешно решала менее 2% заданий полного набора[1]. Специально обученная авторами бенчмарка модель (на базе LLaMA, получившая название SWE-Llama) и проприетарные модели типа GPT-4 могли решать в основном только самые простые ошибки[1]. Эти низкие первоначальные метрики подчеркнули сложность SWE-bench и послужили стимулом к развитию новых подходов.

В течение 2024 года, по мере появления более совершенных моделей и агентных схем, результаты значительно улучшились. Исследователи из Princeton представили систему SWE-agent, объединяющую GPT-4 с поиском по коду, планированием и другими инструментами; она достигла около 12,5% решённых задач на полном наборе, установив новый ориентир для академических моделей[5]. К середине 2024 г. на официальном лидерборде SWE-bench лучшие решения (включая проприетарные) достигли порядка 20% успешных решений на полном бенчмарке и до 43% на упрощённом наборе Lite[7]. Такой рост связан с улучшением моделей (например, появление GPT-4, Claude 2 и 3) и особенно с развитием “скаффолдинга" — внешних стратегий, позволяющих модели эффективно разбивать задачу на шаги, читать документацию, запускать отладочные сессии и пр.[7].

После введения в конце 2024 г. набора Verified (очищенного от некорректных задач) измеряемая производительность возросла ещё сильнее. Модель GPT-4 (вариант GPT-4o) сразу показала около 33% успешных решений на Verified против ~16% ранее на исходном наборе[7]. Лучшие открытые фреймворки-агенты (например, Agentless) удвоили свой результат с ~16% до 32% на Verified[7]. Это подтвердило предположение, что оригинальный бенчмарк несколько занижал показатели из-за наличия нерешаемых кейсов[7]. В то же время улучшение результатов на Verified по сравнению с Lite не столь драматично (лучшие модели уже достигали ~43% на Lite), что логично: Lite изначально отбирал более лёгкие примеры, а Verified убрал невыполнимые, но оставил сложные задачи[7]. Важно отметить, что рост показателей при переходе на Verified произошёл во всех категориях сложности задач, а не только за счёт устранения самых трудных, — то есть фильтрация избавила набор и от скрыто невыполнимых случаев среди относительно простых задач[7].

На начало 2025 года лидирующие АІ-системы демонстрируют уже близкую к человеческой эффективности на проверенном наборе задач, хотя потолок в 100% ещё далёк. В январе 2025 г. компания Anthropic сообщила, что её новая модель Claude 3.5 Sonnet в связке с улучшенным агентом решила 49% задач SWE-bench Verified[4], временно выйдя на первое место. Крупные технологические компании и независимые команды также активно участвуют в неофициальных соревнованиях на этом бенчмарке. Так, команда CodeStory разработала многомодельный подход с перебором вариантов («Midwit Agent»), который достиг рекордных 62,2% решённых задач на Verified (данные на начало 2025 г.)[5][9]. Отмечалось, что для этого пришлось существенно нарастить расходы вычислительных ресурсов на этапе вывода модели (так называемое inference time scaling), запуская множество попыток решения и отбирая лучший результат[5]. В свою очередь, в материалах ОрenAI упоминалось об экспериментальной системе GPT-03, которой при достаточном масштабировании вычислений якобы удалось преодолеть порог 70% на Verified (неофициальные данные)[5]. Однако независимая верификация этих результатов отсутствует, и столь высокий показатель остаётся скорее ориентиром для будущих исследований, чем достигнутой планкой.

Согласно исследованию Microsoft Research (2025), даже новейшие модели при оснащении инструментами отладки всё ещё не преодолевают планку в 50% успешных исправлений багов из SWE-bench Lite[6]. В данном испытании лучшей оказалась Claude 3.7 Sonnet c ~48,4% решённых задач, тогда как система на GPT-4 (OpenAI 01) решила около 30%, а более облегчённая модель 03-mini — лишь 22%[6]. Эти результаты подчеркивают, что, несмотря на быстрый прогресс, современные ИИ пока уступают опытным программистам: для человека решение подобных задач (при наличии понимания кода) не представляет трудностей, тогда как модель часто не умеет эффективно применять отладочные инструменты или страдает от недостатка обучающих данных, отражающих многошаговый процесс исправления ошибок[6].

Ограничения и перспективы

SWE-bench стал стандартизированной площадкой для оценки интеллектуальных кодовых агентов, однако исследования выявили и ряд его ограничений. Основная проблема – неполнота тестирования: набор проверочных тестов к каждой задаче берётся из конкретного pull request, и обычно включает только те юнит-тесты, которые были изменены при фиксе ошибки[3]. Как показал анализ группы учёных из Университета Чжэцзян и Штутгартского университета (Wang et al. 2025), игнорирование остальных тестов проекта способно скрыть некорректность некоторых решений[3]. Перепроверка решений на полном наборе тестов репозитория выявила, что в среднем 7,8% патчей, помеченных как успешные в SWE-bench, на самом деле не проходят другие тесты в проекте[3]. Это приводит к завышению метрики «решено задач» примерно на 4-6 процентных пунктов[3]. Ещё более тонкий случай – когда сгенерированный патч проходит все исходные тесты, но при этом неэквивалентен решению разработчика и меняет поведение программы не так, как ожидалось. С помощью генерации дополнительных тест-кейсов (методика PatchDiff) исследователи выявили, что почти 30% предложенных ИИ исправлений ведут себя иначе, чем эталонные патчи, а около 11% – однозначно ошибочны, хотя и не обнаруживаются существующими тестами[3]. Таким образом, реальные способности моделей может переоцениваться, если полагаться только на проходжение ограниченного набора тестов. Создатели SWE-bench признают эту уязвимость и подчёркивают, что бенчмарк должен со временем эволюционировать: улучшаться покрытие тестами, добавляться проверки на отсутствие нежелательных побочных эффектов, расширяться набор типов задач[7]. Развитие таких средств оценки — важная часть подготовки к появлению всё более автономных и мощных ИИ-разработчиков, и опыт с SWE-bench показывает необходимость внимательного отношения к качеству бенчмарков[7].

SWE-bench, будучи всего лишь статичным набором задач, не покрывает абсолютно все аспекты программирования, но уже стал де-факто стандартом для сравнительного анализа кодовых моделей[3]. Он используется в научных работах для демонстрации новых методов и алгоритмов, а также промышленными исследовательскими группами для оценки потенциала систем, предназначенных автоматизировать программирование[3]. Постоянный рост результатов на SWE-bench за 2023-2025 годы наглядно демонстрирует стремительное улучшение возможностей LLM в решении практических задач разработки. Одновременно он служит барометром сложности: даже приближаясь к 50-60% решённых задач, модели всё ещё далеки от полноценной замены человека, особенно в условиях ограниченной информации и необходимости тонкого понимания требований[4][7]. Тем не менее, прогресс не останавливается — благодаря таким инициативам, как SWE-bench, сообщество чётко видит свои цели и ограничения, и продолжает движение к созданию полноценного ИИ-разработчика, способного автономно понимать и исправлять программный код на уровне человеческого эксперта[4][7].

См. также

Ссылки

Литература

  • Liang, P. et al. (2022). Holistic Evaluation of Language Models (HELM). arXiv:2211.09110.
  • Chang, Y. et al. (2023). A Survey on Evaluation of Large Language Models. arXiv:2307.03109.
  • Ni, S. et al. (2025). A Survey on Large Language Model Benchmarks. arXiv:2508.15361.
  • Biderman, S. et al. (2024). The Language Model Evaluation Harness (lm-eval): Guidance and Lessons Learned. arXiv:2405.14782.
  • Kiela, D. et al. (2021). Dynabench: Rethinking Benchmarking in NLP. arXiv:2104.14337.
  • Ma, Z. et al. (2021). Dynaboard: An Evaluation‑As‑A‑Service Platform for Holistic Next‑Generation Benchmarking. arXiv:2106.06052.
  • Goel, K. et al. (2021). Robustness Gym: Unifying the NLP Evaluation Landscape. arXiv:2101.04840.
  • Xu, C. et al. (2024). Benchmark Data Contamination of Large Language Models: A Survey. arXiv:2406.04244.
  • Liu, S. et al. (2025). A Comprehensive Survey on Safety Evaluation of LLMs. arXiv:2506.11094.
  • Chiang, W.-L. et al. (2024). Chatbot Arena: An Open Platform for Evaluating LLMs by Human Preference. arXiv:2403.04132.
  • Boubdir, M. et al. (2023). Elo Uncovered: Robustness and Best Practices in Language Model Evaluation. arXiv:2311.17295.
  • Huang, L. et al. (2023). A Survey on Hallucination in Large Language Models. arXiv:2311.05232.

Примечания

  1. 1,0 1,1 1,2 1,3 1,4 1,5 Jimenez, Carlos E. et al. «SWE-bench: Can Language Models Resolve Real-World GitHub Issues?». arXiv. [1]
  2. 2,0 2,1 2,2 «SWE-bench/SWE-bench». GitHub. [2]
  3. 3,00 3,01 3,02 3,03 3,04 3,05 3,06 3,07 3,08 3,09 3,10 Wang, Shuyang et al. «Are "Solved Issues" in SWE-bench Really Solved Correctly? An Empirical Study». arXiv. [3]
  4. 4,0 4,1 4,2 4,3 4,4 4,5 4,6 4,7 4,8 «Claude SWE-Bench Performance». Anthropic. [4]
  5. 5,0 5,1 5,2 5,3 5,4 Jain, Sulbha. «SWE Benchmark: LLM evaluation in Software Engineering Setting». Medium. [5]
  6. 6,0 6,1 6,2 6,3 Hatmaker, Taylor. «AI models still struggle to debug software, Microsoft study shows». TechCrunch. [6]
  7. 7,00 7,01 7,02 7,03 7,04 7,05 7,06 7,07 7,08 7,09 7,10 7,11 7,12 7,13 7,14 7,15 7,16 7,17 7,18 7,19 7,20 7,21 7,22 «Introducing SWE-bench Verified». OpenAI. [7]
  8. 8,0 8,1 8,2 «SWE-bench Leaderboard». [8]
  9. «SOTA on swebench-verified: relearning the bitter lesson». Hacker News (Y Combinator). [9]