Реализация контекстной памяти для AI-чат-бота

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1Все 1566 услуг
Реализация контекстной памяти для AI-чат-бота
Средний
~2-3 дня
Часто задаваемые вопросы

Направления AI-разработки

Этапы разработки AI-решения

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    901
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1119
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    853

Реализация контекстной памяти для AI-чат-бота

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

Уровни памяти

Кратковременная (In-context): история текущего диалога в окне контекста LLM. Последние 10–20 сообщений. Самый простой уровень — просто передавать историю в промпт.

Среднесрочная (Session): Redis с TTL 24–48 часов. Сохраняет контекст между сессиями того же дня. Незаполненные слоты, текущие задачи, промежуточные результаты.

Долгосрочная (Persistent): база данных, хранит постоянный профиль пользователя. Предпочтения, история запросов, ключевые факты.

Векторная (Semantic): эмбеддинги прошлых диалогов в векторной базе. При новом запросе — semantic retrieval релевантных воспоминаний.

Реализация с MemoryLayer

from langchain.memory import ConversationSummaryBufferMemory
from langchain_openai import ChatOpenAI

# Суммаризирующая память: старые сообщения сжимаются, последние — полностью
memory = ConversationSummaryBufferMemory(
    llm=ChatOpenAI(model="gpt-4o-mini"),
    max_token_limit=1000,
    return_messages=True,
)

Векторная долгосрочная память

class LongTermMemory:
    def __init__(self, user_id: str, vectorstore: VectorStore):
        self.user_id = user_id
        self.vectorstore = vectorstore

    def remember(self, fact: str, importance: float = 0.5):
        """Сохраняет факт с метаданными"""
        self.vectorstore.add_texts(
            [fact],
            metadatas=[{"user_id": self.user_id, "timestamp": datetime.now().isoformat()}]
        )

    def recall(self, query: str, k: int = 5) -> list[str]:
        """Извлекает релевантные воспоминания по запросу"""
        docs = self.vectorstore.similarity_search(
            query, k=k,
            filter={"user_id": self.user_id}
        )
        return [doc.page_content for doc in docs]

Что стоит запоминать

Факты о пользователе: имя, должность, компания, город, предпочтения

Бизнес-контекст: текущие проекты, предыдущие запросы, принятые решения

Предпочтения взаимодействия: уровень детализации ответов, предпочитаемый язык, формат (списки vs абзацы)

Не запоминать: чувствительные данные (пароли, платёжные данные), временные состояния текущей задачи

Privacy и право на забвение

Пользователь должен иметь возможность: просмотреть, что бот помнит о нём; удалить конкретные воспоминания или все; отказаться от сохранения памяти. Команда /my_data и /forget_me как обязательные в production системах.