Эволюционный агент: как ИИ учится улучшать логику обработки заявок для банкоматов Сбера

Эволюционный агент: как ИИ учится улучшать логику обработки заявок для банкоматов Сбера

Роберт Арифулин из Сбера рассказывает, как команда разработала эволюционного агента, который автономно улучшает работу промышленного ИИ-агента по восстановлению банкоматов.

Проблема: сложные инструкции и неформализованные знания

Когда банкомат выходит из строя, система мониторинга создаёт заявку. Чтобы её решить, нужно пройти тысячи строк инструкций и учесть множество неформализованных знаний: где искать данные, какие статусы компонентов указывают на скрытую проблему, как внешние факторы влияют на восстановление. Эта информация разбросана по системам и недоступна напрямую ИИ.

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

Решение: эволюционный агент

Команда создала отдельный агент, который анализирует ошибки основного агента и генерирует новые подсказки для его улучшения. Вдохновением послужила идея из соревнования ERC3 и статья «Reflexion: Language Agents with Verbal Reinforcement Learning» — развитие рассуждений через обратную связь, а не усложнение модели.

Как работает агент мониторинга банкоматов

Когда банкомат ломается, в системе мониторинга создаётся инцидент. Часть заявок обрабатывается автоматически через BPM-логику и NLP-модели. Остальные передаются агенту мониторинга. Если и он не справляется — задача уходит человеку.

Агент получает на вход JSON с состоянием банкомата — около 1200 строк и 50 000 символов. Для человека информация распределена по интерфейсам, для агента — это единый структурированный слепок.

Ключевые данные в JSON

  • Текущие бизнес-статусы — ориентир по ключевым состояниям банкомата.
  • Описание заявки — первичная информация о проблеме.
  • Решение по заявке — анализ того, как проблема была устранена ранее.
  • Рабочая группа — подразделение, обрабатывавшее заявку.
  • Тип и действие — категория вмешательства (например, «замена чековой ленты»).
  • Активные случаи — помогают избежать дублирования заявок.
  • Исторические случаи — выявление хронических неисправностей.
  • Состояние компонентов — детальные статусы датчиков и узлов (диспенсер, картридер, принтер и др.).

Агент должен извлечь сигнал из большого неоднородного контракта, сопоставить данные и принять строгое операционное решение.

Архитектура агента

Агент состоит из трёх слоёв:

  1. Выбор СОП — определение нужного дерева решений.
  2. Прохождение СОП — последовательный ответ на вопросы.
  3. Исполнение действия — формирование инструкции для системы.

1. Выбор СОП

Используется двухуровневый подход:

  • ML-классификатор на CatBoost.
  • LLM-классификатор как fallback для редких случаев.

Признаки для ML-модели: эмбеддинги по описанию и решению (GigaR), категориальные признаки по ключевым полям.

2. Прохождение СОП

Агент последовательно проходит дерево решений — более 200 СОП, некоторые глубиной до 25 вопросов. В размеченных данных есть не просто правильный СОП, а правильный путь внутри него — в среднем 8 последовательных вопросов.

3. Инструменты для извлечения данных

Чтобы не перегружать контекст, агент использует инструменты для точечного извлечения данных из JSON:

  • get_current_ticket_info — данные текущей заявки.
  • get_current_incident_info — данные инцидента.
  • get_active_ticket_info — активные заявки.
  • get_component_info — статус компонентов.
  • get_atm_info — общая информация о банкомате.

4. Принятие решения

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

Как обеспечивается точность: SGR и Structured Output

Чтобы LLM не галлюцинировала, используется Schema Guided Reasoning (SGR) — структурированный слой рассуждений:

  1. Выделение полезной информации из вопроса.
  2. Определение нужных инструментов.
  3. Проверка собранности данных.
  4. Выявление пробелов.
  5. Сбор подтверждающих фактов.
  6. Построение плана.
  7. Формирование ответа.

Дополнительно применяется structured output на pydantic-схемах. Это снижает галлюцинации и ужесточает формат рассуждений. Ключевое поле — insert_rules, куда вставляются экспертные подсказки. Именно оно становится точкой для улучшений со стороны эволюционного агента.

Что такое подсказки

Подсказки — это формализованные знания экспертов, привязанные к конкретному узлу СОП. Они указывают, где искать данные, как трактовать вопрос, какие поля проверять. Хранятся в таблицах для удобства редактирования. Промпты — в YAML, схемы — в pydantic.

В сложных случаях на один вопрос может быть до 19 подсказок. Без них LLM начинает «обобщать», а нужна строгая логика.

Как работает эволюционный агент

Этот агент не обрабатывает заявки. Его задача — анализировать ошибки production-агента и улучшать его логику.

На вход он получает:

  • входной JSON;
  • вопрос из СОП;
  • ответ и журналы рассуждений агента;
  • текущие промпты и подсказки;
  • правильный ответ.

Затем он:

  1. анализирует, почему агент ошибся;
  2. формулирует гипотезу;
  3. предлагает новую или улучшенную подсказку;
  4. отправляет «мутацию» на проверку.

Цикл эволюции

Процесс итеративный:

  1. RUN-агент обрабатывает сложные случаи.
  2. Analizer-агент находит корневые причины ошибок.
  3. Evolver-агент создаёт или модифицирует подсказки.
  4. ReRun — повторное тестирование на проблемных сценариях.
  5. Regress-тест — проверка, что старые случаи не сломались.

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

Дедупликация подсказок

Без контроля подсказки быстро дублируются и конфликтуют. Поэтому добавлен этап дедупликации: LLM анализирует правила, находит семантически близкие и предлагает объединить.

Это замедлило рост числа правил, снизило шум и упростило сопровождение.

Проверка полезности мутаций

Каждая новая подсказка проверяется, чтобы не сломать рабочие сценарии. Два подхода:

Сценарий 1. Батчевая эволюция

На вход: 6 плохих и 4 хороших случая. Мутация успешна, если исправляет хотя бы 2 плохих и не ломает ни одного хорошего.

Сценарий 2. Точечная эволюция

Один плохой случай → новая подсказка → проверка на 3 случайных хороших. Метрика — accuracy, так как задача дискретная.

Результаты

При сравнении с ручными подсказками:

  • качество выросло на 5%;
  • потребление токенов — на 8%;
  • время работы — на 18%.

Рост точности при небольшом увеличении затрат — успешный результат.

Заключение: агент, который учит агента

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

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

Сейчас через этот контур проходит 61% трафика заявок. Это пример того, как академические концепции, такие как Reflexion, становятся надёжным промышленным решением для крупнейшей сети банкоматов в стране.

Читать оригинал