Перейти к основному содержимому

Управление контекстом агента

Продвинутая возможность

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:

  1. Экспортируйте проект.
  2. Откройте файл 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(). Эта возможность доступна во всех блоках функций — как в режиме инструмента, так и в режиме отдельного шага в процессе.

Чтобы включить автоматическое сохранение для функции:

  1. На холсте нажмите на блок функции и перейдите на вкладку Контекст.

  2. Включите опцию Сохранять результат в контекст.

  3. Укажите Имя поля в AgentContext (необязательно).

  4. Добавьте Префикс (необязательно), чтобы помочь агенту понять смысл данных. Например, Информация о заказе:.

    примечание

    Если указан префикс, то сохраненное значение по ключу будет строкой, даже если функция возвращает JSON-объект. Например, Информация о заказе: { "id": "12345", "status": "В пути", "items": 2 }.

  5. Включите опцию Записывать ошибки, чтобы в случае сбоя в работе функции в контекст попало описание ошибки.

  6. Выберите, кому будут доступны данные:

    • Всем агентам: результат сохранится в общий контекст.
    • Только выбранным: результат сохранится в отдельные контексты указанных агентов.

Изоляция контекста

Доступом агента к общему контексту управляет настройка Учитывать общий контекст (находится на вкладке Контекст блока Агент):

  • Если включена (по умолчанию), агенту доступен как свой, так и общий контекст.
  • Если отключена, агент работает в изоляции: ему доступен только его контекст.
примечание

История сообщений не входит в AgentContext и доступна всем агентам.

Если в общем контексте и в контексте агента есть данные с одинаковым ключом, агент получит значение из своего контекста.