【AI】Dify自然语言生成Sql并查询数据库

目录

1、步骤

在这里插入图片描述

  1. 输入提出的问题
  2. LLM(大语言模型)生成可执行的Sql语句
  3. 根据Sql查询出结果
  4. LLM(大语言模型)对查询结果进行分析

2、准备数据库表

我们这里使用的是Mysql
学生表:

DROP TABLE IF EXISTS `students`;
CREATE TABLE `students` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '姓名',
  `age` int NOT NULL COMMENT '年龄',
  `class_id` int NOT NULL COMMENT '班级Id',
  `gender` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '性别(男/女)',
  PRIMARY KEY (`id`),
  KEY `class_id` (`class_id`),
  CONSTRAINT `students_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `classes` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='学生';
INSERT INTO `students` (`id`, `name`, `age`, `class_id`, `gender`) VALUES
(1, 'Emma Li', 6, 1, '女'),
(2, 'Lucas Wang', 7, 1, '男'),
(3, 'Olivia Zhang', 6, 1, '女'),
(4, 'Noah Chen', 7, 1, '男'),
(5, 'Sophia Zhao', 6, 1, '女'),
(6, 'Liam Liu', 8, 2, '男'),
(7, 'Mia Qian', 7, 2, '女'),
(8, 'Ethan Sun', 8, 2, '男'),
(9, 'Ava Zhou', 7, 2, '女'),
(10, 'James Wu', 8, 2, '男'),
(11, 'Isabella Zheng', 9, 3, '女'),
(12, 'Benjamin Feng', 8, 3, '女'),
(13, 'Charlotte Cao', 9, 3, '女'),
(14, 'Mason Deng', 9, 3, '男'),
(15, 'Amelia Xue', 8, 3, '男'),
(16, 'Evelyn Peng', 10, 4, '男'),
(17, 'Alexander Ma', 10, 4, '女'),
(18, 'Abigail Lu', 9, 4, '男'),
(19, 'Daniel Zeng', 10, 4, '女'),
(20, 'Harper Yao', 10, 4, '男'),
(21, 'Michael Xu', 12, 5, '女'),
(22, 'Emily Huang', 11, 5, '男');

班级表:

DROP TABLE IF EXISTS `classes`;
CREATE TABLE `classes` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '名称',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='班级';
INSERT INTO `classes` (`name`) VALUES
('A'),
('B'),
('C'),
('D'),
('E');

3、安装rookie_text2data插件

GitHub地址:https://github.com/jaguarliuu/rookie_text2data
该插件功能是:自然语言查询 MySQL 数据、Sql的执行。目前支持Mysql、PostgreSQL,后续会逐步增加多个数据库类型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、新建工作流

在这里插入图片描述
1、开始节点中添加变量名称以及显示名称
变量名称:issue
显示名称:问题
在这里插入图片描述
2、第二个节点选择添加节点->工具->rookie_text2data,输入的变量就“/issue
按照抽屉中的必填项把对应的值填上
数据库连接失败的把 127.0.01或者localhost改为 host.docker.internal 即可
在这里插入图片描述
3、第三个节点选择添加节点->模板转换,输入的变量就是第二个节点输出的**/Json**
在这里插入图片描述
4、第四个节点选择添加节点->LLM(大语言模型),并提供System信息指导
文本内容:

你是一位精通SQL语言的数据库专家,熟悉MySQL数据库。你的的任务是检查该Sql语句是否有错,如果有错请更正,没有错则输出Sql语句。
回答要求:
1.不能包含任何多余的信息。
2.必须是可以执行的SQL语句。
3.删除掉Sql中的\n,用空格替换。

Json数据:/output

在这里插入图片描述
5、第五个节点选择添加节点->工具->rookie_excute_sql,输入的变量“/test
按照抽屉中的必填项把对应的值填上
在这里插入图片描述
6、第六个节点同第三个节点操作
7、第七个节点选择添加节点->LLM(大语言模型),并提供System信息指导,以及User模型指令
文本内容:

你是数据分析专家,分析JSON格式的sql查询结果,回答用户问题。
关键规则:
1.所有数据已符合用户问题中的条件
2.直接使用提供的数据分析,不质疑数据是否符合条件
3.不需要再次筛选或确认数据类别/时间范围
4.数据为[或空或者None时直接回复"没有查询到相关数
据",不得编造数据
5、提供的结构是Json

数据是:/output
题是:/issue
Sql语句:/text
回答要求:
1.列出详细数据,优先以表格方式列出数据。
2.识别趋势、异常,并提供分析和建议。
3.提供查询的Sql语句。

在这里插入图片描述
8、第七个节点选择添加节点->结束,输入的变量“/test

5、执行效果展示

视频:查看
在这里插入图片描述
我们去数据库验证一下:

SELECT COUNT(*) FROM `students` WHERE `age` = 6 AND `gender` = '女';

在这里插入图片描述在这里插入图片描述
我们去数据库验证一下:

SELECT `students`.`name` 
FROM `students` 
INNER JOIN `classes` ON `students`.`class_id` = `classes`.`id` 
WHERE `classes`.`name` = 'B' AND `students`.`gender` = '女';

在这里插入图片描述
如果涉及的数据库表较多可以采用如下方式:
1、把表结构(含表名、字段、主外键关系)导入到知识库,用知识库来检索生成可执行Sql语句,执行Sql语句,生成数据结果。
2、如果用rookie_text2data插件工具,最好指定相关表名。

<think>好的,用户正在寻找一个名为DifySQL查询工具,可能是用于执行或优化SQL查询。首先,我需要确认Dify是否确实是一个SQL工具。根据用户提供的引用信息,Dify被描述为一个通过知识库生成SQL查询的代理,涉及到创建表结构、导入知识库、配置工作流等步骤。这表明Dify可能是一个结合了AI代理和知识库的系统,用于自动生成或优化SQL查询,而不是传统的SQL客户端工具。 接下来,我需要验证Dify的用途。根据引用中的步骤,Dify的工作流程包括配置SQL查询工作流、输入prompt模板以及设置代理,这说明它可能是一个需要与数据库和知识库集成的平台,而不是直接下载的独立软件。因此,用户可能误解了Dify的功能,它可能更多是一个基于工作流的自动化工具,而非传统意义上的SQL查询工具。 然后,考虑用户的需求,他们可能希望使用Dify来执行或优化SQL查询。但根据现有信息,Dify的使用方法更偏向于通过配置工作流和知识库来实现自动生成SQL,而不是手动编写查询。因此,在回答中需要明确这一点,提供相应的使用步骤,如创建表、导入知识库、配置工作流等。 另外,用户提到下载Dify,但根据引用中的信息,Dify可能是一个需要部署的Web应用或服务,而不是可直接下载的客户端。因此,需要引导用户到官方网站获取部署指南,可能需要结合数据库进行配置。 最后,需要确保回答结构清晰,分步骤说明使用方法,纠正用户可能的误解,同时提供相关参考资料。此外,生成的问题应围绕Dify的功能、配置步骤、与传统工具的区别以及优化方法展开,帮助用户更全面地了解该工具。</think>关于Dify SQL查询工具的使用方法,根据知识库信息显示其核心是通过知识库配置实现自动化SQL生成,以下是分步骤说明: 1. **部署准备** - 需要先部署Dify平台(官网下载或云服务版本) - 准备MySQL/PostgreSQL等数据库环境[^1] 2. **配置工作流** ```python # 示例:创建SQL生成工作流 def create_sql_workflow(knowledge_base): sql_agent = configure_agent(knowledge_base) return SQLWorkflow(sql_agent) ``` 3. **知识库集成** - 导入数据库schema文件(如CREATE TABLE语句) - 上传查询模板或历史SQL案例 - 设置字段映射关系(自然语言⇄数据库字段) 4. **查询生成** - 在对话界面输入自然语言需求 - 示例:$SELECT * FROM users WHERE age > 30$ - 系统自动生成优化后的SQL语句
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值