Skip to Content

История сообщений (Message History)

Описание

Компонент Message History объединяет функции хранения и извлечения истории чата. Он позволяет сохранять сообщения как во встроенном хранилище, так и в специализированных базах данных памяти, таких как Redis или Mem0.

ℹ️

Компонент Agent имеет встроенную память чата, которая включена по умолчанию и использует хранилище контруктора. Этого достаточно для большинства стандартных задач.

Используйте компонент Message History, если:

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

Использование в потоке

Компонент имеет два режима работы:

  1. Retrieve (Извлечение): загружает сообщения из базы данных.
  2. Store (Сохранение): записывает сообщения в базу данных.Чтобы и сохранять, и извлекать сообщения в одном потоке, вам понадобятся два отдельных компонента Message History.

Использование встроенного хранилища Langflow

Для создания чата с памятью на базе внутренней БД Langflow:

  1. В начале потока: добавьте компонент Message History в режиме Retrieve.
  2. Промпт: добавьте Prompt Template с переменной {memory}. Соедините выход истории с входом memory шаблона.
  3. Связь с моделью: подключите выход шаблона к входу System Message компонента Language Model.
  4. Ввод/Вывод: подключите Chat Input к модели, а модель — к Chat Output.
  5. В конце потока: добавьте второй компонент Message History в режиме Store. Подключите выход Chat Output к входу Message этого компонента для записи ответа в память.

Использование внешней памяти (например, Redis)

Для хранения истории в выделенной базе данных:

  1. Настройка извлечения: добавьте компоненты Message History (режим Retrieve) и Redis Chat Memory.
    • В меню Controls истории включите параметр External Memory.
    • Соедините их: выход Redis -> вход External Memory истории.
  2. Логика чата: аналогично первому способу, передайте переменную {memory} в Prompt Template, который затем подключите к модели.
  3. Настройка сохранения: в конце потока добавьте еще одну пару компонентов Message History (режим Store) и Redis Chat Memory.
    • Включите External Memory в настройках истории.
    • Соедините выход Chat Output с входом Message истории, а саму историю — с компонентом Redis.

Параметры компонента

Некоторые параметры по умолчанию скрыты в визуальном редакторе. Вы можете изменить все параметры через меню component1Controls (Управление) в заголовке компонента.

Доступные параметры зависят от того, находится ли компонент в режиме Retrieve (Извлечение) или Store (Сохранение).

Retrieve

Название (Name)Тип (Type)Описание (Description)
Template (template)StringВходной параметр. Шаблон для форматирования данных. Может содержать ключи {text}, {sender} или любые другие ключи из данных сообщения.
External Memory (memory)External MemoryВходной параметр. Позволяет извлекать сообщения из внешней памяти. Если поле пустое, используется внутреннее хранилище Langflow.
Number of Messages (n_messages)IntegerВходной параметр. Количество извлекаемых сообщений. По умолчанию: 100.
Order (order)StringВходной параметр. Порядок сообщений. По умолчанию: Ascending (по возрастанию).
Sender Type (sender_type)StringВходной параметр. Фильтр по типу отправителя: User (Пользователь), Machine (Машина) или Machine and User (оба, по умолчанию).
Session ID (session_id)StringВходной параметр. ID сессии чата для извлечения. Если не указано, используется текущий ID сессии прогона потока.

Store

Название (Name)Тип (Type)Описание (Description)
Template (template)StringВходной параметр. Шаблон для форматирования данных. Может содержать ключи {text}, {sender} или любые другие ключи из данных сообщения.
Message (message)StringВходной параметр. Сообщение для сохранения. Обычно передается путем подключения компонента Chat Output.
External Memory (memory)External MemoryВходной параметр. Сохранение сообщений во внешнюю память. Если поле пустое, используется внутреннее хранилище конструктора.
Sender (sender)StringВходной параметр. Выбор сообщений для сохранения на основе отправителя: User (Пользователь), Machine (Машина) или Machine and User (оба, по умолчанию).
Sender Name (sender_name)StringВходной параметр. Резервная метка (имя) отправителя, используемая, если у сообщения отсутствуют метаданные об отправителе.
Session ID (session_id)StringВходной параметр. ID сессии для сохранения воспоминаний. Если не указано, используется ID текущего прогона потока. Используйте кастомные ID, если нужно разделять память для разных пользователей в одном потоке.
Sender Type (sender_type)StringВходной параметр. Фильтр по типу отправителя: User, Machine или Machine and User (по умолчанию).

Выходные данные

Воспоминания можно извлечь в одном из двух форматов:

  • Message (Сообщение): извлекает воспоминания как объекты Message, включая поле messages_text, содержащее текст сообщений чата. Это стандартный формат вывода, используемый для передачи истории в виде сообщений чата в другие компоненты.
  • DataFrame: возвращает воспоминания в виде таблицы (DataFrame), содержащей данные сообщений. Полезно в случаях, когда вам нужно получить историю в табличном формате, а не в виде переписки.

Вы можете выбрать тип выходных данных рядом с выходным портом компонента.