Память ноды

LLM-нода помнит контекст и аватар бренда между запусками — общая память для всех бесед агента.

Что это

Обычно LLM-нода отвечает «с чистого листа»: она видит только системный промпт, запрос и историю текущей беседы. Память ноды даёт ей отдельную долговременную память, которая живёт между запусками и общая для всех бесед этого агента. Это «память бренда»: аватар и характер персонажа, постоянные факты о компании, тон и правила, которые нода не должна каждый раз придумывать заново.

Память привязана к конкретной ноде конкретного агента. У разных LLM-нод в одном графе — разные, независимые ячейки памяти. Клиенты память не видят и подделать её не могут — её пишет только сам агент во время прогона.

Как включить

  1. Откройте агента и кликните по LLM-ноде на канвасе.
  2. В правой панели «Инспектор» найдите поле «Запоминать состояние (память ноды)».
  3. Выберите «Да». По умолчанию стоит «Нет» — тогда нода работает как обычно, без памяти.
  4. Изменения сохраняются автоматически.

Пока память не включена ни у одной ноды графа, агент вообще не обращается к базе за памятью — обычные агенты работают ровно как раньше.

Как нода запоминает

Нода пишет память сама — прямо в своём ответе. Чтобы что-то запомнить, модель в конце ответа выводит служебный блок:

[[MEMORY:{"аватар":"рыжий кот-маскот Барсик","тон":"дружелюбный, с юмором"}]]
  • Этот блок вырезается из ответа клиенту — собеседник его не увидит, а значения сохранятся в память ноды.
  • Новые ключи добавляются к уже сохранённым, существующие — перезаписываются.
  • Значение null у ключа (например {"тон":null}) удаляет этот ключ из памяти.

Обычно это описывают прямо в системном промпте ноды: «Когда узнаёшь постоянный факт о бренде — сохрани его блоком [[MEMORY:{…}]] в конце ответа». Кроме того, платформа сама подмешивает краткую сводку текущей памяти в контекст ноды, чтобы модель её учитывала, даже если вы не вставляли переменную в промпт.

Как читать память в промпте

Значения из памяти подставляются в системный или пользовательский промпт ноды через переменную {{memory.ключ}}:

Персонаж бренда: {{memory.аватар}}
Тон общения: {{memory.тон}}
Пиши посты в этом образе, не меняй его.

Если ключа в памяти ещё нет, переменная останется в тексте как есть — поэтому имеет смысл заранее описать в промпте, что делать, когда память пустая (например, придумать аватар и тут же сохранить его).

Пример: контент-завод одного бренда

Агент каждый день генерирует посты для одного бренда. Без памяти он придумывал бы нового персонажа при каждом запуске. С памятью:

  1. В LLM-ноде включаете «Запоминать состояние» и описываете в промпте: придумать и запомнить аватар/персонажа бренда, если его ещё нет.
  2. Первый запуск: нода придумывает маскота и сохраняет его блоком [[MEMORY:{…}]].
  3. Все следующие запуски: нода читает {{memory.аватар}} и делает контент в том же образе — персонаж, тон и правила бренда остаются постоянными от поста к посту и во всех беседах агента.

Для консистентности картинок к постам у ноды «Генерация» есть отдельное поле «Референсы (URL)» — ссылки на образцы персонажа/бренда, чтобы изображения тоже держали единый стиль.

Частые вопросы

Память общая для всех клиентов агента?

Да. Это память бренда/задачи, а не отдельного диалога: она одна на ноду и видна во всех беседах агента. Для памяти о конкретном собеседнике служит обычная история беседы, а не эта ячейка.

Нужно ли что-то настраивать в базе данных?

Для хранения памяти нужна миграция migration_phase_node_memory.sql. Пока она не применена, агент работает как обычно, просто без памяти — ничего не ломается: нода отвечает, но запомнить между запусками не может. Обратитесь к администратору платформы, чтобы применить миграцию.

Как очистить или изменить память?

Память меняет сама нода: чтобы удалить ключ, попросите модель вывести его со значением null; чтобы заменить — вывести новое значение под тем же ключом.