Акты Становления

010: Агент/Цикл

Это как будто робот пытается решить задачку, пробуя разные действия одно за другим. Он делает запрос, получает список команд (вызовов), выполняет их, а результат использует для следующего шага. Так он продолжает, пока не получит финальный ответ, который означает: «Задачка решена!».

Представьте Цикл Исполнения как моторчик, который заставляет работать все части агента, о которых мы говорили раньше. Благодаря этому моторчику агент может выполнять сложные задачи, состоящие из многих шагов, раз за разом отправляя запросы. Именно этот процесс — сборка информации, использование инструментов и получение обратной связи — и делает «агента» по-настоящему умным помощником.

Цикл Исполнения

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

  1. Внешний цикл (Создание Запросов): Жизнь агента — это последовательность запросов. Он начинает с какой-то начальной информацией и входит в этот большой цикл.

  2. Потоковая передача Запросов и Вызовов: Внутри цикла агент делает один запрос. В ответ ему начинают приходить вызовы (команды), как сообщения в чате. Все они собираются в очередь ожидания.

  3. Внутренний цикл (Выполнение Команд): Для каждого запроса запускается свой маленький цикл, который отвечает за выполнение команд. Этот процесс похож на диспетчера на кухне. Он запускается, когда происходит одно из двух: либо приходит новая команда от «мозга» (ИИ), либо завершается выполнение старой. Всё происходит очень быстро и одновременно:

    • Диспетчер постоянно смотрит на очередь команд и выбирает все, которые можно выполнить прямо сейчас (то есть все нужные для них данные уже готовы).

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

    • Когда команда выполнена, её результат обновляет общую «картину мира» агента, что может разблокировать другие команды в очереди.

    • Такое параллельное выполнение команд продолжается до тех пор, пока поток команд для текущего запроса не закончится и вся очередь не опустеет. Эта модель сильно сокращает время ожидания, так как агент может начать работать над несколькими независимыми задачами одновременно, даже не зная всего плана наперёд.

  4. Завершение или Продолжение: Когда внутренний цикл для одного запроса завершён, агент смотрит на итоговое решение. Чтобы понять, продолжать работу или нет, он проверяет поле output (результат):

    • Если outputnull (пусто), агент считает, что задача ещё не выполнена. Он возвращается к шагу 2 и делает новый запрос, но уже с обновлённой информацией, включающей результаты выполненных команд.

    • Если output не пустой, цель агента считается достигнутой. Внешний цикл останавливается, и значение output возвращается как финальный результат. Агент может в одном шаге и выполнить команды, и выдать финальный результат; именно наличие output служит сигналом к остановке.

поток вызовов

найдены

завершён

не найдены

Да

Нет

Нет

Да

Агент(...)

Агент.Запрос(...)

Найти доступные вызовы

Подтвердить и запустить (параллельно)

Обновить контекст результатом

Поток активен или есть вызовы?

Ждать новых вызовов или завершений

В решении есть результат?

Вернуть контекст/решение

Человек-в-цикле

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

  • Одобрение: Перед тем как выполнить готовую команду (вызов), система может показать её человеку для одобрения. Это эффективно, потому что человеку не нужно просматривать и подтверждать команды, которые могут быть заблокированы и никогда не запустятся.
  • Исправление: Человек может изменить параметры вызова или даже заменить его на другой.

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

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

Обработка ошибок и самоисправление

Цикл Исполнения спроектирован так, чтобы быть устойчивым к сбоям. Он создаёт «сеть безопасности», которая позволяет агенту справляться как с собственными ошибками в планировании, так и с неожиданными сбоями во время работы. Это достигается за счёт того, что ошибки не игнорируются, а превращаются в полезную информацию и отправляются обратно в «мозг» (ИИ).

Сообщение об ошибке

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

  • call: полная информация о команде, которая не сработала.
  • error: объект или текст, объясняющий причину сбоя.

Цикл самоисправления

Цикл отлавливает два основных типа сбоев:

  1. Структурные ошибки: обнаруживаются до выполнения. Например, если параметры команды не соответствуют правилам, перепутаны типы данных или есть неверные ссылки на переменные.
  2. Ошибки выполнения: обнаруживаются во время выполнения. Это происходит, когда какое-то действие вызывает непредвиденную ошибку (например, сбой в API или внутренняя ошибка в коде).

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

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

Проактивная и реактивная обработка ошибок

Способность цикла ловить ошибки и сообщать о них ИИ — это реактивная мера безопасности для непредвиденных сбоев. Однако самые надёжные системы заранее готовятся к возможным неудачам.

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

От простых циклов к стратегическим планам

Цикл Исполнения создаёт основу для действий агента, но его сила — в выполнении тактических, одноразовых запросов. Для управления сложными многоэтапными задачами с зависимостями друг от друга требуется более продвинутая система стратегического планирования.

Следующий документ, 011: Агент/Выражения, представит протокол для определения таких долгосрочных стратегий в виде графа взаимосвязанных Вызовов Инструментов.