История сообщений (Message History)
Описание
Компонент Message History объединяет функции хранения и извлечения истории чата. Он позволяет сохранять сообщения как во встроенном хранилище, так и в специализированных базах данных памяти, таких как Redis или Mem0.
Компонент Agent имеет встроенную память чата, которая включена по умолчанию и использует хранилище контруктора. Этого достаточно для большинства стандартных задач.
Используйте компонент Message History, если:
- Вам нужно добавить память для обычной языковой модели (не агента).
- Вам нужно извлечь историю вне контекста чата (например, для анализа тональности недавних сообщений).
- Вы хотите хранить память в отдельной базе данных.
Использование в потоке
Компонент имеет два режима работы:
- Retrieve (Извлечение): загружает сообщения из базы данных.
- Store (Сохранение): записывает сообщения в базу данных.Чтобы и сохранять, и извлекать сообщения в одном потоке, вам понадобятся два отдельных компонента Message History.
Использование встроенного хранилища Langflow
Для создания чата с памятью на базе внутренней БД Langflow:
- В начале потока: добавьте компонент Message History в режиме Retrieve.
- Промпт: добавьте Prompt Template с переменной
{memory}. Соедините выход истории с входомmemoryшаблона. - Связь с моделью: подключите выход шаблона к входу
System Messageкомпонента Language Model. - Ввод/Вывод: подключите Chat Input к модели, а модель — к Chat Output.
- В конце потока: добавьте второй компонент Message History в режиме Store. Подключите выход Chat Output к входу
Messageэтого компонента для записи ответа в память.
Использование внешней памяти (например, Redis)
Для хранения истории в выделенной базе данных:
- Настройка извлечения: добавьте компоненты Message History (режим Retrieve) и Redis Chat Memory.
- В меню Controls истории включите параметр
External Memory. - Соедините их: выход Redis -> вход
External Memoryистории.
- В меню Controls истории включите параметр
- Логика чата: аналогично первому способу, передайте переменную
{memory}в Prompt Template, который затем подключите к модели. - Настройка сохранения: в конце потока добавьте еще одну пару компонентов Message History (режим Store) и Redis Chat Memory.
- Включите
External Memoryв настройках истории. - Соедините выход Chat Output с входом
Messageистории, а саму историю — с компонентом Redis.
- Включите
Параметры компонента
Некоторые параметры по умолчанию скрыты в визуальном редакторе. Вы можете изменить все параметры через меню
Controls (Управление) в заголовке компонента.
Доступные параметры зависят от того, находится ли компонент в режиме 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), содержащей данные сообщений. Полезно в случаях, когда вам нужно получить историю в табличном формате, а не в виде переписки.
Вы можете выбрать тип выходных данных рядом с выходным портом компонента.