01.08.2027 202 материалов

Почему ИИ-агент не должен проверять сам себя: паттерн Maker/Checker

Разработчик У Цзи описал архитектурный паттерн для надёжных ИИ-агентов — принцип разделения генерации и проверки. Идея проста: если вы попросите модель проверить собственный ответ, она почти всегда его подтвердит, даже если он содержит грубые ошибки.

Почему ИИ-агент не должен проверять сам себя: паттерн Maker/Checker

Надёжность ИИ-агента достигается не «умнее моделью», а инженерным принципом: разделение генерации и валидации. Качество не возникает случайно — его проектируют.

Проблема: самопроверка не работает

Представьте команду, которая собрала агента для анализа продаж. Он тянул данные из базы и формировал отчёты. Чтобы повысить точность, добавили шаг «самопроверки» — после генерации агент сам себе говорил: «Проверь, точны ли данные».

Результат? Агент каждый раз отвечал: «Данные точны». Даже когда исследователи намеренно вставляли в исходники абсурдные цифры — скажем, минус 50 миллионов юаней выручки за месяц — модель уверенно подтверждала корректность.

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

Эффект подтверждения

Самопроверка запускает ещё одну ловушку — каскадное подтверждение предвзятости (confirmation bias). Модель формирует «состояние убеждённости» в процессе генерации, и при повторном просмотре склонна подтверждать сказанное, а не опровергать.

Исследования Anthropic это наглядно показали:

  • Та же модель генерирует и проверяет: исправляет ошибки примерно в 12% случаев
  • Другой экземпляр той же модели проверяет: ~37% исправлений
  • Модель из другого семейства проверяет: ~52% исправлений

Разница между 12% и 52% — это не деталь, а принципиальный разрыв. Чем независимее проверяющий, тем надёжнее результат.

Паттерн: разделение Maker и Checker

Суть паттерна — инженерная реализация первого принципа обеспечения качества: проверяющий должен быть независим от генератора. В архитектуре ИИ-агентов это выражается как разделение на два отдельных компонента: Maker (создатель) и Checker (проверяющий).

Три уровня независимости

Уровень разделения зависит от задачи и допустимых рисков:

  • L1: Разделение контекста. Maker и Checker используют разные системные промпты, но одну и ту же модель. Минимальные затраты — подходит для низкорисковых задач, где важна базовая sanity-проверка.

  • L2: Разделение экземпляров (рекомендуемый). Разные инстансы модели с разными настройками температуры — у Checker она ниже (около 0.1 для детерминированности). Оптимальный баланс для большинства продакшн-сценариев.

  • L3: Разделение моделей и вендоров (максимальный). Maker на GPT-4o, Checker на Claude — или наоборот. Разные архитектуры, разные слабые стороны, минимальный набор общих failure modes. Самый надёжный вариант, но и самый дорогой.

Что именно проверяет Checker

Checker — не «ещё одна модель с промптом «перепроверь»». Это система с чётко определёнными типами валидации:

  • Фактическая непротиворечивость — совпадает ли вывод с исходными данными? Критично для отчётов и саммари.
  • Соответствие правилам — не нарушает ли вывод заранее заданные ограничения? Важно в финансах, медицине, юриспруденции.
  • Логическая целостность — непротиворечива ли цепочка рассуждений? Нужно для аналитики и принятия решений.
  • Формат — соответствует ли вывод ожидаемой структуре? Обязательно для API и структурированного вывода.
  • Безопасность — нет ли вредоносного или токсичного контента? Для пользовательских агентов.
  • Полнота — выполнена ли задача целиком? Для сложных многошаговых процессов.

Структурированный вывод Checker

Ключевой момент: результат проверки должен быть машиночитаемым. Не строка «всё хорошо», а структурированный JSON с типом ошибки, серьёзностью, местом в тексте и ожидаемым значением. Это позволяет не просто узнать, что что-то не так, но и автоматически построить обратную связь для следующей итерации.

Цикл: когда останавливаться

Бесконечный цикл «сгенерировал → проверил → переделал» — тоже ловушка. Без чётких условий остановки система может зациклиться, сжигая время и токены. Автор выделяет шесть условий завершения:

  • Лимит попыток — жёсткое ограничение в 3–5 итераций. Просто и предсказуемо.
  • Порог качества — остановка при достижении целевого балла. Подходит для постепенной оптимизации.
  • Сходимость — если два последних вывода совпадают на 95%+, улучшений больше не будет.
  • Убывающая отдача — если прирост качества между итерациями ниже порога, дальнейшие попытки бессмысленны.
  • Временной бюджет — тайм-аут для защиты SLA. Критично для онлайн-сервисов.
  • Гибридный режим (рекомендуемый) — комбинация перечисленных выше. Используется в продакшне.

Почему «просто сделать модель умнее» — не ответ

Многие считают, что ошибки ИИ-агентов — следствие недостаточно умной модели. Это неверный фрейм.

Более умная модель снижает количество неизвестных ошибок — но никогда не доводит его до нуля. Разделение Maker/Checker устраняет известные ошибки, делая их структурно невозможными для прохождения.

Продакшн-системы не стремятся к тому, чтобы ошибок «не было вовсе». Они стремятся к тому, чтобы ошибки ловились и исправлялись автоматически. В этом принципиальная разница между «сделать модель поумнее» и «построить архитектуру с валидацией».

Практическое применение

Автор публикации, У Цзи (Wu Ji), опубликовал рабочий каркас на Python, который реализует описанный паттерн. Framework поддерживает два режима — реальный (с подключением к OpenAI API) и тестовый (с мок-данными, без ключа). Это позволяет протестировать логику цикла локально, прежде чем подключать живую модель.

Сам по себе код — учебный пример, не продакшн-решение. Но принцип, который он иллюстрирует, вполне прикладной: если вы строите агента, который генерирует что-то значимое (отчёт, рекомендацию, юридический документ), отдельная система проверки с независимым контекстом — не роскошь, а необходимость.

Итог

Статья У Цзи — не открытие чего-то принципиально нового. Принцип разделения обязанностей проверки (maker/checker) существует в банковской сфере и DevOps десятилетиями. Но применительно к ИИ-агентам он часто игнорируется: разработчики добавляют к промпту «проверь себя» и считают проблему решённой.

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