Когда речь заходит об ИИ-агентах, которые умеют писать код, исправлять баги и решать технические задачи, рано или поздно встаёт вопрос: а как понять, какой из них лучше справляется? Ответ кажется простым – нужен тест. Но в реальности создать честный и показательный тест для таких систем оказывается на удивление сложно.
Команда OpenHands – платформы с открытым кодом, позволяющей запускать ИИ-агентов для решения задач разработки – занялась именно этим. Они не просто создали очередной рейтинг, а попытались разобраться, что в нём работает не так, и сделать его более честным и информативным.
Что такое OpenHands Index и зачем он нужен
OpenHands Index – это набор задач, по которым оцениваются ИИ-агенты, умеющие работать с кодом. Основу составляет SWE-bench Verified – один из наиболее известных наборов реальных задач из открытых репозиториев на GitHub. Суть проста: агенту дают реальный баг или задачу из реального проекта, и смотрят, справится ли он.
Проблема в том, что такие бенчмарки со временем начинают «протекать». Модели обучаются на данных из интернета, а значит, часть задач из теста могла попасть в обучающую выборку – пусть даже неявно. Это называют загрязнением данных, и это серьёзная проблема: агент как будто решает задачи, которые уже «видел», и его результат перестаёт отражать реальные способности.
Именно с этого и начали авторы: проанализировали, насколько существующие задачи в бенчмарке «засвечены» в публичных источниках.
Что не так с привычными метриками
Стандартный показатель в таких тестах – процент решённых задач. Выглядит логично: чем больше задач решил агент, тем он лучше. Но авторы обнаружили, что этот показатель скрывает важные нюансы.
Во-первых, задачи в тесте не одинаковы по сложности. Одни решаются почти всеми агентами – они слишком простые, чтобы что-то рассказать о реальных возможностях системы. Другие не решает вообще никто – и они тоже мало что дают. Самыми информативными оказываются задачи «среднего уровня», где одни агенты справляются, а другие нет.
Во-вторых, когда несколько агентов получают схожий итоговый процент, это не значит, что они решают одни и те же задачи. Два агента с одинаковым результатом могут «закрывать» совершенно разные наборы задач – у каждого свои сильные стороны. Если смотреть только на финальный балл, эта информация теряется.
В-третьих, разные запуски одного и того же агента дают разные результаты – ИИ-системы не всегда воспроизводимы. Это значит, что небольшие различия в итоговых баллах могут быть просто случайным шумом, а не реальным преимуществом одной системы над другой.
Как они попытались это исправить
Команда OpenHands предложила несколько изменений в том, как оценивать агентов – и в том, как формировать задачи для теста.
Первое – обновление набора задач. Авторы добавили новые задачи, которые с меньшей вероятностью уже встречались в обучающих данных моделей. Это помогает сделать тест менее «предсказуемым» для агентов, которые могли случайно запомнить что-то похожее.
Второе – сдвиг в сторону задач, которые реально разделяют агентов. Если задачу решают все или не решает никто, она не помогает понять, кто лучше. Поэтому акцент делается на тех задачах, где есть реальный разброс в результатах.
Третье – более аккуратная интерпретация результатов. Авторы призывают не делать громких выводов из небольших различий в баллах, особенно если они укладываются в диапазон статистической погрешности. Два агента с результатами 43% и 45% – это, вероятно, «ничья», а не победа одного над другим.
Зачем вообще заморачиваться с качеством бенчмарка
Это может показаться техническим вопросом, далёким от практики. Но на самом деле от качества тестов зависит многое.
Если бенчмарк некорректный, компании и исследователи начинают оптимизировать агентов под него – а не под реальные задачи. Агент будет хорошо выглядеть в рейтинге, но плохо работать на практике. Это известная ловушка: когда измерение становится целью, оно перестаёт быть хорошим измерением.
Кроме того, пользователи и разработчики, выбирающие ИИ-инструменты для своих проектов, ориентируются на публичные рейтинги. Если эти рейтинги вводят в заблуждение – решения принимаются на основе ложных данных.
Авторы OpenHands смотрят на это честно: они признают, что их собственный индекс несовершенен, и описывают конкретные шаги, которые помогают его улучшить – не потому что это выгодно с маркетинговой точки зрения, а потому что без нормального измерения сложно двигаться вперёд.
Что остаётся открытым
Проблема загрязнения данных никуда не денется сама по себе. Чем дольше существует бенчмарк – тем выше вероятность, что его задачи окажутся в обучающих данных новых моделей. Это своего рода гонка: создатели тестов должны постоянно обновлять задачи, чтобы сохранять их актуальность.
Открытым остаётся и вопрос о том, как сравнивать агентов, которые принципиально по-разному подходят к задачам. Один может быть осторожным и точным, другой – быстрым, но склонным к ошибкам. Единая метрика «процент решённых задач» не улавливает эту разницу в поведении.
Наконец, всегда есть вопрос: насколько задачи из бенчмарка вообще похожи на то, с чем сталкиваются реальные разработчики? SWE-bench Verified использует задачи из открытых репозиториев, но реальная разработка – это не только баги в публичных проектах. Это внутренние системы, нестандартные архитектуры, неочевидные контексты.
Команда OpenHands не претендует на то, что решила все эти вопросы. Но сам факт того, что они их поставили и попытались разобраться – уже шаг в сторону более честного разговора о том, что ИИ-агенты умеют на самом деле, а что только кажется по красивым цифрам в таблицах.