在本教程中,我们将探讨如何使用 Flowise 使用 Redis 构建对话式代理。Flowise 是一个功能强大、开源且用户友好的 AI 平台,它允许您使用简单直观的界面快速构建和部署对话式代理(以及许多其他 LLM 流)。
像 GPT-4 这样的普通 LLM(大型语言模型)是在各种数据集上训练的通用模型,用于执行各种与语言相关的任务,例如文本生成、翻译、摘要等等。
但是,对话式代理更复杂,专门设计用于有效地管理对话。它们通常会集成多个专用代理或模块来处理特定任务,从而提供全面的交互式体验。
用户问题
`谁赢得了 2024 年印度最新的选举?`
普通 LLM(GPT-4)的响应
`对不起,我无法实时访问当前事件或更新,包括最近的选举结果。要了解谁赢得了 2024 年印度最新的选举,我建议您查看可靠新闻网站或值得信赖的媒体机构上的最新新闻。`
对话式代理的响应
`纳伦德拉·莫迪总理的印度人民党 (BJP) 及其国民民主联盟 (NDA) 在 2024 年印度最新的选举中赢得了最多的席位。`
- 普通 LLM 无法回答有关最新新闻、项目等的问题,因为它没有在实时数据上进行训练。
- 相反,对话式代理可以处理此类查询,因为它在其核心集成了 LLM 以及其他专用代理来管理特定任务。在我们的对话式代理示例中,我们将使用 ChatOpenAI 与 SearchAPI 代理相结合,以回答有关最新新闻、天气和其他实时信息的问题。
- SearchAPI 代理是一个能够从 Google 搜索结果中获取数据的专用模块,使我们的对话式代理能够提供最新的相关答案。
- 我们可以使用多个专用代理,如 SearchAPI、计算器、Python 解释器、自定义工具、自定义函数/API 等,来增强我们对话式代理的功能。LLM 将选择合适的工具来处理特定类型的查询。
有多种 方法 可以安装 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:打开浏览器并导航到 https://localhost:3000 以访问 Flowise 应用程序。
6> 停止 docker 容器:如果您需要停止 docker 容器,可以使用以下命令
docker-compose stop
按照这些步骤操作后,您将拥有在本地机器上运行的 Flowise,准备开始构建和测试您的对话式代理。
分步说明
1> 导航到聊天流菜单:打开浏览器并转到 https://localhost:3000。在 Flowise 应用程序中,导航到聊天流菜单。
2> 创建新的聊天流:点击 `+ 添加新` 按钮以创建新的聊天流。
3> 保存并命名您的聊天流:点击保存图标。将出现一个提示,要求您命名聊天流。输入一个有意义的名称,该名称描述您的聊天流的目的。
按照这些步骤操作后,您将在 Flowise 中创建一个空的聊天流,为构建您的对话式代理打下基础
1> 拖动对话式代理节点:从 Flowise 界面中的 `代理` 部分,将 `对话式代理` 节点拖动到您的聊天流工作区中。
2> 修改其他参数:在节点的界面中,您可以选择修改系统消息提示。此提示用于为聊天机器人设置上下文,确保它了解您希望它表现出的特定领域或行为。另外,点击保存图标以确保您的修改不会丢失。
按照这些步骤操作后,您将成功地将一个对话式代理节点添加到您的聊天流中,并为您的聊天机器人设置初始上下文。在接下来的部分中,我们将集成其他节点并配置聊天机器人以与 Redis 和其他专用代理进行交互。
1> 拖动 SearchAPI 节点:从 Flowise 界面中的 `工具` 部分,将 `SearchAPI` 节点拖动到您的聊天流工作区中。SearchAPI 节点充当能够从 Google 搜索结果中获取数据的代理。
2> 连接到对话式代理节点:通过从 `对话式代理` 节点的输出到 `SearchAPI` 节点的输入绘制一条线,将 `SearchAPI` 节点连接到 `对话式代理` 节点。此连接允许对话式代理利用 `SearchAPI` 提供的搜索功能。
3> 设置 SearchAPI 密钥:在 SearchAPI 节点的界面中,输入您的 SearchAPI 密钥。此密钥对于节点进行身份验证和执行搜索查询是必需的。
4> 结合多种工具:您可以通过添加多个工具来增强对话式代理的功能。例如,您可以集成 `SearchAPI、计算器、Python 解释器 或 自定义工具` 节点。对话式代理将自动选择合适的工具来处理特定类型的查询。在本演示中,我们将只添加 `SearchAPI` 节点。另外,点击保存图标以确保存储所有配置和连接。
按照这些步骤操作后,您将成功地将一个 SearchAPI 节点集成到您的聊天流中,让我们在接下来的步骤中添加其他节点。
1> 拖动 ChatOpenAI 节点:从 Flowise 界面中的 `聊天模型` 部分,将 `ChatOpenAI` 节点拖动到您的聊天流工作区中。
2> 创建 OpenAI 密钥:如果您还没有创建 OpenAI 密钥,请点击节点界面内的 `新建` 菜单进行创建。此密钥对于向 OpenAI API 认证请求至关重要。
3> 选择模型:从可用选项中选择一个模型,例如 GPT-3、GPT-4 等。该模型决定您的对话代理的行为和功能。
4> 设置温度:温度参数控制模型响应的随机性。它在 0 到 1 之间。
- 低温度(例如,0.2):生成更多确定性和聚焦的响应。
- 高温度(例如,0.8):生成更多创造性和变化的响应。
5> 设置其他参数:配置其他参数,例如 `最大令牌数`,它定义模型在单个响应中可以生成的令牌(单词或单词的一部分)的最大数量。确保定期保存您的聊天流程,以保留所有更改。
通过遵循这些步骤,您将成功地将 `ChatOpenAI` 节点添加到聊天流程中并进行配置。此节点将作为核心对话引擎,利用 OpenAI 的强大语言模型来生成响应。在后续部分中,我们将使用其他节点进一步增强您的聊天流程。
1> 拖动 Redis 聊天内存节点:从 Flowise 界面中的 `内存` 部分,将 `Redis 支持的聊天内存` 节点拖动到您的聊天流程工作区。
2> 选择 Redis 连接密钥:在节点界面中,选择或创建 Redis 实例的连接密钥。此连接密钥将用于存储和检索聊天内存数据。
3> 设置聊天密钥前缀:在其他参数部分,您可以设置聊天密钥前缀。此前缀有助于组织和识别存储在 Redis 中的聊天内存记录。最后,保存您的聊天流程,以确保所有配置和连接都得以持久化。
为什么将 Redis 用于聊天内存?
速度:Redis 是一个内存中数据存储,这意味着它可以快速读取和写入数据,为聊天历史提供低延迟访问。这种速度对于保持无缝且响应迅速的对话体验至关重要。
持久性:Redis 还支持持久性,允许聊天数据永久存储。这意味着即使应用程序重启或崩溃,聊天历史也可以恢复,确保对话的连续性。
通过遵循这些步骤,您将成功地将 Redis 聊天内存节点添加到您的聊天流程中。这种集成确保您的对话代理可以记住和利用过去的交互,从而增强整体用户体验。在下一节中,我们将测试聊天流程设置。
1> 开始聊天:点击聊天图标,与您新创建的对话代理进行交互。
2> 提出问题:通过询问有关最新新闻/事件的任何问题来测试功能。
3> 检查响应:评估聊天流程提供的响应。确保它基于连接的工具(例如,SearchAPI)正确获取和呈现信息。点击聊天流程响应消息上方的工具按钮,以查看所用工具的详细信息。
通过遵循这些步骤,您将能够测试和验证聊天流程的功能,确保您的对话代理按预期工作,并提供准确且相关的响应。
RedisInsight 是一款功能强大的 GUI 工具,允许您以可视化的方式与 Redis 数据进行交互。它提供了一种简单的方法来验证和管理 Redis 实例中持久化的数据。
存储的聊天数据的示例
在我们的示例中,Redis 在一个列表中存储聊天数据,每个条目代表对话中的一条消息。以下是如何呈现这些条目的一些示例
[
{
"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": {}
}
}
]
类型:指示消息的来源。它可以是 ai(由 AI 生成的响应)或 human(由用户输入的消息)。
数据:
- 内容:消息的主要文本。对于 AI 响应,这是生成的答案。对于人类消息,这是用户的输入。
- 工具调用:在响应生成过程中对外部工具或 API 进行的调用的列表。
- 无效工具调用:失败或无效的工具调用的列表。
- 其他关键字参数:在消息处理过程中可能使用的其他关键字参数。
- 响应元数据:与响应相关的元数据,例如时间戳或处理详细信息。
通过使用 RedisInsight,您可以轻松地监控和管理对话代理生成的数据,确保所有交互都正确记录并存储在 Redis 中。这对于调试、提高代理性能和维护高质量的用户体验至关重要。
Flowise 允许您轻松地导出和导入聊天流程,使您能够保存您的工作以备将来使用或与他人共享。以下是导出和导入聊天流程的步骤。
导出聊天流程
1> 选择现有聊天流程:在 Flowise 界面中转到 `聊天流程` 菜单。从现有聊天流程列表中选择要导出的聊天流程。
2> 导出聊天流程:点击设置图标,然后选择 `导出聊天流程` 菜单项。聊天流程将以 JSON 文件的形式导出,您可以 下载 并保存以备将来使用。
导入聊天流程
1> 创建新聊天流程:在 Flowise 界面中转到 `聊天流程` 菜单。点击 `+ 添加新` 按钮以创建一个新的聊天流程。
2> 导入聊天流程:点击设置图标,然后选择 `加载聊天流程` 菜单项。上传之前导出的 JSON 文件。
3> 配置导入的聊天流程:导入的聊天流程将出现在没有凭据的情况下。确保为任何需要身份验证的节点(例如,OpenAI 密钥、SearchAPI 密钥和 Redis 密钥)提供必要的凭据,并保存聊天流程以持久化更改。一旦聊天流程被导入和配置,请启动聊天会话以确保它按预期工作。
通过遵循这些步骤,您可以在 Flowise 中有效地导出和导入聊天流程,便于轻松备份、共享和重用您的对话代理。
通过遵循本教程,您已成功使用 Flowise 和 Redis 构建了一个复杂的对话代理。Flowise 的直观界面和强大的集成功能,结合 Redis 的速度和持久性,为创建和部署高度交互式且响应迅速的 AI 聊天机器人提供了一个强大的平台。使用这些工具,您可以处理复杂查询、获取实时数据并保持无缝的用户交互。
除了在 Flowise 中使用聊天内存之外,您还可以利用 Redis 作为向量存储来存储和检索对话代理的嵌入。此功能有利于诸如语义搜索、推荐系统等任务。
以下示例聊天流程演示了如何使用 Redis 作为向量存储来使用RAG(检索增强生成)概念执行语义搜索。
使用高级示例的快速步骤
1> 导入聊天流程:下载并导入提供的 聊天流程 JSON 文件 到 Flowise 中,并保存它。
2. 配置节点:
- Redis 节点:使用您的连接密钥设置 Redis 节点。
- OpenAI 节点:使用您的 API 密钥和必要的参数配置 OpenAI 节点。
3> 上传示例数据:解压缩并上传提供的 示例产品 或任何其他文本文件到此聊天流程的 `文本文件` 节点。上传的数据将用于语义搜索和推荐。
4> 测试聊天流程:启动聊天流程,执行搜索或查询,以查看系统如何检索和利用存储在 Redis 中的嵌入来生成有意义的响应。