dify如何实现多轮记忆回答

0 阅读2分钟

您提到的“多轮记忆回答”在 Dify 中通常指让 AI 记住对话历史,从而在后续对话中给出连贯的回答。Dify 主要通过 Chatflow 类型应用​ 和 LLM 节点的记忆功能​ 来实现。


🚀 核心实现方式

实现多轮记忆回答,需遵循以下三个关键步骤:

  1. 创建 Chatflow 应用

    在 Dify 中新建应用时,请务必选择 Chatflow​ 类型。Chatflow 是专为多轮对话设计的,内置了记忆能力,可以自动将对话历史传递给后续的 LLM 节点。而 Workflow 类型则更适合单次、无状态的任务 。

  2. 开启 LLM 节点的记忆功能

    在 Chatflow 的编辑界面,添加一个 LLM 节点,并在其属性设置中找到 “记忆 (Memory)” ​ 选项并开启。您可以设置一个“记忆窗口”(例如最近 20 轮对话),以控制 AI 能“记住”多长的上下文。这个记忆会在同一会话(session)中持续累积 。

  3. 正确引用上下文

    在 LLM 节点的 System Prompt 中,通过 {{#context#}}或类似变量(具体格式请以 Dify 界面提示为准)来引用对话历史和用户输入。这样,模型在生成回答时就能感知到完整的上下文 。


💡 快速上手示例

您可以按照以下步骤验证多轮记忆效果:

  1. 创建应用:新建一个名为“记忆测试”的 Chatflow​ 应用。

  2. 配置节点:在默认的“开始”和“直接回复”节点之间,添加一个 LLM 节点

  3. 设置记忆:在该 LLM 节点的设置中,开启 “记忆” ​ 功能,并将“记忆窗口”设为最近 10 轮。

  4. 编写提示词:在 System Prompt 中写入类似指令:

    text

    你是一个友好的助手。请根据对话历史和当前问题,给出连贯的回答。

    对话历史:{{#context#}}

  5. 测试:点击“预览”,进行多轮提问,例如:

    • 第一轮:“我叫小明。”
    • 第二轮:“我刚才说了我叫什么?”
    • 第三轮:“我上一轮问了你什么问题?”

如果 AI 能正确回答“你刚才说你叫小明”以及复述上一轮的问题,即说明多轮记忆配置成功 。


📌 关键概念与 API 使用

  • 会话 ID (sys.conversation_id)

    Dify 会自动为每个对话生成唯一的 sys.conversation_id,用于区分不同的会话。在通过 API 调用时,保持 conversation_id不变,即可实现多轮对话的记忆 。

  • 记忆的作用域

    LLM 节点的记忆功能通常是节点级别的。这意味着,在同一个 Chatflow 中,不同 LLM 节点可以共享或拥有独立的记忆配置。在编排复杂流程时,需注意这一点 。