Проектирование циклов для AI-агентов

Проектирование циклов для AI-агентов

Влад Смирнов

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

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

Ниже - четыре уровня такого стека и то, как они выглядят в практике LangChain и LangSmith.

Цикл 1. Агент

На первом уровне агент - это модель, которая вызывает инструменты, пока задача не закрыта. В LangChain такой каркас дает create_agent: выбираете модель, подключаете инструменты и получаете рабочий агентский цикл.

Базовый агентский цикл: модель получает задачу, вызывает инструменты и повторяет шаги до результата.

Именно инструменты дают агенту возможность делать реальные действия: читать и менять файлы, работать с репозиторием, открывать pull request, дергать API, запускать тесты или писать документацию.

Представим внутреннего агента для документации. На первом уровне он получает запрос на улучшение доков, планирует правку, клонирует репозиторий, читает нужные файлы, меняет текст и готовит pull request.

Пример: агент для документации получает задачу и работает с репозиторием через инструменты.

Цикл 2. Проверка

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

Проверочный цикл добавляет оценщик между попытками агента.

Оценщик может быть детерминированным или агентским. Классический вариант для второго случая - модель в роли судьи. В LangChain этот паттерн можно собрать через RubricMiddleware или через after_agent hook в create_agent.

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

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

Цена этого уровня - больше задержка и выше расход токенов. Он оправдан там, где качество важнее скорости. Для большинства производственных сценариев это как раз нормальная цена надежности.

Цикл 3. Событийный запуск

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

Событийный цикл запускает агента по расписанию, вебхукам и другим сигналам из рабочей среды.

LangSmith Deployment закрывает инфраструктуру триггеров, включая cron-расписания и вебхуки. В OpenClaw похожая идея используется через регулярные сигналы активности: агент сам возвращается к задачам и может действовать как постоянный помощник.

В примере с документацией агент работает через Fleet, конструктор агентов без кода. Каналы и расписания Fleet запускают его по событиям. Например, сообщение в Slack-канале #docs-plz может автоматически отправить агенту задачу на правку документации.

Канал или расписание превращает отдельный агентский запуск в фоновый рабочий процесс.

Цикл 4. Улучшение системы

Первые три цикла автоматизируют работу. Четвертый автоматизирует улучшение самой агентской обвязки.

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

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

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

В LangSmith для этого используется Engine, агент анализа следов. В сценарии с документацией Engine смотрит на накопленные запуски и, если видит повторяющуюся проблему, создает задачу на изменение инструкции или инструмента.

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

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

Где остается человек

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

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

Практические точки контроля:

  1. в агентском цикле - требовать подтверждение перед чувствительными вызовами инструментов;
  2. в проверочном цикле - использовать человека как оценщика для критичных сценариев;
  3. в цикле приложения - просить одобрение перед возвратом результата конечному пользователю;
  4. в цикле улучшения - пропускать изменения обвязки через ревью перед выкладкой.

Фреймворки LangChain делают такие точки контроля первоклассной частью агентской системы, а не внешней ручной заплаткой.

Как складываются четыре цикла

  • Агентский цикл: модель и инструменты повторяют шаги до результата. Эффект - автоматизация работы. Примитивы: create_agent и модели, поддерживаемые LangChain.
  • Проверочный цикл: агент получает оценку по критериям и повторяет попытку с обратной связью. Эффект - качество. Примитив: RubricMiddleware или after_agent hook.
  • Событийный цикл: реальные события запускают агента в системе. Эффект - масштабирование работы. Примитивы: LangSmith Deployment, Fleet channels, cron и webhooks.
  • Цикл улучшения: следы производственных запусков анализируются и превращаются в изменения обвязки. Эффект - накопительное улучшение. Примитив: LangSmith Engine.

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

Источники

Report Page