Управление контекстом агента
Продвинутая возможность
AgentContext — это служебный объект для сохранения структурированных данных (ключ-значение) и текстовых заметок в рамках текущей сессии.
Доступные агенту данные из AgentContext автоматически добавляются к системному промту, передаваемому в LLM.
В AgentContext можно добавлять и удалять данные с помощью встроенной коллекции AgentContext, а также записывать результаты выполнения функций.
Каждая заметка или пара ключ-значение относится либо к общему контексту, либо к отдельному контексту конкретного агента. Отдельный контекст агента недоступен другим агентам. В некоторых случаях полезно отключить агенту и доступ к общему контексту — например, чтобы уменьшить потребление токенов LLM.
Редактирование контекста
Управлять контекстом прямо в процессе можно с помощью функций встроенной коллекции AgentContext.
Функции можно использовать в качестве инструментов для AI-агента, отдельных шагов в процессе или вызвать в коде других блоков.
Пример
Рассмотрим функцию, которая получает информацию о заказе и записывает ее в общий контекст:
async function getOrderInfo() {
// Логика получения информации о заказе...
// order = {
// id: "12345",
// status: "В пути",
// items: 2
// }
// Сохранение информации в общий контекст
await AgentContext.putValue("lastOrder", order);
}
Данные станут доступны агенту автоматически (если не отключен доступ к общему контексту), дополнительные настройки не требуются.
Получение agentId
Чтобы работать с отдельным контекстом конкретного агента, в функциях AgentContext нужно указать параметр agentId.
Чтобы получить ID:
- Экспортируйте проект.
- Откройте файл
nodes.jsи найдите блок Агент ("nodeType" : "AGENT").
Пример:
{
"nodes" : [
…
{
"id" : "state_2",
"nodeName" : "Агент",
"nodeType" : "AGENT",
"position" : {
"x" : 844,
"y" : -290
},
"nextStep" : null,
"parameters" : {
"nodeType" : "AGENT",
"systemPromts" : {
"role" : "Помощник",
"goal" : "Выполни задание, которое тебе дал пользователь",
"instructions" : "Если пользователь просит найти новости:…",
"queryOverride" : null
},
"llmSettings" : { … },
…
"stayInAgent" : false
}
},
…
]
}
Здесь ID агента — state_2.
Автоматическое сохранение результатов в контекст
Результат выполнения функций можно записывать в AgentContext автоматически, без явного вызова AgentContext.putValue() или AgentContext.addNote().
Эта возможность доступна во всех блоках функций — как в режиме инструмента, так и в режиме отдельного шага в процессе.
Чтобы включить автоматическое сохранение для функции:
-
На холсте нажмите на блок функции и перейдите на вкладку Контекст.
-
Включите опцию Сохранять результат в контекст.
-
Укажите Имя поля в AgentContext (необязательно).
-
Добавьте Префикс (необязательно), чтобы помочь агенту понять смысл данных. Например,
Информация о заказе:.примечаниеЕсли указан префикс, то сохраненное значение по ключу будет строкой, даже если функция возвращает JSON-объект. Например,
Информация о заказе: { "id": "12345", "status": "В пути", "items": 2 }. -
Включите опцию Записывать ошибки, чтобы в случае сбоя в работе функции в контекст попало описание ошибки.
-
Выберите, кому будут доступны данные:
- Всем агентам: результат сохранится в общий контекст.
- Только выбранным: результат сохранится в отдельные контексты указанных агентов.
Изоляция контекста
Доступом агента к общему контексту управляет настройка Учитывать общий контекст (находится на вкладке Контекст блока Агент):
- Если включена (по умолчанию), агенту доступен как свой, так и общий контекст.
- Если отключена, агент работает в изоляции: ему доступен только его контекст.
История сообщений не входит в AgentContext и доступна всем агентам.
Если в общем контексте и в контексте агента есть данные с одинаковым ключом, агент получит значение из своего контекста.