Память агента: что это и зачем она нужна твоему боту
Без памяти агент начинает каждый диалог с нуля. С памятью он помнит клиента, контекст и историю. Разбираю как я её делаю.
Почему просто контекст это не память
Когда ты первый раз делаешь чатбота, он запоминает диалог в пределах одной сессии. Это не память, это контекст. Как только сессия закончилась, бот всё забыл.
Для разовых вопросов этого хватает. Но в реальном бизнесе клиент возвращается. Тот же клиент. Через неделю. С продолжением того же вопроса. И если бот каждый раз заставляет его пересказывать всё заново, клиент либо уйдёт, либо будет раздражаться.
Память это механизм который позволяет агенту помнить релевантные детали между сессиями.
Три уровня памяти
Я делю память на три уровня и настраиваю их отдельно.
Первый уровень: сессионная. Внутри одного диалога. Это базовый контекст модели, тут ничего изобретать не надо.
Второй уровень: клиентская. Факты про конкретного клиента. Как его зовут, что он купил, какие проблемы были, какие предпочтения он высказывал. Это хранится в базе данных по идентификатору клиента.
Третий уровень: организационная. Знания которые нужны агенту для работы с любым клиентом. Инструкции, база знаний по продуктам, прайс, политики возвратов. Это хранится в векторной базе и подгружается по запросу.
Как я это складываю
Клиентскую память я держу в обычной SQL-таблице. Поля: id клиента, имя, язык общения, последний продукт, последняя проблема, тональность которую предпочитает клиент. Это структурированные данные, векторная база тут не нужна.
Организационную память держу в Qdrant. Разбиваю документы клиента на чанки, эмбеддю, кладу. При каждом запросе агент получает 5-7 самых релевантных фрагментов.
Сессионный контекст это LangGraph-состояние внутри конкретного графа запроса.
Что значит "помнить важное"
Ключевая ошибка: пытаться запомнить всё. Если я записываю в клиентскую память каждое слово пользователя, через три месяца это свалка из которой агент не может выбрать нужное.
Я иду другим путём. В конце каждого диалога отдельный шаг агента смотрит на разговор и решает что из этого стоит запомнить. Обычно это одно-три коротких факта. "Клиент предпочитает WhatsApp". "Клиент ждёт доставку к 25 апреля". "Клиент недоволен прошлым заказом".
Эти факты идут в таблицу с датой и источником. В следующий раз когда клиент пишет, агент сначала читает эти заметки и уже с учётом их продолжает диалог.
Где это особенно помогает
Продажи на длинном цикле. Ты работаешь с клиентом месяц прежде чем он решится купить. Без памяти агент каждый раз пишет одно и то же приветствие. С памятью агент помнит что с этим клиентом уже обсуждали два раза, какие возражения были, и продолжает с точки где остановились.
Поддержка постоянных клиентов. Клиент возвращается с новым вопросом, но у него уже был неприятный инцидент три недели назад. Агент помнит это и не начинает с безразличного "чем могу помочь", а сразу реагирует с учётом истории.
Чего не надо класть в память
Чувствительные данные которые ты не имеешь права хранить. Номера карт. Пароли. Детали здоровья если нет согласия.
Длинные куски свободного текста. Они раздувают стоимость запросов и запутывают модель.
Как это начать делать у себя
Если у тебя уже есть агент без памяти, не пытайся внедрить всё сразу. Начни с одного. Добавь идентификатор клиента в каждом обращении. Сделай таблицу с тремя полями. Научи агента писать туда в конце диалога одну заметку.
Через две недели ты увидишь как качество диалога меняется. Тогда добавишь векторную базу для документов. Тогда усложнишь заметки.
Если нужна помощь поставить память на существующий стек, напиши мне в t.me/kulmashev. Покажу как это выглядит в живом проекте.
Готовы внедрить эти решения в свой бизнес?
Запишитесь на бесплатный разбор ваших бизнес-процессов.
Связаться с нами