009: Агент/Состояние
- Требуется:
- Позволяет:
- Дополняется:
Сообщение типа Data
, которое представляет собой постоянно обновляемую память рабочего процесса. Оно работает как набор локальных переменных, позволяя выполнять многошаговые операции с сохранением состояния.
Этот документ описывает сообщение о Состоянии — специализированное сообщение Data, которое обеспечивает постоянную память для Цикла Выполнения агента. В то время как Переменные служат «проводами» для соединения инструментов, объект Состояния предоставляет «черновик», где результаты этих соединений сохраняются и поддерживаются на протяжении нескольких шагов.
Объект Состояния выступает источником истины о текущем статусе запроса и является ключом к отказоустойчивости и возобновлению работы. Поскольку он содержит полный контекст рабочего процесса в определенный момент времени, это позволяет приостанавливать и возобновлять процесс. Когда начинается новая итерация, Состояние из предыдущего шага дает LLM четкое понимание того, на чем остановился процесс, что позволяет последующим операциям беспрепятственно продолжить работу.
Управление рабочим процессом с помощью схемы
Предоставление schema
для объекта Состояния — это необязательный, но мощный шаг. Схема документирует предполагаемый поток данных, определяя набор ожидаемых свойств. Это неявно определяет взаимодействия между Инструментами и намекает на общий процесс. Это создает сильную обратную связь для LLM: зная, какие свойства должно содержать Состояние, она генерирует Вызовы Инструментов с соответствующими значениями _outputPath
. Это улучшает результаты, гарантируя, что действия агента структурно корректны и соответствуют желаемому рабочему процессу.
Многошаговые инструменты
Основная функция сообщения о Состоянии — позволить различным Инструментам обмениваться информацией в рамках одного непрерывного процесса. Оно обеспечивает операции с сохранением состояния, предоставляя общий черновик, где Инструменты могут хранить свои результаты.
Это достигается с помощью простого механизма чтения/записи: один Инструмент может записать свой результат в объект Состояния, а другой Инструмент затем может прочитать эти данные в качестве входных на следующем шаге. Это позволяет создавать цепочки инструментов, где результат работы одного инструмента напрямую используется как входные данные для следующего, и все это без потери контекста между выполнениями.
Планирование и Выполнение
Сочетание записи в состояние через _outputPath
и чтения из него с помощью Ссылок на Переменные является основным механизмом, который позволяет отделить планирование от выполнения. Это позволяет агенту построить полный граф потока данных — цепочку Вызовов Инструментов, связанных ссылками, — до запуска любого инструмента.
Этот граф ссылок можно проверять, повторно использовать и даже симулировать, что делает его полностью совместимым со скрытым выполнением LLM. Гибкость этой системы обусловлена возможностью контролировать как входные, так и выходные данные на уровне схемы. Разработчик рабочего процесса может оставить Ссылки на Переменные (входные данные) и _outputPath
(выходные данные) динамическими, чтобы LLM принимала решение, или же задать их жестко для обеспечения надежного потока данных.
Создание Вызовов Инструментов, связанных друг с другом через Состояние, является актом планирования. Эта система обеспечивает техническую основу для этого процесса: постоянное Состояние служит черновиком, Ссылки на Переменные и _outputPath
— проводами, а Цикл агента — итеративным движком. Вместе эти компоненты позволяют агенту построить полный граф потока данных, что и является сутью Плана.
Взаимодействие
-
Вызов: Система Вызовов тесно связана с Состоянием через мета-свойство
_outputPath
. Это свойство превращает Вызов Инструмента, который в противном случае мог бы быть чистой функцией без состояния, в операцию, изменяющую состояние. Указывая_outputPath
, Вызов дает команду движку записать свой результат в объект Состояния, что делает его основным механизмом для записи агентом результатов своих действий. Это взаимодействие позволяет последовательности Вызовов основываться друг на друге, создавая причинно-следственную цепочку, которая записывается в Состоянии. -
Данные: Сообщение о Состоянии по сути является специализированным применением системы сообщений Данных, используя сообщение Данных с
kind: "state"
. Оно использует основные возможности сообщений Данных для создания постоянной памяти для агента. Свойствоschema
используется для определения ожидаемой структуры этой памяти, предоставляя черновик, который направляет действия LLM. Кроме того, критически важны возможности объединения системы Данных, которые позволяют обновлять Состояние постепенно через серию исправлений, а система сводит их в единое, целостное представление. -
ОбластиВидимости: Система Областей Видимости является основным механизмом для предоставления объекта Состояния Инструменту, работающему в изолированном контексте, например, Делегату. Когда Вызов делегируется, свойство
_scopes
может указывать, что Состояние должно быть включено в «чистую комнату» делегата. Это позволяет инкапсулированным инструментам читать и взаимодействовать с состоянием основного рабочего процесса контролируемым и явным образом. -
Экземплирование: Сообщение о Состоянии полностью совместимо с системой Экземплирования. Когда запрос обрабатывает несколько Экземпляров, каждый из них поддерживает свой собственный изолированный объект Состояния, идентифицируемый уникальным ключом
_instance
. Ссылки на Переменные (например,†state.currentUser.id
) автоматически и прозрачно направляются к правильному объекту Состояния, соответствующему Экземпляру, на который нацелен Вызов Инструмента. Это позволяет выполнять один общийПлан
для множества различных состояний параллельно с гарантированной изоляцией данных. -
План: Хотя Состояние позволяет создавать простые последовательности инструментов, его полная мощь раскрывается при использовании в качестве основы системы Планов. В сообщении Плана рабочий процесс представлен в виде направленного ациклического графа (DAG), где узлами являются Вызовы Инструментов. Объект Состояния обеспечивает связи — ребра — между этими узлами. Он позволяет одному узлу записывать в переменную, а другим читать из нее, что делает возможными сложные шаблоны, такие как логические ветвления (if-else) или параллельное разветвление.
От одного Состояния к оркестрованным рабочим процессам
Сообщение о Состоянии предоставляет механизм для управления памятью одного целостного рабочего процесса. Имея постоянный черновик и переменные для соединения инструментов, теперь мы можем проектировать и выполнять сложные многошаговые рабочие процессы.
Следующий документ, 010: Агент/План, описывает систему для оркестрации этих рабочих процессов в виде графа Вызовов Инструментов.