Современная разработка ПО — это плавильный котел языков: Java, C#, JS/TS, Go, Kotlin… список можно продолжать. Но когда дело доходит до оценки ИИ-агентов, способных помогать в написании и исправлении кода, мы часто упираемся в ограничения. Популярный бенчмарк SWE-bench, например, долгое время поддерживал только Python.
Чтобы преодолеть разрыв между реальностью разработки и возможностями оценки ИИ, наша команда в Doubletapp взялась за адаптацию SWE-bench для множества языков программирования. Меня зовут Кирилл Увенс, и в этой статье я расскажу, как мы подходим к этой задаче и почему считаем ее важной для всей индустрии.

Что такое SWE-Bench
SWE-bench (Software Engineering Benchmark) — это бенчмарк для оценки ИИ-агентов на реальных задачах. Он основан на тщательно отобранных issue и pull request’ах из популярных open source-репозиториев на GitHub.
Каждая задача в SWE-bench состоит из описания проблемы (issue), решения проблемы (pull request) и набора тестов, которые проверяют, решена ли проблема. Задача ИИ-агента — на основе issue и кода проекта сгенерировать такое решение, которое бы проходило все тесты. В отличие от бенчмарков, фокусирующихся на скорости, SWE-bench оценивает инженерные навыки: понимание существующего кода, генерацию нового кода, отладку, исправление багов и рефакторинг.
Задачи отбираются в несколько этапов. Сначала выбираются подходящие репозитории, затем фильтруются pull request’ы. Учитываются только связанные с issue и вносящие изменения в тесты. После этого проверяется, проходят ли все тесты после исправления. В результате получается инструмент, который обеспечивает объективное сравнение ИИ-агентов и способствует их развитию для реального применения в разработке.

Изначально SWE-bench был ориентирован на Python, что ограничивало круг задач, на которых тестировали ИИ-агентов. В основном это касалось областей, связанных с анализом данных, но не охватывало другие важные направления, где используются другие стеки и языки. Одним из первых шагов к расширению стал Java-вариант SWE-bench. Он показал востребованность такого подхода и дал старт работе над многоязычной версией. Это расширение отвечает растущей потребности в универсальных методах оценки ИИ-агентов для работы с разными языками и контекстами.
Расширенный SWE-bench — это не просто академический тест, а мощный практический инструмент с широким спектром применения. Для компаний и команд разработки он становится компасом в мире ИИ-агентов. Нужен новый инструмент для рефакторинга или автоматической отладки? SWE-bench предоставляет единую и прозрачную основу для сравнения разных ИИ-агентов на реальных задачах, помогая выбрать тот, что лучше всего справится с вашими технологиями и требованиями. Это прямой путь к улучшению качества кода и ускорению циклов разработки.
Для исследователей и разработчиков ИИ SWE-bench — это и линейка для измерения прогресса, и микроскоп для анализа полученных результатов. Он позволяет отслеживать, как развиваются технологии автоматизации программирования, какие подходы наиболее перспективны, а также детально выявлять сильные и слабые стороны конкретных моделей. Это бесценная обратная связь для итеративного улучшения ИИ-агентов и повышения их конкурентоспособности.
Наконец, для инженеров и тимлидов понимание того, на что реально способен ИИ-агент, упрощает его интеграцию в рабочие процессы. Это дает возможность безопасно автоматизировать рутинные процессы, снизить нагрузку на разработчиков и направить их экспертизу на решение действительно сложных и нетривиальных задач.
Какие сложности возникают при сборе данных и тестировании
Работа с реальными задачами — одно из ключевых преимуществ SWE-bench, но одновременно и источник определенных сложностей. Проблемы из проектов часто неоднозначны и многослойны, поэтому их трудно обрабатывать автоматически. Для надежного тестирования ИИ-агентов требуется разработка методов, которые оценивают качество решений не только формально, но и по существу.
Дополнительные сложности создает разнообразие подобного рода задач. SWE-bench охватывает широкий спектр тем — от отладки и рефакторинга до добавления нового функционала. Нет универсального способа тестировать все типы задач, поэтому для них разрабатывают разные подходы.
Отдельная сложность — оценка качества решений. Не всегда легко определить, правильное ли решение предложил ИИ-агент. Поэтому в SWE-bench используют несколько типов тестов:
• pass-to-pass проверяют стабильность кода после изменений
• fail-to-pass проверяют корректность изменений в коде проекта
В дополнение требуются метрики, которые адекватно отражают качество решения и механизмы ручной перепроверки.
Наконец, поддержка и развитие SWE-bench требует значительных вычислительных и человеческих ресурсов. Необходимы средства на вычисления, инфраструктуру, а также команда специалистов для сопровождения бенчмарка, тренировки ИИ-агентов, проверки результатов и расширения покрытия задач. Без этих ресурсов масштабирование и повышение качества бенчмарка невозможны.
Наш опыт: какие языки поддерживает SWE-bench
Для адаптации SWE-bench под другой язык программирования важно учитывать:
• технологический стек
• наличие открытых проектов с активным сообществом и накопленной историей задач.
Мы уже провели предварительную адаптацию SWE-bench для нескольких языков помимо Python. В рамках пилотных проектов собирались данные и тестировались модели на Java, C#, PHP, JS/TS, Ruby, Kotlin, C++, Go. Эти эксперименты показали, что подходы оригинального бенчмарка масштабируются на другие языки с сохранением точности и практической ценности оценок.
Ручная перепроверка, или SWE-bench Verified
Задачи в SWE-bench часто сложные и неоднозначные, поэтому автоматического тестирования может быть недостаточно. Чтобы бенчмарк отражал качество решений, применяется ручная перепроверка — на этом основана концепция SWE-bench Verified. Она включает валидацию каждой задачи специалистами для проверки корректности и полезности собранных задач.
Разрабатываются методологии ручной перепроверки с учетом особенностей конкретных языков программирования. Это особенно важно, поскольку автоматические средства не всегда выявляют, решаема ли задача в принципе, правильно ли она сформулирована и соответствует ли целям оценки. Здесь решающую роль играет экспертная оценка — без нее невозможно гарантировать высокое качество бенчмарка.
Каковы цели ручной перепроверки? Для начала ручная перепроверка помогает убедиться в корректности автоматической оценки. Даже точные метрики могут давать сбой — например, из-за неудачных формулировок issue или пограничных случаев в логике тестов. Затем выявляются и устраняются ошибки в бенчмарке: например, дублирующиеся задачи, неточные описания, неоднозначные критерии оценки. Когда каждая задача проверена экспертом, это делает SWE-bench надежным и авторитетным инструментом для оценки сторонних моделей и для работы над собственными ИИ-агентами.
Сравнение SWE-bench с другими бенчмарками для разработки ПО
SWE-bench — не единственный инструмент для оценки ИИ-моделей в контексте программирования. Существует ряд бенчмарков, каждый из которых решает свои задачи и предлагает собственных подход к измерению эффективности. Рассмотрим основные альтернативы, чтобы понятия отличия SWE-bench.
Бенчмарк | Фокус | Типы задач | Языки программирования | Метрики оценки | Ручная перепроверка |
SWE-bench | Комплексные задачи Software Engineering | Понимание кода, генерация, исправление ошибок, рефакторинг | Python (основной) | Успешность решения, качество кода (SWE-bench Verified) | Да |
HumanEval | Генерация кода по текстовому описанию | Генерация функций на основе docstrings | Python | Прохождение автоматических тестов | Нет |
MBPP | Генерация кода по текстовому описанию | Генерация функций на основе текстового описания | Python | Прохождение автоматических тестов | Нет |
CodeSearchNet | Поиск кода по текстовому описанию | Поиск релевантного кода по текстовому запросу | Python, Java, Go, JavaScript, PHP, Ruby | Точность поиска, релевантность | Нет |
Defects4J | Исправление ошибок в коде | Исправление ошибок в реальных проектах | Java | Успешность исправления, количество исправленных ошибок | Да (частично) |
HumanEval сосредоточен на генерации кода по текстовому описанию — в основном на Python. Он широко используется, но ограничен простыми, локализованными задачами.
MBPP также работает с Python и проверяет способность модели писать короткие программы начального уровня.
CodeSearchNet ориентирован на поиск кода по описанию, охватывая сразу несколько языков — Python, Java, Go, JavaScript, PHP и Ruby.
Defects4J предлагает задачи по исправлению реальных ошибок в проектах на Java, фокусируется на ограниченном числе проектов и типов ошибок.
HumanEval-V добавляет мультимодальность, остается относительно небольшим по объёму и также сосредоточен на Python.
На этом фоне SWE-bench выделяется сразу по нескольким направлениям. Во-первых, он работает с комплексными задачами, близкими к реальным задачам Software Engineering, а не к отдельным фрагментам кода или синтетическим сценариям. Во-вторых, благодаря концепции SWE-bench Verified, бенчмарк сочетает автоматическую оценку с ручной перепроверкой, что значительно повышает точность и доверие к результатам. И в-третьих, все задачи в SWE-bench взяты из реальных pull request'ов и issue на GitHub, что делает их практически значимыми и релевантными для реальных проектов — в отличие от бенчмарков, собранных в лабораторных условиях.
Таким образом, SWE-bench служит не просто тестом на генерацию кода, а полноценной средой для оценки ИИ-агентов в условиях, максимально приближенных к реальной разработке.
Ценообразование SWE-bench: как формируется стоимость одного датапойнта
Стоимость получения результата для одной задачи в SWE-bench (или одного датапойнта) не высечена на камне — она варьируется в зависимости от сложности и глубины необходимой оценки. Мы подходим к этому вопросу гибко и адаптируемся под реальные потребности и бюджеты.
Ключевых переменных две: сложность задачи и тип тестирования. Простая ошибка требует меньше ресурсов для анализа, чем реализация сложного функционала. Аналогично, автоматическая проверка тестов — это один уровень затрат, а тщательная ручная валидация экспертом — совсем другой, обеспечивающий максимальную достоверность.
Помимо этого, мы учитываем масштаб проекта. Тестирование на большом объеме задач открывает возможности для оптимизации и пакетных условий, в то время как для пилотных запусков или проверки специфических гипотез может подойти и оценка отдельных датапойнтов. Индивидуальные требования — будь то фокус на конкретных технологических стеках, работа с определенными репозиториями или нестандартные метрики оценки — также влияют на итоговую конфигурацию и стоимость.
Мы всегда подбираем оптимальный формат сотрудничества. Ориентировочная стоимость одного датапойнта начинается от нескольких долларов и доходит до сотни — в зависимости от сложности задачи и выбранного формата тестирования. Финальная оценка формируется индивидуально и уточняется на этапе согласования проекта.
Заключение
Расширенная версия SWE-bench — это инструмент для оценки ИИ-агентов, адаптированный под реальные задачи разработки и поддерживающий широкий спектр языков программирования. При необходимости использование бенчмарка может сопровождаться экспертной поддержкой: от подбора релевантных задач до интерпретации результатов и настройки рабочих процессов. Такой подход делает SWE-bench практическим инструментом для принятия решений, повышения качества моделей и построения эффективных решений на стыке разработки и ИИ.