学习

使用 Flowise 和 Redis 构建会话代理

Prasan Kumar
作者
Prasan Kumar, Redis 技术解决方案开发者
Will Johnston
作者
Will Johnston, Redis 开发者增长经理

在本教程中,我们将探讨如何使用 Flowise 和 Redis 构建会话代理。Flowise 是一个功能强大、开源且用户友好的 AI 平台,它允许你使用简单直观的界面快速构建和部署会话代理(以及许多其他 LLM 工作流)。


什么是会话代理?#

像 GPT-4 这样的普通 LLM(大型语言模型)是在多样化数据集上训练的通用模型,用于执行广泛的语言相关任务,例如文本生成、翻译、摘要等。


然而,会话代理更加复杂,专为有效管理对话而设计。它们通常集成多个专业代理或模块来处理特定任务,提供全面且交互式的体验。


会话代理示例#

示例

用户提问

`Who won the latest 2024 elections in India?`

普通 LLM (GPT-4) 回复

`抱歉,我无法实时访问当前事件或更新,包括最近的选举结果。要了解 2024 年印度最新选举的获胜者,我建议您查阅可靠新闻网站或值得信赖的媒体渠道的最新新闻。`

会话代理回复

`印度总理纳伦德拉·莫迪 (Narendra Modi) 的印度人民党 (BJP) 及其全国民主联盟 (NDA) 在 2024 年印度最新选举中赢得了最多席位。`


- 普通 LLM 无法回答有关最新新闻、项目等问题,因为它未在实时数据上进行训练。

- 相比之下,会话代理可以处理此类查询,因为它在其核心集成了 LLM 以及其他专业代理来管理特定任务。在我们的会话代理示例中,我们将使用 ChatOpenAISearchAPI 代理结合,来回答有关最新新闻、天气和其他实时信息的问题。

- SearchAPI 代理是一个专业模块,能够从 Google 搜索结果中抓取数据,从而使我们的会话代理能够提供最新且相关的答案。

- 我们可以使用多个专业代理,例如 SearchAPICalculator(计算器)、Python Interpreter(Python 解释器)、Custom Tool(自定义工具)、Custom Function/ API(自定义函数/API)等,来增强我们会话代理的功能。LLM 将选择合适的工具来处理特定类型的查询。


Flowise 设置#

多种方法可以安装 Flowise。在本教程中,我们将使用 docker compose 方法来安装 Flowise。


分步说明


1> 从 GitHub 克隆 Flowise 仓库


git clone https://github.com/FlowiseAI/Flowise.git

2> 导航到 docker 文件夹


cd Flowise/docker

3> 复制 .env 文件: 复制示例环境文件并将其重命名为 .env。此文件包含 docker 容器的配置设置。


cp .env.example .env

4> 启动 docker 应用: 使用以下命令以分离模式启动 docker 应用。此命令将下载必要的 docker 镜像并启动 Flowise 应用。


docker-compose up -d

5> 在浏览器中访问 Flowise: 打开浏览器并导航到 http://localhost:3000 来访问 Flowise 应用。


6> 停止 docker 容器: 如果需要停止 docker 容器,可以使用以下命令进行操作


docker-compose stop

按照这些步骤,你将在本地机器上运行 Flowise,并准备好开始构建和测试你的会话代理。


创建新的聊天流#

分步说明


1> 导航到聊天流菜单: 打开浏览器并访问 http://localhost:3000。在 Flowise 应用中,导航到“聊天流”(Chatflows) 菜单。

2> 创建新的聊天流:点击 `+ 添加新的` 按钮来创建新的聊天流。


create-new-chatflow


3> 保存并命名你的聊天流: 点击保存图标。将出现一个提示,要求你命名你的聊天流。输入一个有意义的名称,描述你的聊天流的目的。


save-new-chatflow


按照这些步骤,你将在 Flowise 中创建一个空的聊天流,为构建会话代理奠定基础。


添加会话代理节点#

01-drag-conversational-agent


1> 拖动会话代理节点: 在 Flowise 界面的“代理”(Agents) 部分,将“会话代理”(Conversational Agent) 节点拖到你的聊天流工作区中。

2> 修改附加参数: 在节点的界面中,你可以选择修改系统消息提示词。此提示词用于设置聊天机器人的上下文,确保它理解你希望其表现出的特定领域或行为。另外,点击保存图标以确保你的修改不会丢失。

按照这些步骤,你已成功将会话代理节点添加到你的聊天流中,并设置了聊天机器人的初始上下文。在后续章节中,我们将集成更多节点,并配置聊天机器人与 Redis 和其他专业代理进行交互。


添加 SearchAPI 节点#


1> 拖动 SearchAPI 节点: 在 Flowise 界面的“工具”(Tools) 部分,将“SearchAPI”节点拖到你的聊天流工作区中。SearchAPI 节点充当一个代理,能够从 Google 搜索结果中抓取数据。

2> 连接到会话代理节点: 通过从“会话代理”(Conversational Agent) 节点的输出拖动到“SearchAPI”节点的输入,将“SearchAPI”节点连接到“会话代理”(Conversational Agent) 节点。此连接允许会话代理利用 SearchAPI 提供的搜索功能。

3> 设置 SearchAPI 密钥: 在 SearchAPI 节点的界面中,输入你的 SearchAPI 密钥。此密钥对于节点进行身份验证和执行搜索查询是必需的。

4> 组合多个工具: 你可以通过添加多个工具来增强会话代理的功能。例如,你可以集成“SearchAPI”、“Calculator”(计算器)、“Python Interpreter”(Python 解释器)或“Custom Tool”(自定义工具)节点。会话代理将自动选择合适的工具来处理特定类型的查询。对于本演示,我们将只添加“SearchAPI”节点。另外,点击保存图标以确保所有配置和连接都已保存。

按照这些步骤,你已成功将 SearchAPI 节点集成到你的聊天流中,接下来让我们添加其他节点。


添加 ChatOpenAI 节点#


1> 拖动 ChatOpenAI 节点: 在 Flowise 界面的“聊天模型”(Chat Models) 部分,将“ChatOpenAI”节点拖到你的聊天流工作区中。

2> 创建 OpenAI 密钥: 如果你还没有创建 OpenAI 密钥,请通过点击节点界面内的“创建新的”(Create New) 菜单来创建。此密钥对于向 OpenAI API 进行身份验证至关重要。

3> 选择模型: 从可用选项中选择一个模型,例如 GPT-3、GPT-4 等。模型决定了你的会话代理的行为和能力。

4> 设置 temperature: temperature 参数控制模型响应的随机性。其取值范围是 0 到 1

- 低 temperature(例如 0.2):产生更确定性、更集中的响应。

- 高 temperature(例如 0.8):产生更有创意、更多样化的响应。

5> 设置附加参数: 配置其他参数,例如“最大 token 数”(Max Tokens),它定义了模型在单个响应中可以生成的最大 token 数(词或词的一部分)。确保定期保存你的聊天流以保留所有更改。

按照这些步骤,你已成功在聊天流中添加并配置了“ChatOpenAI”节点。此节点将作为核心会话引擎,利用 OpenAI 强大的语言模型生成响应。在后续章节中,我们将使用更多节点进一步增强你的聊天流。


添加 Redis 聊天记忆节点#


1> 拖动 Redis 聊天记忆节点: 在 Flowise 界面的“记忆”(Memory) 部分,将“基于 Redis 的聊天记忆”(Redis Backed Chat Memory) 节点拖到你的聊天流工作区中。

2> 选择 Redis 连接密钥: 在节点的界面中,选择或创建一个用于 Redis 实例的连接密钥。此连接密钥将用于存储和检索聊天记忆数据。

3> 设置聊天密钥前缀: 在附加参数部分,你可以设置一个聊天密钥前缀。此前缀有助于组织和标识存储在 Redis 中的聊天记忆记录。最后,保存你的聊天流以确保所有配置和连接都被持久化。


Redis

为何使用 Redis 作为聊天记忆?

速度: Redis 是一个内存数据存储,这意味着它可以快速读写数据,提供对聊天记录的低延迟访问。这种速度对于保持流畅且响应迅速的会话体验至关重要。

持久化: Redis 也支持持久化,允许聊天数据永久存储。这意味着即使应用重启或崩溃,聊天记录也可以恢复,确保会话的连续性。

按照这些步骤,你已成功将 Redis 聊天记忆节点添加到你的聊天流中。此集成确保你的会话代理能够记住并利用过去的交互,从而提升整体用户体验。在下一节中,我们将测试聊天流设置。


测试聊天流#


1> 开始聊天: 点击聊天图标与你新创建的会话代理进行交互。

2> 提问: 通过询问有关最新新闻/事件的任何问题来测试功能。

3> 检查回复: 评估聊天流提供的回复。确保它能够根据连接的工具(例如 SearchAPI)正确抓取并呈现信息。点击聊天流回复消息上方的工具按钮,可以查看所使用的工具详情。



按照这些步骤,你将能够测试和验证你的聊天流的功能,确保你的会话代理按预期工作并提供准确和相关的回复。


使用 RedisInsight 验证聊天流数据#

RedisInsight 是一个功能强大的 GUI 工具,允许你以可视化方式与 Redis 数据交互。它提供了一种简单的方法来验证和管理 Redis 实例中的持久化数据。



存储的聊天数据示例

Redis List


类型 (Type):表示消息的来源。可以是 ai(AI 生成的回复)或 human(用户输入的的消息)。
[
  {
    "type": "ai",
    "data": {
      "content": "Prime Minister Narendra Modi's Bharatiya Janata Party (BJP) and its National Democratic Alliance (NDA) won the most seats in the latest 2024 elections in India. However, they fell short of securing an outright majority in parliament.",
      "tool_calls": [],
      "invalid_tool_calls": [],
      "additional_kwargs": {},
      "response_metadata": {}
    }
  },
  {
    "type": "human",
    "data": {
      "content": "Who won the latest 2024 elections in India?",
      "additional_kwargs": {},
      "response_metadata": {}
    }
  }
]


数据


- 内容 (Content):消息的主要文本。对于 AI 回复,这是生成的答案。对于用户消息,这是用户的输入。:

- 工具调用 (Tool calls):在生成回复过程中对外部工具或 API 的调用列表。

- 无效工具调用 (Invalid tool calls):失败或无效的工具调用列表。

- 附加关键字参数 (Additional kwargs):在消息处理过程中可能使用的附加关键字参数。

- 回复元数据 (Response metadata):与回复相关的元数据,例如时间戳或处理详情。

- 响应元数据:与响应相关的元数据,例如时间戳或处理详情。


通过使用 RedisInsight,你可以轻松监控和管理你的会话代理生成的数据,确保所有交互都正确记录并存储在 Redis 中。这对于调试、提高代理性能以及维护高质量用户体验来说是宝贵的。


导出和导入聊天流#

Flowise 允许你轻松导出和导入聊天流,使你能够保存工作以便将来使用或与他人分享。以下是导出和导入聊天流的步骤。


导出聊天流



1> 选择现有聊天流:在 Flowise 界面中转到“聊天流”(Chatflows) 菜单。从现有聊天流列表中选择要导出的聊天流。

2> 导出聊天流: 点击设置图标并选择“导出聊天流”(Export Chatflow) 菜单项。聊天流将导出为 JSON 文件,你可以下载并保存以备将来使用。


导入聊天流



1> 创建新的聊天流: 在 Flowise 界面中转到“聊天流”(Chatflows) 菜单。点击 `+ 添加新的` 按钮来创建新的聊天流。

2> 导入聊天流: 点击设置图标并选择“加载聊天流”(Load chatflow) 菜单项。上传之前导出的 JSON 文件。

3> 配置导入的聊天流:导入的聊天流将显示为没有凭据的状态。确保为需要身份验证的任何节点(例如 OpenAI 密钥、SearchAPI 密钥和 Redis 密钥)提供必要的凭据,并保存聊天流以持久化更改。导入并配置聊天流后,启动一个聊天会话以确保其按预期工作。


按照这些步骤,你可以高效地在 Flowise 中导出和导入聊天流,方便你的会话代理进行备份、共享和重用。


结论#

通过本教程,你已成功使用 Flowise 和 Redis 构建了一个复杂的会话代理。Flowise 直观的界面和强大的集成能力,结合 Redis 的速度和持久性,为创建和部署高度交互和响应迅速的 AI 聊天机器人提供了一个强大的平台。借助这些工具,你可以处理复杂的查询、抓取实时数据并保持流畅的用户交互。


尝试高级示例?#

除了在 Flowise 中使用 聊天记忆,你还可以利用 Redis 作为 向量存储 来存储和检索你的对话代理的嵌入。此功能对诸如 语义搜索、推荐系统 等任务非常有用。

以下示例聊天流演示了如何使用 Redis 作为向量存储,利用 RAG (Retrieval-Augmented Generation) 概念执行语义搜索。



使用高级示例的快速步骤

1> 导入聊天流:下载并导入提供的聊天流 JSON 文件到 Flowise 并保存。

2. 配置节点:

- Redis 节点:使用你的连接密钥设置 Redis 节点。

- OpenAI 节点:使用你的 API 密钥和必要参数配置 OpenAI 节点。

3> 上传样本数据:解压并上传提供的样本产品 或任何其他文本文件到此聊天流的 `Text File` 节点。上传的数据将用于语义搜索和推荐。

4> 测试聊天流:启动聊天流并执行搜索或查询,查看系统如何检索和利用存储在 Redis 中的嵌入来生成有意义的响应。