在本文中,我将一步步讲解如何使用 Flowise 来构建一个能够基于 CSV 数据集回答问题的 AI 代理。
Flowise 对于想要构建 AI 代理但又不想陷入复杂编码的人来说是一个顺手的工具。它采用低代码思路,让我们更多地专注于要完成的任务,而不是技术细节。
最近,我看到用于构建 AI 代理的工具激增。这些工具越来越易用、友好,使每个人都无需大量技术背景就能创建智能系统。如果您有兴趣进一步了解这些工具,也可以看看以下教程:
什么是 Flowise?
Flowise 是一款通过简单的拖放界面帮助我们创建 AI 代理的工具。它的工作方式是允许我们连接代表不同功能的各类模块,构建自定义工作流。每个模块都可以配置为执行特定操作。
例如,有些模块被称为 LLM 模块,用于向大型语言模型发送消息。也有函数模块,赋予我们执行自定义 JavaScript 函数的能力,从而实现更贴合需求的操作。
通过将这些模块连接起来,信息会从一个模块流向下一个模块,逐步处理并转换数据。这种模块化方法让我们无需深厚的编程知识也能轻松构建 AI 代理,因为我们可以专注于设计工作流并配置必要的动作。
使用 Flowise 构建数据分析师 AI 代理
下面我们来分解使用 Flowise 构建数据分析师 AI 代理的流程。本指南将涵盖注册 Flowise、构建自定义工作流,以及使用各种模块创建可分析数据集的交互式代理。
步骤 1:在 Flowise 上创建账户
首先访问这个 Flowise 注册页面 并创建一个账户。填写所需信息,并按照发送至您邮箱的说明进行验证与激活。
步骤 2:数据库设置
现在我们已经准备好了 Flowise 账户,接下来要设置要使用的数据库。我们需要一个数据库来存储要分析的数据。
我们将使用 SingleStore,这是一家广受欢迎且用户友好的 SQL 数据库提供商,来管理数据。请按照以下步骤操作:
首先前往 SingleStore 官网 。
在 SingleStore 注册一个新账户。
激活 SingleStore 账户后,下一步是上传我们将使用的数据集。本例中,我们使用的是一个聚焦学生社交媒体习惯的数据集,来源于 Kaggle 。请确保先从 Kaggle 下载数据集文件,再将其上传至 SingleStore。
上传数据集后,SingleStore 会自动据此生成一张数据库表。该表将成为我们数据分析的基础,使 Flowise AI 代理可以与之交互。
步骤 3:进入 chatflows 区域
登录后,进入仪表盘并找到 "Chatflows" 区域。点击 "Add New" 开始创建新的工作流。
步骤 4:创建自定义函数以加载表信息
此步骤需要编写一个自定义函数以检索表的信息,例如其描述及列名。这些数据对我们的 AI 代理理解所要查询的数据集结构至关重要。
创建一个自定义函数模块。
将以下代码粘贴到函数模块编辑器中:
const mysql = require ( 'mysql2/promise' ) ;
const tableName = $tableName;
const tableDescription = $tableDescription;
const connectionUrl = "<PASTE_YOUR_CONNECTION_STRING_HERE>"
async function main ( ) {
try {
const pool = mysql. createPool ( connectionUrl) ;
const q =
DESCRIBE ${ tableName} ;
;
const [ rows] = await pool. query ( q) ;
const fields = rows. map ( ( row ) => ${ row. Field} of type ${ row. Type} ) . join ( "\n" ) ;
const tableInformation = Table name: ${ tableName} \nTable description: \n${ tableDescription. trim ( ) } \nColumns: \n${ fields. trim ( ) } ;
return tableInformation;
} catch ( error) {
return String ( error) ;
}
}
return main ( ) ; 技术支持
在函数开头,我们需要设置 connectionUrl 的值。可在 SingleStore 的 Deployments 选项卡中找到。
连接字符串类似如下所示:
françois-19ecc:<françois-19ecc Password>@svc-3482219c-a389-4079-b18b-d50662524e8a-shared-dml.aws-virginia-6.svc.SingleStore.com:3333/db_franois_88ec0技术支持
第一部分,在我的示例中是 françois-19ecc,表示用户名。紧接着是密码占位符 <françois-19ecc Password>,需要我们替换为实际密码。
该函数会连接到 SingleStore 数据库并获取表的列信息。它有两个输入:
tableName:表名
tableDescription:表的描述。
这些输入需通过点击自定义代码节点上的 “Input Variables” 按钮进行配置。在代码中可通过在变量名前加上 $ 来访问。
在我的例子中,该表在 SingleStore 上创建时命名为 dataset。您应当使用上传 CSV 文件时所设置的名称。
步骤 5:创建提示模板节点
此节点用于编写引导 AI 代理的问题。将该节点连接到您的自定义函数。
创建一个提示模板节点。
插入以下提示:
Based on the SQL table information and the user's questions, return a SQL query that answers that question.
TABLE INFORMATION: {tableInformation}
QUESTION: {question}技术支持
该提示包含两个占位符:{tableInformation} 和 {question}。其中 question 是用户提交的提示,而 tableInformation 是我们在上一步定义函数的输出。
需要在提示模板节点上点击 “Format Prompt Values” 按钮来配置这些占位符的取值。
步骤 6:连接到 LLM chain 模块
现在将提示模板节点连接到一个 LLM chain 模块,由其解释提示并据此生成 SQL 查询。我们需要执行以下步骤:
添加一个 LLM chain 模块。
添加一个配置为使用 OpenAI 的模型模块,并将其连接到 LLM chain 模块的 “Language Model” 输入上。
要配置 OpenAI 模型,您需要设置 OpenAI API 密钥。如果还没有,可以 在此创建 。
将提示模板模块连接到 “Prompt” 输入。
步骤 7:使用 set variable 模块
为便于后续使用,创建一个 set variable 模块来存储生成的 SQL 查询,并将其连接到 LLM chain 模块的输出。
步骤 8:执行 SQL 查询
将 SQL 查询发送到一个新的自定义代码模块,在数据库上执行它。
再创建一个自定义代码模块。
输入以下代码:
const mysql = require ( 'mysql2/promise' ) ;
const connectionUrl = "<PASTE_THE_SAME_URL_USED_BEFORE>" ;
function formatQuery ( ) {
const q = $query;
let lines = q. trim ( ) . split ( / \r\n|\r|\n / ) ;
if ( lines[ 0 ] . startsWith ( "" ) ) {
lines = lines. slice ( 1 , lines. length - 1 ) ;
}
return lines. join ( "\n" ) . trim ( )
}
const q = formatQuery ( ) ;
try {
const pool = mysql. createPool ( connectionUrl) ;
const [ rows] = await pool. query ( q) ;
return rows;
} catch ( error) {
return Query : ${ q} \nError: ${ String ( error) } `
} 技术支持
请记得设置 connectionUrl 的值,与之前使用的一致。
该函数只有一个输入,即我们要执行的查询,在代码中通过 $query 访问。
步骤 9:创建另一条提示模板
此模板用于根据查询结果,格式化 AI 代理将呈现给用户的答案。
创建一个新的提示模板。
使用以下提示:
Based on the question and the query result, provide an answer to the user's question. Always show the query to the user.
QUERY: {query}
QUERY RESULT: {queryResult}
QUESTION: {question}技术支持
该提示包含三个占位符:
query:由 LLM 生成的 SQL 查询,通过连接变量节点获得。
queryResult:查询结果,由前一个自定义函数节点计算得出。
question:用户最初的提问。
步骤 10:最终的 LLM chain 模块
最后,将此提示模板连接到一个新的 LLM chain 模块,由其根据提示生成回复。您可以复用先前使用的同一个 OpenAI 模型模块。
以下是最终的代理流程:
完成以上步骤后,我们的 AI 代理就已就绪。它可以接收问题、生成 SQL 查询以检索相关数据,并给出清晰、简明的答案。
与数据分析师代理聊天
代理现在可以使用了。要与它对话,请点击右上角的紫色聊天按钮:
我们来测试一下,先问问这份问卷收到了多少份回应:
请注意,由于最后一条提示的设计方式,代理会在回复中附上查询。我们再来询问一些关于数据的统计信息:
再来看一个示例:
我对 Flowise 的看法
在尝试了多款用于构建 AI 代理的工具后,我对 Flowise 的体验有些令人沮丧。我反复遇到的问题之一是,不小心删除了某些变量配置,导致代理表现异常,却很难明确原因。这常使得排错过程变得繁琐。
此外,Flowise 的代理流程缺乏清晰的起点,使得跟踪与理解代理的工作方式颇为困难。对于刚接触构建 AI 系统的人来说尤为如此。再者,Flowise 在便捷查看中间结果或对单个节点进行独立测试方面也有所不足,这使得定位问题或有效优化工作流变得不易。
我还发现很难一目了然地查看节点配置。比如,我们使用的自定义代码节点定义了输入变量,但这一点并不直观可见。必须点击节点的相应区域才能看到。这使得仅通过观察流程来理解其运作变得困难。
结论
虽然 Flowise 为创建 AI 代理提供了一个很有前景的低代码界面,但在易用性方面存在一些问题,使其相较于类似工具更难上手,尤其是对于追求更流畅、更直观体验的用户而言。尽管存在这些挑战,Flowise 的理念依然具有潜力,随着后续改进,它有望成为构建 AI 解决方案的优秀工具。
在本文中,我将一步步讲解如何使用Flowise来构建一个能够基于 CSV 数据集回答问题的 AI 代理。
Flowise 对于想要构建 AI 代理但又不想陷入复杂编码的人来说是一个顺手的工具。它采用低代码思路,让我们更多地专注于要完成的任务,而不是技术细节。
最近,我看到用于构建 AI 代理的工具激增。这些工具越来越易用、友好,使每个人都无需大量技术背景就能创建智能系统。如果您有兴趣进一步了解这些工具,也可以看看以下教程:
什么是 Flowise?
Flowise 是一款通过简单的拖放界面帮助我们创建 AI 代理的工具。它的工作方式是允许我们连接代表不同功能的各类模块,构建自定义工作流。每个模块都可以配置为执行特定操作。
例如,有些模块被称为 LLM 模块,用于向大型语言模型发送消息。也有函数模块,赋予我们执行自定义 JavaScript 函数的能力,从而实现更贴合需求的操作。
通过将这些模块连接起来,信息会从一个模块流向下一个模块,逐步处理并转换数据。这种模块化方法让我们无需深厚的编程知识也能轻松构建 AI 代理,因为我们可以专注于设计工作流并配置必要的动作。
使用 Flowise 构建数据分析师 AI 代理
下面我们来分解使用 Flowise 构建数据分析师 AI 代理的流程。本指南将涵盖注册 Flowise、构建自定义工作流,以及使用各种模块创建可分析数据集的交互式代理。
步骤 1:在 Flowise 上创建账户
首先访问这个Flowise 注册页面并创建一个账户。填写所需信息,并按照发送至您邮箱的说明进行验证与激活。
步骤 2:数据库设置
现在我们已经准备好了 Flowise 账户,接下来要设置要使用的数据库。我们需要一个数据库来存储要分析的数据。
我们将使用 SingleStore,这是一家广受欢迎且用户友好的 SQL 数据库提供商,来管理数据。请按照以下步骤操作:
步骤 3:进入 chatflows 区域
登录后,进入仪表盘并找到 "Chatflows" 区域。点击 "Add New" 开始创建新的工作流。
步骤 4:创建自定义函数以加载表信息
此步骤需要编写一个自定义函数以检索表的信息,例如其描述及列名。这些数据对我们的 AI 代理理解所要查询的数据集结构至关重要。
在函数开头,我们需要设置
connectionUrl的值。可在 SingleStore 的 Deployments 选项卡中找到。连接字符串类似如下所示:
第一部分,在我的示例中是
françois-19ecc,表示用户名。紧接着是密码占位符<françois-19ecc Password>,需要我们替换为实际密码。该函数会连接到 SingleStore 数据库并获取表的列信息。它有两个输入:
tableName:表名tableDescription:表的描述。这些输入需通过点击自定义代码节点上的 “Input Variables” 按钮进行配置。在代码中可通过在变量名前加上
$来访问。在我的例子中,该表在 SingleStore 上创建时命名为
dataset。您应当使用上传 CSV 文件时所设置的名称。步骤 5:创建提示模板节点
此节点用于编写引导 AI 代理的问题。将该节点连接到您的自定义函数。
该提示包含两个占位符:
{tableInformation}和{question}。其中question是用户提交的提示,而tableInformation是我们在上一步定义函数的输出。需要在提示模板节点上点击 “Format Prompt Values” 按钮来配置这些占位符的取值。
步骤 6:连接到 LLM chain 模块
现在将提示模板节点连接到一个 LLM chain 模块,由其解释提示并据此生成 SQL 查询。我们需要执行以下步骤:
步骤 7:使用 set variable 模块
为便于后续使用,创建一个 set variable 模块来存储生成的 SQL 查询,并将其连接到 LLM chain 模块的输出。
步骤 8:执行 SQL 查询
将 SQL 查询发送到一个新的自定义代码模块,在数据库上执行它。
请记得设置
connectionUrl的值,与之前使用的一致。该函数只有一个输入,即我们要执行的查询,在代码中通过
$query访问。步骤 9:创建另一条提示模板
此模板用于根据查询结果,格式化 AI 代理将呈现给用户的答案。
该提示包含三个占位符:
query:由 LLM 生成的 SQL 查询,通过连接变量节点获得。queryResult:查询结果,由前一个自定义函数节点计算得出。question:用户最初的提问。步骤 10:最终的 LLM chain 模块
最后,将此提示模板连接到一个新的 LLM chain 模块,由其根据提示生成回复。您可以复用先前使用的同一个 OpenAI 模型模块。
以下是最终的代理流程:
完成以上步骤后,我们的 AI 代理就已就绪。它可以接收问题、生成 SQL 查询以检索相关数据,并给出清晰、简明的答案。
与数据分析师代理聊天
代理现在可以使用了。要与它对话,请点击右上角的紫色聊天按钮:
我们来测试一下,先问问这份问卷收到了多少份回应:
请注意,由于最后一条提示的设计方式,代理会在回复中附上查询。我们再来询问一些关于数据的统计信息:
再来看一个示例:
我对 Flowise 的看法
在尝试了多款用于构建 AI 代理的工具后,我对 Flowise 的体验有些令人沮丧。我反复遇到的问题之一是,不小心删除了某些变量配置,导致代理表现异常,却很难明确原因。这常使得排错过程变得繁琐。
此外,Flowise 的代理流程缺乏清晰的起点,使得跟踪与理解代理的工作方式颇为困难。对于刚接触构建 AI 系统的人来说尤为如此。再者,Flowise 在便捷查看中间结果或对单个节点进行独立测试方面也有所不足,这使得定位问题或有效优化工作流变得不易。
我还发现很难一目了然地查看节点配置。比如,我们使用的自定义代码节点定义了输入变量,但这一点并不直观可见。必须点击节点的相应区域才能看到。这使得仅通过观察流程来理解其运作变得困难。
结论
虽然 Flowise 为创建 AI 代理提供了一个很有前景的低代码界面,但在易用性方面存在一些问题,使其相较于类似工具更难上手,尤其是对于追求更流畅、更直观体验的用户而言。尽管存在这些挑战,Flowise 的理念依然具有潜力,随着后续改进,它有望成为构建 AI 解决方案的优秀工具。