Управление контекстом агента
Продвинутая возможность
AgentContext — это служебный объект для сохранения структурированных данных (ключ-значение) и текстовых заметок в рамках текущей сессии.
Доступные агенту данные из AgentContext автоматически добавляются к системному промту, передаваемому в LLM.
В AgentContext можно добавлять и удалять данные с помощью встроенной коллекции AgentContext, а также записывать результаты выполнения функций.
Каждая заметка или пара ключ-значение относится либо к общему контексту, либо к отдельному контексту конкретного агента. Отдельный контекст агента недоступен другим агентам. В некоторых случаях полезно отключить агенту и доступ к общему контексту — например, чтобы уменьшить потребление токенов LLM.
Редактирование контекста
Управлять контекстом прямо в процессе можно с помощью функций встроенной коллекции AgentContext.
Функции можно использовать в качестве инструментов для AI-агента, отдельных шагов в процессе или вызвать в коде других блоков.
Если в вашем проекте движок версии 2, функции являются синхронными, если версия 1 — асинхронными.
Пример
Рассмотрим функцию, которая получает информацию о заказе и записывает ее в общий контекст. Реализация зависит от версии движка в вашем проекте.
- Версия 2
- Версия 1
async function getOrderInfo() {
// Логика получения информации о заказе...
// order = {
// id: "12345",
// status: "В пути",
// items: 2
// }
// Сохранение информации в общий контекст
AgentContext.putValue({key: "lastOrder", value: order});
}
async function getOrderInfo() {
// Логика получения информации о заказе...
// order = {
// id: "12345",
// status: "В пути",
// items: 2
// }
// Сохранение информации в общий контекст
await AgentContext.putValue("lastOrder", order);
}
Данные станут доступны агенту автоматически (если не отключен доступ к общему контексту), дополнительные настройки не требуются.
Получение agentId
Чтобы работать с отдельным контекстом конкретного агента, в функциях AgentContext нужно указать параметр agentId.
Чтобы получить ID агента:
- На холсте дважды нажмите на блок Агент.
- Нажмите ID.
ID агента скопируется в буфер обмена.
Автоматическое сохранение результатов в контекст
Результат выполнения функций можно записывать в AgentContext автоматически, без явного вызова AgentContext.putValue() или AgentContext.addNote().
Эта возможность доступна во всех блоках функций — как в режиме инструмента, так и в режиме отдельного шага в процессе.
Чтобы включить автоматическое сохранение для функции:
-
На холсте дважды нажмите на блок функции и перейдите на вкладку Контекст.
-
Включите опцию Сохранять результат в контекст.
-
Укажите Имя поля в AgentContext (необязательно).
-
Добавьте Префикс (необязательно), чтобы помочь агенту понять смысл данных. Например,
Информация о заказе:.примечаниеЕсли указан префикс, то сохраненное значение по ключу будет строкой, даже если функция возвращает JSON-объект. Например,
Информация о заказе: { "id": "12345", "status": "В пути", "items": 2 }. -
Включите опцию Записывать ошибки, чтобы в случае сбоя в работе функции в контекст попало описание ошибки.
-
Выберите, кому будут доступны данные:
- Всем агентам: результат сохранится в общий контекст.
- Только выбранным: результат сохранится в отдельные контексты указанных агентов.
Изоляция контекста
Доступом агента к общему контексту управляет настройка Учитывать общий контекст (находится на вкладке Контекст блока Агент):
- Если включена (по умолчанию), агенту доступен как свой, так и общий контекст.
- Если отключена, агент работает в изоляции: ему доступен только его контекст.
История сообщений не входит в AgentContext и доступна всем агентам.
Если в общем контексте и в контексте агента есть данные с одинаковым ключом, агент получит значение из своего контекста.