使用 n8n 结合通义千问大模型构建业务数据库分析智能体
在当今数据驱动的商业环境中,快速从业务数据库中提取有价值的信息并进行智能分析是许多企业的核心需求。本文将介绍如何利用 n8n(一个开源的工作流自动化工具)结合阿里云的 通义千问 大模型,构建一个智能体,用于自动化业务数据库分析。本项目通过集成 MySQL 数据库查询、数据处理以及大模型的自然语言处理能力,实现了从原始数据到智能分析的全流程自动化。
项目背景
随着企业数据的快速增长,手动分析数据库中的业务数据变得低效且容易出错。我们希望开发一个智能体,能够:
- 自动从 MySQL 数据库中提取业务数据;
- 对数据进行预处理和格式转换;
- 利用通义千问大模型进行数据分析,生成自然语言的分析报告;
- 将分析结果保存为文件,支撑对数据库的问答应用。
为此,我们选择了 n8n 作为工作流引擎,因其强大的节点式工作流设计和丰富的集成能力,可以无缝连接数据库和 AI 模型。
实现步骤
以下是构建该智能体的核心步骤:
-
准备工作:
- 安装并配置 n8n(可以选择本地部署或云端部署)。
- 准备 MySQL 数据库,包含业务数据(例如销售记录、用户行为等)。
- 获取通义千问大模型的 API 访问权限(通过阿里云平台申请)。
- 确保 n8n 环境中已安装 MySQL 节点和 OpenAI 兼容的 Chat 节点(通义千问支持 OpenAI API 协议)。
-
设计工作流:
n8n 的工作流由多个节点组成,每个节点执行特定的任务。我们通过以下节点搭建了完整的工作流(参考截图):- 触发节点:使用
When chat message received
节点监听用户的分析请求。 - 数据库查询节点:通过 MySQL 节点(如
get one table
和get one table2
)从数据库中提取数据。 - 数据处理节点:使用
Merge
节点合并多表数据,并通过Convert to JSON
节点将数据转换为 JSON 格式。 - 大模型分析节点:通过
OpenAI Chat Model
节点调用通义千问大模型,输入处理后的数据,生成分析报告。 - 结果保存节点:使用
Write File to Disk
节点将分析结果保存为文件。
- 触发节点:使用
-
配置通义千问大模型:
- 在
OpenAI Chat Model
节点中,将 API 端点设置为通义千问的 API 地址。 - 输入 API Key 和模型参数(例如温度、最大 token 数等),确保模型能够生成符合需求的分析报告。
- 在
-
测试与优化:
- 运行工作流,输入一个简单的分析请求(例如“分析最近一个月的销售数据”)。
- 检查每个节点的输出,确保数据流转和模型分析结果符合预期。
- 根据实际需求调整节点参数,例如优化 SQL 查询或调整大模型的提示词。
工作流解析
以下是截图中工作流的核心节点及其功能:
- When chat message received:触发节点,接收用户输入的分析请求(例如“分析销售数据”)。
- get one table / get one table2:MySQL 节点,分别从两个表中提取数据(例如销售表和用户信息表)。
- Merge:合并来自多个表的数据,生成统一的数据集。
- Convert to JSON:将合并后的数据转换为 JSON 格式,便于后续处理。
- OpenAI Chat Model(通义千问大模型):接收 JSON 数据,结合用户请求,生成分析报告(例如“本月销售额增长了 10%,主要由新用户贡献”)。
- Write File to Disk:将分析报告保存为文件(路径为
/documents/AIBrain_test/now.txt
)。
此外,工作流中还使用了 Loop Over Items
节点来处理批量数据,以及 Aggregate
节点对数据进行汇总,确保分析的全面性。
关键代码:工作流配置
以下是 n8n 工作流的 JSON 配置(部分),展示了如何连接 MySQL 和通义千问大模型:
{
"nodes": [
{
"name": "When chat message received",
"type": "n8n-nodes-base.webhook",
"parameters": {
"httpMethod": "POST",
"path": "analyze"
}
},
{
"name": "get one table",
"type": "n8n-nodes-base.mySql",
"parameters": {
"query": "SELECT * FROM sales WHERE date >= DATE_SUB(NOW(), INTERVAL 1 MONTH)"
}
},
{
"name": "OpenAI Chat Model",
"type": "n8n-nodes-base.openAiChatModel",
"parameters": {
"apiKey": "your-tongyi-qianwen-api-key",
"model": "qwen-turbo",
"prompt": "Analyze the following sales data: {{ $json.data }}"
}
},
{
"name": "Write File to Disk",
"type": "n8n-nodes-base.writeBinaryFile",
"parameters": {
"filePath": "/documents/AIBrain_test/now.txt",
"data": "{{ $json.result }}"
}
}
],
"connections": {
"When chat message received": {
"main": [
[
{
"node": "get one table",
"type": "main",
"index": 0
}
]
]
},
"get one table": {
"main": [
[
{
"node": "OpenAI Chat Model",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"main": [
[
{
"node": "Write File to Disk",
"type": "main",
"index": 0
}
]
]
}
}
}
成果与总结
通过 n8n 和通义千问大模型的结合,我们成功构建了一个业务数据库分析智能体。该智能体能够:
- 自动化地从 MySQL 数据库中提取和处理数据;
- 利用通义千问大模型生成自然语言的分析报告;
- 将结果保存为文件,便于后续查阅。
这个项目展示了 n8n 在工作流自动化中的强大能力,以及通义千问大模型在数据分析中的潜力。未来,我们计划进一步优化工作流,例如支持更多类型的数据源(如 PostgreSQL 或 API 数据),并增强大模型的分析能力,以生成更深入的洞察。
如果你对 n8n 或通义千问大模型有兴趣,不妨尝试类似的自动化项目,探索数据分析的更多可能性!
操作演示
工作流
主要搭建了4个工作流
操作步骤
- 运行『AI分析数据库表作用_V1.0_示例数据库Demo』,调试流程
运行效果见全量运行的截图。
- 运行『AI分析数据库表作用_V1.0_全量数据库』,分析真实的业务数据库,包含333张表。
运行效果图
-
数据合并节点,将表的结构和数据合并到一起
-
模型配置
-
智能体节点对上一步合并的数据进行分析
-
将结果保存到文件
-
表关系分析结果
- 运行『AI针对数据库表问答V0.1』,测试问答效果。
-
模型配置为max,上下文比较长
-
测验问题:一共有多少项目?
-
测验问题:关于『绩效』的最新公告内容
-
测验问题:** 项目最近一条完成的沟通内容
- 运行『AI针对数据库表问答V0.2_引入知识库』
- 前面流程直接把所有333张表的分析结果都给了通义,结果token很长,模型分析就比较慢,后面把表格分析结果保存到知识库,然后根据问题分析关联表,接下来从知识库检索相关表结构,把结果给到模型进行分析,效率高了很多。
后续优化点:
对相似问题可以缓存
对业务数据的分析结果可以再精简,降低token消耗
发布流程,与阿里百炼的应用结合,发布公开应用
结合非结构化数据的分析,可以提供数据资产梳理服务