Никому не нужен бизнес-класс, чтобы долететь из Сан-Франциско в Лос-Анджелес. Полет длится едва ли дольше, чем раздача напитков, и пассажир с заднего ряда выходит из самолета таким же бодрым, как и тот, кто сидел впереди. Совсем другое дело — перелет из Сан-Франциско в Сидней. Вы проводите в самолете около 15 часов ночью, и выбранный класс обслуживания может решить, придете ли вы на утреннюю встречу в понедельник готовым к работе или потратите весь день на восстановление. Большинство корпоративных политик командировок учитывают это, устанавливая класс обслуживания в зависимости от длительности полета и разрешая бизнес-класс только после определенного количества часов.
Мы упоминаем политики командировок, потому что корпоративные расходы на ИИ-агентов для программирования не имеют ничего подобного. Представьте финансового директора, который смотрит на ежемесячный счет за ИИ. Каждая задача по программированию «летела бизнес-классом», от исправления одной строки кода до бага в критически важном платежном сервисе. Никто не выбирал этот класс специально. Команда выбрала модель, занимающую верхнюю строчку публичного рейтинга, потому что именно это советует делать рейтинг, и никто не хочет быть тем, кто выбрал вторую по качеству модель для платежного сервиса. Рейтинг не говорит о том, что большинству этих задач топовая модель была вовсе не нужна. Топовая модель также оказывается самой дорогой, поэтому компания платит в несколько раз больше за работу, которая должна была «лететь эконом-классом». И никто не может сказать, какие задачи были коротким рейсом до Лос-Анджелеса, а какие — полетом до Сиднея, потому что никто не тестировал модели на собственном коде компании.
В Everpure мы создали внутреннюю версию бенчмарка для программирования, используя нашу закрытую кодовую базу, и теперь используем ее для оценки новых моделей по мере их выхода. Мы также перевели наших активных пользователей с использования исключительно Claude на наш локальный GPU-кластер (оборудование, которым мы владеем и управляем сами), который направляет рутинную работу на модели, размещенные у нас, и отправляет только самые требовательные задачи на облачные передовые модели (самый крупный и дорогой класс моделей, оплачиваемый за использование). Этот переход окупил инвестиции в GPU менее чем за квартал.
Мы выпускаем публичную версию этого бенчмарка, чтобы вы могли создать свой собственный. Мы перестроили его на базе приложения для командного чата с открытым исходным кодом Zulip вместо нашего закрытого кода, а задачи, конфигурации инструментов, система оценки и необработанные результаты доступны в репозитории, чтобы вы могли скопировать их и применить к своей кодовой базе. Конкретные задачи менее важны, чем сам метод. Каждый результат получен моделью, работающей внутри инструмента — программного обеспечения, которое управляет моделью, считывая файлы, выполняя команды и принимая решения о дальнейших действиях. Мы запустили 21 комбинацию моделей и инструментов на 107 общих задачах, и каждый результат — это одна попытка на задачу без повторов и участия человека.
Разница в результатах моделей — это именно то, ради чего стоит проводить это упражнение. Claude Opus 5, работающая в инструменте Claude Code, решила 94,4% задач (исправила их корректно, согласно оценке скрытого автоматизированного теста) по цене $3,68 за задачу. GPT-5.6-terra, работающая в Codex, решила 85,0% по цене $0,54 за задачу, а локальная модель с открытыми весами Gemma-4-31B (модель, файлы которой можно скачать и запустить на своем оборудовании), работающая в инструменте с открытым кодом pi, решила 56,1% по цене $0,044 за задачу. Это 84-кратная разница в цене при 38-процентной разнице в доле решенных задач. Ни один публичный рейтинг не скажет вам, насколько хорошо конкретная модель справится с вашими специфическими задачами. В остальной части этой статьи мы расскажем, как мы создали бенчмарк, чтобы вы могли провести такое же сравнение на своем коде и написать политику «класса обслуживания», которой не хватает вашему счету за ИИ.
Что мы запускаем в Everpure
Каждая задача, поступающая к нашим ИИ-агентам, проходит маршрутизацию: система выбирает, какая модель будет ее обрабатывать — запущенная на нашем собственном кластере или передовая модель в облаке. Вот как мы подходим к этому выбору: для большинства задач по программированию более дешевая модель выдает очень похожее изменение кода, которое сделала бы и передовая модель, поэтому цена передовой модели не дает никаких преимуществ. В самых сложных задачах более дешевая модель не может исправить баг. Именно здесь передовая модель оправдывает свое место. Наш локальный кластер обрабатывает первую группу. Передовые модели получают вторую группу, а также любые излишки, когда кластер перегружен, причем маршрутизатор все равно выбирает самую дешевую передовую модель, подходящую для задачи, чтобы перегрузка не превратилась в перерасход. О том, как уровень данных влияет на стоимость вывода при самостоятельном хостинге моделей, читайте в статье «Архитектура для более эффективного вывода ИИ».
Самое сложное — понять, к какой группе относится задача, прежде чем тратить на нее деньги, и именно для этого нужен бенчмарк. Мы построили его на основе истории нашей кодовой базы, поэтому каждая задача — это реальное изменение, которое когда-то сделал реальный инженер в нашем коде. Мы запускаем его на новых моделях по мере их выхода, и результаты показывают нам, с какими типами задач справляются наши локальные модели, а для каких все еще нужна передовая модель. Маршрутизатор использует это разделение, чтобы решить, куда направить каждую задачу. Окупаемость менее чем за квартал — это измеренный результат, но он отражает наш характер работы, поэтому ваши показатели могут отличаться.
Мы не единственные, кто видит такую экономию. Сообщается, что AT&T сократила свои расходы на ИИ-программирование примерно на 56% при снижении качества всего на 2 пункта, перенаправив рутинные запросы на модели с открытым исходным кодом. Маршрутизатор с открытым исходным кодом от NVIDIA, NeMo Switchyard, показал снижение затрат на 74% на одной рабочей нагрузке за счет начала работы с легкой моделью и переключения на Claude Opus при обнаружении проблем. Все три результата получены на разных рабочих нагрузках, и индустрия активно работает над другими решениями. Экономически эффективный ИИ также зависит от подачи в модели чистых данных; см. «Экономически эффективный высокоточный корпоративный ИИ с Everpure Data Stream».
Что показывают результаты Zulip
Каждая комбинация модели и инструмента была протестирована на одних и тех же 107 задачах Zulip. Доля решенных задач — это часть тех задач, которые комбинация успешно решила. Стоимость — это цена API за одну задачу согласно прайс-листу. Для моделей, размещенных локально, мы оценили каждую задачу по публичной ставке за токен, которую взимал бы хостинг-провайдер за предоставление этой модели, поэтому цифра отражает то, что вы заплатили бы за аренду модели, а не стоимость владения GPU, их питания и обслуживания кластера.
Каждый результат — это одна попытка на задачу. Модель не получает повторных попыток и обратной связи от человека, и хотя она может выполнить много шагов самостоятельно в рамках этой попытки, никто ею не управляет, и она отправляет исправление один раз. Если бы инженеры направляли модель в течение нескольких раундов, она, вероятно, решила бы больше задач. Но время инженера — это то, что вы цените больше всего, и вы хотите, чтобы оно тратилось на самые сложные задачи, поэтому мы интерпретируем долю решенных задач с одной попытки как показатель того, какой объем работы модель может выполнить без привлечения инженерных ресурсов.
Рисунок 1: Доля решенных задач для каждой комбинации модели и инструмента.
Рисунок 2: Те же комбинации по стоимости в сравнении с долей решенных задач для моделей, использующих только инструмент pi.
Цена за задачу падает гораздо быстрее, чем точность, пока вы не дойдете до самых маленьких моделей. По сравнению с Claude Opus 5 в Claude Code, модель GPT-5.6-terra в Codex обходится на 85% дешевле за задачу при проценте успешных решений на 9,3 процентных пункта ниже, а Gemma-4-31B обходится на 99% дешевле при проценте решений на 38,3 пункта ниже (все сравнения в этой статье основаны на наших расчетах измеренных значений). Закрашенные точки на Рисунке 2 представляют собой комбинации, для которых нет более дешевой альтернативы с сопоставимым баллом; в них сочетаются облачные и локальные модели. Это называется «границей Парето».
Бизнес-вопрос заключается в том, какая доля вашей работы требует дополнительных 9,3 процентных пункта успешности решений, которые отличают Claude Opus 5 от GPT-5.6-terra. Бенчмарк не призывает использовать дешевую модель повсеместно. Gemma-4-31B успешно справляется с 56% задач, то есть терпит неудачу на остальных 44%, и ценность этого измерения заключается в понимании того, какие задачи относятся к какой категории. Именно эта информация необходима для политики маршрутизации.
Возможности одного запуска имеют свои пределы. Наша выборка по Zulip мала, и разница в одну или две задачи является статистическим шумом, поэтому в рейтинге комбинации, отличающиеся друг от друга в пределах 2 процентных пунктов, считаются практически равными, а более дешевая модель побеждает в таблице лидеров. Если ваш внутренний набор задач также невелик, не воспринимайте преимущество в один пункт как окончательное.
Как бенчмарк превращает историю вашего кода в тест
Каждая зрелая кодовая база содержит историю проблем, которые инженеры уже решили. Каждая такая запись представляет собой отслеживаемую проблему, исправление и тест, доказывающий работоспособность этого исправления. Извлеките несколько сотен таких записей — и вы получите экзамен с банком вопросов, ключами ответов и системой оценки, созданный вашими собственными инженерами еще до того, как кто-либо задумался о тестировании на них ИИ. Этот экзамен и есть бенчмарк, и каждую модель необходимо протестировать на нем, чтобы заслужить место в вашей команде.
Для каждого вопроса модель получает описание проблемы и состояние кода до внесения исправления, и ничего больше: ни исправления, ни теста, ни сообщения коммита, ни истории. Она редактирует код и отправляет изменения, после чего мы оцениваем эти изменения, запуская против них оригинальный тест инженера. Результатом является успех или неудача, при этом никакой LLM-судья не определяет, выглядит ли ответ правильным. Справедливость оценки обеспечивают две меры защиты. Перед тем как задача будет засчитана, проверка на справедливость (мы называем ее «оракулом») подтверждает, что тест падает на неизмененном коде и проходит на реальном исправлении; проверка запускается повторно, чтобы исключить тесты, которые падают случайно, а задачи, результаты которых нестабильны, отбрасываются, а не исправляются вручную. Затем оценка выполняется в изолированном контейнере без доступа к сети, а любые изменения, внесенные моделью в файлы тестов, отменяются, поэтому модель не сможет пройти тест путем его переписывания.
Почему бенчмарк должен запускаться на вашем собственном коде
Общедоступные бенчмарки не измеряют тот тип программирования, которым занимаются ваши инженеры. Ваша команда может активно работать с языком, который почти не проверяется в публичных бенчмарках, и следовать стандартам, специфичным для того, как ваша организация пишет код. Наиболее часто цитируемые бенчмарки, такие как SWE-bench, также опираются на небольшое число преимущественно Python-проектов, которые могут совершенно не походить на вашу кодовую базу. В дополнение к этому, так много разработчиков моделей в настоящее время оптимизируют их под публичные бенчмарки, что высокий результат сам по себе стал главной целью. В индустрии это называется «бенчмаксингом» (benchmaxxing) — то есть настройкой модели на высокие баллы в публичных бенчмарках без сопутствующего прироста эффективности в реальной работе. Единственный способ узнать, как бенчмаксенная модель ведет себя на вашей работе, — запустить ее на вашем коде.
SWE-Bench Pro от Scale AI, опубликованный в сентябре 2025 года, показывает, насколько сильно публичный результат может отличаться на другой работе. Большинство топовых моделей того периода набрали более 70% в широко используемом SWE-bench Verified, но на SWE-Bench Pro, более сложном многоязычном бенчмарке, лучшие модели, GPT-5 и Claude Opus 4.1, набрали примерно по 23%. На закрытых коммерческих кодовых базах показатели тех же моделей снова упали: GPT-5 — с 23,1% до 14,9%, а Claude Opus 4.1 — с 22,7% до 17,8%. Это модели 2025 года, и цифры не объясняют причину падения результатов, но наиболее резким оно оказалось на закрытом коде, то есть именно на том типе кода, который пишут ваши инженеры.
Ваша частная кодовая база имеет еще два преимущества. Ваш код никогда не попадает в обучающие данные вендора, поэтому модель, решающая ваши задачи, действительно решает их, а не вспоминает. Внутренний запуск бенчмарка также сохраняет набор задач, оценки и доказательства внутри вашей среды, поэтому решение о том, какая модель имеет доступ к какому коду, основывается на принадлежащих вам данных. Одно предостережение относительно конфиденциальности: этап, на котором модель генерирует свои изменения, вызывает API работающей модели, поэтому облачная модель все же видит задачу, и изолирован только этап оценки. Если кодовую базу нельзя показывать облачной модели, запускайте этот шаг исключительно с локальными (on-prem) моделями.
Как использовать бенчмарк с открытым исходным кодом
В репозитории поставляются набор задач Zulip, средства запуска, механизмы оценки и изоляции, математический аппарат ранжирования и локальная панель мониторинга, с помощью которых были созданы Рисунки 1 и 2. Вы можете запустить оценку Zulip в исходном виде, чтобы сравнить модели и инфраструктурные обвязки (harnesses), которые вы рассматриваете, или направить инструмент на ваш собственный репозиторий — именно эта версия лежит в основе решений о маршрутизации и хостинге. Все специфичное для Zulip сосредоточено в четырех местах, поэтому адаптация сводится к изменению четырех вещей:
- Правило майнинга. Оно определяет, какие прошлые коммиты считаются задачами, используя ваши конвенции закрытия тикетов, структуру каталогов и наименование файлов тестов. Это наиболее ценное изменение, поскольку хорошее правило формирует честные задачи, а нечеткое — порождает шум.
- Рецепт окружения. Он собирает чистый контейнер, способный запускать ваши тесты для старого коммита. Старые коммиты имеют особенности сборки, поэтому на этот этап уходит большая часть от примерно одной-двух недель разовых инженерных усилий.
- Команда тестирования. Единственное требование заключается в том, чтобы успешный запуск сообщал об успехе, а неуспешный — о сбое.
- Список моделей. Здесь перечисляются модели, обвязки и провайдеры, которых вы хотите сравнить. Сама обвязка, изоляция, оценка, ранжирование и панель мониторинга работают без изменений.
В Zulip около половины из 220 кандидатов в коммиты стали пригодными для использования задачами. Ваш показатель будет зависеть от вашего репозитория. Для каждого кандидата, принятого или отклоненного, создается письменная запись с указанием причины, благодаря чему сторонний рецензент может провести аудит набора задач, что важно, когда результат влияет на закупку оборудования. Перед полными тестами поручите инженеру попробовать одну модель на одной задаче — это позволит выявить проблемы с окружением за считанные минуты. В файле METHODOLOGY.md репозитория подробно рассматриваются валидность задач, загрязнение данных и правила ранжирования.
Добавление модели представляет собой одну запись в файле списка, а повторный запуск списка — это одна команда, которая выполняется за ночь, поэтому закладывайте несколько часов на каждый новый релиз модели. Сами запуски стоят денег, и счет растет вместе с увеличением списка моделей. По прейскурантной цене один прогон Claude Opus 5 в Claude Code по 107 задачам Zulip обходится примерно в $394 на одну модель и один запуск. Со временем команды сужают список до моделей, которые они считают лучшими, добавляют каждый новый релиз в качестве кандидата и отсеивают те, которые не справляются.
Оставьте бизнес-класс для Сиднея
Политика поездок определяет класс обслуживания в зависимости от датировки перелета, а публичная таблица лидеров — это чья-то чужая политика поездок, которую часто пишут сами авиакомпании. Она создавалась под их маршруты, поэтому следование ей означает бронирование класса, нужного для их поездок, а не для ваших. Бенчмарк, построенный на основе вашей собственной истории — это способ написать собственную политику. Он измеряет продолжительность каждого из ваших полетов, то есть сложность каждой конкретной задачи, и определяет, какой класс обслуживания позволяет добраться до места в рабочем состоянии, т. е. самая дешевая модель, которая все еще справляется с задачей. Имея это на руках, вы можете выполнять перелеты в Лос-Анджелес на оборудовании, которым владеете, и приберечь передовые тарифы для рейсов в Сидней. Цифры Zulip демонстрируют этот метод, поскольку ваш код и ваши рабочие нагрузки будут отличаться от наших. Начинать нужно в ту неделю, когда вы решаете развернуть модель на собственном оборудовании, а не после того, как счет за облачные услуги заставит вас принять это решение. Шаблон Zulip с открытым исходным кодом — это то место, с которого стоит начать. Как только вы начинаете самостоятельно хостить модели, следующим вопросом становится масштабирование: Промышленному ИИ нужно не просто работать. Ему нужно масштабироваться.












