005: Агент/Цикл
Этот документ описывает Цикл выполнения, который позволяет агенту выполнять многошаговые задачи путем итеративного создания Запросов. Этот итеративный процесс сборки контекста, использования инструментов и обратной связи — это то, что обычно подразумевается под словом «агент».
Цикл выполнения
Цикл выполнения — это основной механизм для автономного, многошагового исполнения. Он работает на основе вложенной структуры циклов:
- Внешний цикл (Генерация запросов): Жизненный цикл агента представляет собой последовательность Запросов. Он начинается с исходного контекста и входит в цикл.
- Потоковая передача запросов и вызовов: Внутри цикла агент инициирует один Запрос. Запрос потоком возвращает генерируемые Вызовы, которые собираются в очередь ожидания.
- Внутренний цикл (Оркестрация вызовов): Для каждого Запроса внутренний цикл оркестрации отвечает за выполнение связанных с ним Вызовов. Этот процесс высококонкурентен:
- Оркестратор постоянно сканирует очередь ожидающих Вызовов, чтобы найти все, которые в данный момент не заблокированы (то есть их зависимости удовлетворены).
- Все незаблокированные Вызовы могут быть представлены для подтверждения, а затем выполнены параллельно. Такая параллельность безопасна, поскольку Состояние агента неизменно: как только значение записано по определенному пути через
_outputPath
, оно не может быть перезаписано. Это позволяет модели предлагать взаимоисключающие Вызовы — например, разные ветви условного оператора, — которые записывают данные в один и тот же выходной путь. Первый из успешно выполненных вызовов устанавливает значение, а любые другие альтернативные вызовы не будут выполнены, так как их предусловия (путь должен быть пустым) больше не соблюдаются. Это обеспечивает детерминированный результат без конфликтов. - По мере завершения каждого Вызова его результат обновляет общий контекст, потенциально разблокируя другие ожидающие Вызовы.
- Это реактивное параллельное выполнение продолжается до тех пор, пока поток для текущего Запроса не будет закрыт и все его ожидающие Вызовы не будут обработаны. Эта модель значительно снижает задержку, так как агент может начать работать над несколькими независимыми шагами одновременно, даже до того, как станет известен полный план.
- Проверка завершения: После завершения внутреннего цикла агент проверяет итоговое Решение из родительского Запроса. Если оно не содержит Вызовов, цель агента считается достигнутой, и внешний цикл завершается.
- Продолжение: Если Решение содержало Вызовы, агент возвращается к шагу 2, инициируя новый Запрос с обогащенным контекстом, который теперь содержит результаты предыдущего шага выполнения.
- Генерация вывода: По завершении поле
output
итогового Решения содержит результат, соответствующий определенной пользователем схеме вывода.
Человек в цикле
Новый Цикл выполнения обеспечивает надежную поддержку контроля со стороны человека, помещая шаг подтверждения непосредственно перед выполнением. Это гарантирует, что пользователю предлагается действовать только в отношении вызовов, которые готовы к запуску:
- Подтверждение: Перед выполнением незаблокированного Вызова система может представить его пользователю для одобрения. Это эффективный подход, поскольку он избавляет пользователя от необходимости просматривать и подтверждать вызовы, которые могут быть заблокированы зависимостями и никогда не выполнятся.
- Исправление: Пользователь может изменять параметры Вызова или даже заменять его другим
Важно отметить, что эти конкретные механизмы ЧВЦ не являются частью основного протокола. Архитектура просто обеспечивает необходимое разделение между предложением действий и их выполнением, предоставляя разработчикам гибкость для реализации любого вида вмешательства, от простого ручного подтверждения до сложной автоматизированной системы с тайм-аутами.
Эта возможность критически важна для безопасности и совместных задач, где агент выступает в роли помощника. Корректировки и обратная связь от пользователя могут быть использованы Планом, позволяя агенту совершенствовать свою стратегию на основе человеческого ввода.
Роль данных в цикле
Цикл выполнения обеспечивает динамическую структуру для поведения агента, но его сила заключается в потоке данных внутри него. Это управляется типом сообщения Данные, который рассматривается в 006: Агент/Данные.