跳到主要内容

消息历史 (Message History)

消息历史 (Message History) 组件提供了聊天记录和消息存储的组合功能。 它可以从 Langflow 存储 专用的聊天记忆数据库(如 Mem0 或 Redis)中存储和检索聊天消息。

提示

代理 (Agent) 组件内置了聊天记忆功能,该功能默认启用并使用 Langflow 存储。 对于大多数用例,这种内置的聊天记忆功能已经足够。

在以下情况下,请使用 消息历史 (Message History) 组件:

  • 您需要为语言模型组件(而非代理)存储和检索聊天记忆。
  • 您需要在聊天上下文之外检索聊天记忆,例如一个检索并分析最近存储记忆的情感分析流。
  • 您希望将记忆存储在独立于 Langflow 存储的特定数据库中。

更多信息请参阅 存储聊天记忆

在流中使用消息历史组件

消息历史 (Message History) 组件有两种模式,取决于您想在流中的何处使用它:

  • 检索模式 (Retrieve mode):该组件从您的 Langflow 数据库或外部存储中检索聊天消息。
  • 存储模式 (Store mode):该组件将聊天消息存储到您的 Langflow 数据库或外部存储中。

这意味着,如果您既想存储又想检索聊天消息,则需要在流中使用多个 消息历史 (Message History) 组件。

以下步骤说明了如何创建一个使用 消息历史 (Message History) 组件从 Langflow 安装数据库中存储和检索聊天记忆的聊天流:

  1. 创建或编辑一个您想要使用聊天记忆的流。

  2. 在流的开始处,添加一个 消息历史 (Message History) 组件,然后将其设置为 检索 (Retrieve) 模式。

  3. 可选:在 消息历史 组件的页眉菜单 中,点击 控制 (Controls) 以启用记忆排序、过滤和限制的参数。

  4. 添加一个 提示词模板 (Prompt Template) 组件,在 模板 (Template) 字段中添加一个 {memory} 变量,然后将 消息历史 的输出连接到 memory 输入。

    提示词模板 组件向 LLM 提供指令和上下文,这与通过 聊天输入 组件传递的聊天消息是分开的。 模板可以包含您想要提供给 LLM 的任何文本和变量,例如:


    _10
    你是一个乐于助人且回答问题的助手。
    _10
    _10
    使用 markdown 格式化你的回答,妥善嵌入图片和链接。
    _10
    _10
    历史记录:
    _10
    _10
    {memory}

    模板中的变量 ({variable}) 会动态地向 提示词模板 组件添加字段,以便您的流可以从其他地方(如其他组件、Langflow 全局变量或运行时输入)接收这些值的定义。 更多信息请参阅 在提示词中定义变量

    在此示例中,{memory} 变量由检索到的聊天记忆填充,然后传递给 语言模型 (Language Model)代理 (Agent) 组件,为 LLM 提供额外的上下文。

  5. 提示词模板 组件的输出连接到 语言模型 (Language Model) 组件的 系统消息 (System Message) 输入。

    本示例使用 语言模型 (Language Model) 核心组件作为核心聊天驱动程序,但您也可以使用其他语言模型组件或 代理 (Agent) 组件。

  6. 添加一个 聊天输入 (Chat Input) 组件,然后将其连接到 语言模型 (Language Model) 组件的 输入 (Input) 字段。

  7. 语言模型 (Language Model) 组件的输出连接到 聊天输出 (Chat Output) 组件。

  8. 在流的末尾,添加另一个 消息历史 (Message History) 组件,然后将其设置为 存储 (Store) 模式。

    根据需要配置第二个 消息历史 组件中的任何额外参数,考虑到此特定组件将存储聊天消息而不是检索它们。

  9. 聊天输出 (Chat Output) 组件的输出连接到 消息历史 (Message History) 组件的 消息 (Message) 输入。

    LLM 的每个响应都从 语言模型 组件输出到 聊天输出 组件,然后由最后的 消息历史 组件存储在聊天记忆中。

消息历史参数

Some parameters are hidden by default in the visual editor. You can modify all parameters through the Controls in the component's header menu.

可用参数取决于组件处于 检索 (Retrieve) 还是 存储 (Store) 模式。

名称类型描述
模板 (Template) (template)字符串输入参数。用于格式化数据的模板。它可以包含 {text}{sender} 键或消息数据中的任何其他键。
外部记忆 (External Memory) (memory)外部记忆输入参数。从外部记忆中检索消息。如果为空,则使用 Langflow 存储。
消息数量 (Number of Messages) (n_messages)整数输入参数。要检索的消息数量。默认值:100。
排序 (Order) (order)字符串输入参数。消息的顺序。默认值:Ascending (升序)。
发送者类型 (Sender Type) (sender_type)字符串输入参数。按发送者类型过滤,可选 UserMachineMachine and User(默认)。
会话 ID (Session ID) (session_id)字符串输入参数。要检索的聊天记忆的 会话 ID。如果省略或为空,则使用当前流运行的会话 ID。

消息历史输出

记忆可以以以下两种格式之一检索:

  • 消息 (Message):以 Message 对象形式检索记忆,其中包含包含检索到的聊天消息文本的 messages_text。 这是用于将记忆 作为聊天消息 传递给另一个组件的典型输出格式。

  • 数据框 (DataFrame):返回包含消息数据的 DataFrame 形式的记忆。 适用于您需要以表格格式而非聊天消息形式检索记忆的情况。

您可以在组件的输出端口附近设置输出类型。

Search