Журнал · Rit.work

Малая модель проверяет код ИИ-агента до выполнения

Малая открытая модель оценивает действия закрытого ИИ-агента и останавливает рискованный код до выполнения, сокращая ошибки и расход токенов.

Rit.work
Студия разработки
7 сентября 2026 г.4 мин чтения

Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.

Код ИИ-агента можно проверить на риск сбоя до того, как он запустит сгенерированную команду. В нерецензированном препринте, где числа получили сами авторы, Konstantin Grotov и Valentin Malykh показали: предохранитель перед выполнением сокращает средний расход токенов на 14–19%. Для продуктовой команды это не способ чаще закрывать задачи, а способ раньше остановить дорогой цикл «выполнить — получить ошибку — повторить».

Как малая модель замечает риск в чужом ответе

Метод Speculative Uncertainty работает с агентами, доступными только через API. Ему не нужны веса модели, внутренние состояния или оценки вероятности каждого токена. Агент генерирует обычную последовательность рассуждений и действий, а отдельная открытая модель читает уже готовый текст.

В качестве такой модели взяли Qwen3-4B. Она за один проход оценивает, насколько ожидаемым для неё был каждый токен, который выбрал основной агент. Чем сильнее фактическое продолжение расходится с тем, которое ожидала малая модель, тем заметнее возможный сбой.

Сырую оценку нельзя сразу считать уверенностью основного агента. Поэтому малую модель предварительно адаптируют на его траекториях: она учится лучше воспроизводить распределение ответов агента, хотя при проверке по-прежнему видит только текст. Без такой адаптации сигнал оказался близок к словесной самооценке самого агента и заметно хуже предсказывал ошибки.

Рассуждение и действие оцениваются отдельно. В OpenHands свободный текст агента считается рассуждением, а вызов инструмента с его аргументами — действием. Для каждого участка система сводит оценки токенов в признаки, учитывает три последних шага и передаёт 50 признаков в линейную модель.

Разделение нужно из-за неожиданной формы сигнала. Перед ошибкой агент сильнее сомневается во время рассуждения, но само неверное действие формулирует более уверенно. Если усреднить весь ответ, два эффекта частично гасят друг друга; отдельный анализ действий лучше замечает небольшие отклонения в синтаксисе и аргументах вызова.

Линейная модель выдаёт оценку риска. Если она пересекает выбранный порог, предохранитель не отправляет код в среду, а добавляет подсказку о неудаче и просит агента составить новый план. Порог настраивают на обучающей части данных, после чего фиксируют для проверки.

Ошибок выполнения стало меньше, решённых задач — нет

На SWE-Bench Verified предохранитель снизил долю ошибок выполнения на 6 процентных пунктов, а на DA-Code — на 8 пунктов. Экономия токенов возникла потому, что короткое перепланирование заменяло запуск ошибочного кода, разбор ответа среды и полный повтор шага.

Однако итоговая доля решённых задач на SWE-Bench Verified уменьшилась на 5 пунктов, а на DA-Code — на 1 пункт. Предохранитель иногда блокировал действия, которые выполнились бы успешно, а новый план не всегда исправлял исходную проблему.

Метод поэтому оптимизирует не качество решения задачи, а стоимость и частоту неудачных запусков. Такой обмен может быть приемлем там, где выполнение команды дорого, меняет внешнюю систему или создаёт длинный контекст для следующей попытки. Если главным показателем служит доля полностью закрытых задач, простого запрета и повторного планирования недостаточно.

Выход линейной модели также стоит трактовать как оценку для ранжирования, а не как точную вероятность сбоя. Для порогового предохранителя достаточно правильно расположить более рискованные действия выше безопасных. Политике, которая распределяет ресурсы пропорционально вероятности, потребуется дополнительная калибровка.

Когда предохранитель меняет архитектуру агента

Работа предлагает отдельный слой между генерацией и выполнением. Он подходит командам, которые используют закрытую модель, но контролируют оболочку агента: могут отделить рассуждение от вызова инструмента, сохранить траекторию и проверить результат действия однозначным правилом.

Основной агент при этом менять не требуется. Малую модель можно запускать рядом с оркестратором, а её оценку использовать не только для запрета. Рискованный шаг можно отправить другой модели, передать человеку или дать агенту дополнительную попытку — в статье измерен только вариант с перепланированием.

Перенос между моделями проверили на Qwen3-Coder-480B и Claude 3.5 Sonnet. Модель, адаптированная на открытом Qwen, сохраняла полезный сигнал при оценке закрытого Claude. Это позволяет сначала строить такой слой на доступных траекториях, а не требовать внутренних данных от каждого API-поставщика.

Проверки охватывают SWE-rebench, SWE-Bench Verified и DA-Code, а целевым событием везде служит запуск кода без исключения. Результаты получены в одиночных прогонах на фиксированных наборах, поэтому небольшие различия между конфигурациями не стоит считать устойчивыми без повторной проверки.

На других агентах потребуется собственное проверяемое условие: например, корректное выполнение вызова инструмента. Выгодность также зависит от стоимости дополнительного прохода малой модели. Для исследованного сценария его считали дешёвым по сравнению с неудачным выполнением и повтором, но для более сложной проверки этот баланс придётся измерить заново.

Планы стоит менять, если в архитектуре уже есть дорогой цикл выполнения и повторов: предохранитель добавляется без доступа к основной модели и сокращает потери до обращения к среде. Заменять им тесты или ожидать роста итогового качества пока не следует — он управляет риском отдельного шага, а не решает задачу за агента.

Источники

Пауза в чтении

Похоже на вашу задачу?

Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.

Rit.work

Студия разработки

Собираем мобильные приложения и помогаем командам получать от AI реальную пользу. Основатель и команда, работаем удалённо — с клиентами в России и за рубежом.

Ко всем материалам
Понравилось? Обсудим вашу задачу