Как мы собираем SWE-bench на других языках. github.. github. ml.. github. ml. Natural Language Processing.. github. ml. Natural Language Processing. Open source.. github. ml. Natural Language Processing. Open source. swe-bench.. github. ml. Natural Language Processing. Open source. swe-bench. Блог компании Doubletapp.. github. ml. Natural Language Processing. Open source. swe-bench. Блог компании Doubletapp. ИИ.. github. ml. Natural Language Processing. Open source. swe-bench. Блог компании Doubletapp. ИИ. искусственный интеллект.. github. ml. Natural Language Processing. Open source. swe-bench. Блог компании Doubletapp. ИИ. искусственный интеллект. Машинное обучение.. github. ml. Natural Language Processing. Open source. swe-bench. Блог компании Doubletapp. ИИ. искусственный интеллект. Машинное обучение. нейросети.

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

Чтобы преодолеть разрыв между реальностью разработки и возможностями оценки ИИ, наша команда в Doubletapp взялась за адаптацию SWE-bench для множества языков программирования. Меня зовут Кирилл Увенс, и в этой статье я расскажу, как мы подходим к этой задаче и почему считаем ее важной для всей индустрии.

Как мы собираем SWE-bench на других языках - 1

Что такое 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 на других языках - 2

Изначально SWE-bench был ориентирован на Python, что ограничивало круг задач, на которых тестировали ИИ-агентов. В основном это казалось областей, связанных с анализом данных, но не охватывало другие важные направления, где используются другие стеки и языки. Одним из первых шагов к расширению стал Java-вариант 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 практическим инструментом для принятия решений, повышения качества моделей и построения эффективных решений на стыке разработки и ИИ.

Автор: JDTapp

Источник

Рейтинг@Mail.ru
Rambler's Top100