Dify案例分享|0代码搭建Text2SQL智能查询系统!自然语言秒变SQL,Dify+知识库+Agent全搞定

Text2SQL(又称NL2SQL) 作为一项自然语言处理技术,其核心在于将自然语言(Natural Language)表述的问题,转化为能够在关系型数据库中执行的结构化查询语言(Structured Query Language,SQL),以此实现与数据库之间的查询交互。这项技术的关键目标在于,借助自然语言描述,让用户即便不具备SQL语法知识,也能够顺利完成复杂的数据库查询任务。具体而言,Text2SQL的任务涵盖以下几个步骤:

  1. 输入分析:用户以自然语言的形式输入问题,比如“找出平均工资高于整体平均工资的部门名称”。
  2. 语义解析:系统对输入的自然语言问题进行解析,将其转化为数据库中的结构化查询语句。
  3. SQL生成:依据解析的结果,生成与之对应的SQL语句,例如“SELECT department_name FROM departments WHERE average_salary > (SELECT AVG(salary) FROM employees)” 。
  4. 执行与反馈:系统执行SQL查询操作,并返回相应结果,同时可能会对结果进行进一步的解释或分析。

Text2SQL拥有广泛的应用领域,涵盖智能客服、数据分析、金融、医疗、教育等多个行业,极大地提升了用户与数据库交互的效率和便利性。另外,随着大型语言模型(LLMs)的不断发展,Text2SQL技术在处理复杂查询以及多轮对话方面也取得了显著的进步。

今天,我们就来带大家实现一个简单的基于企业知识库的AI Agent的text2sql方案,当然,这个方案相对比较基础。接下来,我们直接来看效果。

1、工作流AI Agent演示效果

image-20250423165316892

上图我们就通过简单的自然语言查询到student_scores 有多少条记录。

2、AI Agent 演示效果

image-20250423165540692

同样我们使用AI Agent 也实现了text2SQL 的效果。

那么上面的工作流和 AI Agent是如何实现的呢,下面说一下我们的具体实现思路。

3.工作流的制作

在工作流制作之前我们需要用到dify的知识库,之前我很少提到知识库,主要是dify知识库做的不太好。因为这个工作流用到知识库,所以我们顺便把这个知识点说一下。

3.1、 知识库创建

在知识库创建之前我们需要向量模型,所以我们需要在系统模型设置里面填写一下 向量模型。

打开右上角设置-模型供应商

image-20250423170131896

我们在找一下右上角有一个系统模型设置。

image-20250423170211470

在弹开的模型设置里面,我把Embedding 模型、Rerank 模型 设置选一下。

image-20250423170324449

这里Embedding 模型 我们选择了火山引擎提供的 “doubao-embeding”,Rerank 模型 我们这里选择硅基提供的bge-reanker-v2-m3

上面配置好完成我们去知识库面板创建一个知识库

image-20250423171330082

我们点开“创建知识库”。进入文件上传页面

image-20250423171422780

我们需要上传一个创建表的SQL 语句,文件类型是txt

image-20250423171523110

上面txt文本内容如下:

-- 创建学生成绩表
CREATE TABLE `student_scores` (
  `id` bigintNOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `student_id` varchar(20) NOT NULL COMMENT '学号',
  `student_name` varchar(50) NOT NULL COMMENT '学生姓名',
  `class_name` varchar(50) NOT NULL COMMENT '班级名称',
  `subject` varchar(50) NOT NULL COMMENT '科目名称',
  `score` decimal(5,2) NOT NULL COMMENT '分数',
  `exam_date` dateNOT NULL COMMENT '考试日期',
  `semester` varchar(20) NOT NULL COMMENT '学期',
  `grade` varchar(20) NOT NULL COMMENT '年级',
  `created_at` datetime NOT NULLDEFAULTCURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` datetime NOT NULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
  KEY `idx_student_id` (`student_id`),
  KEY `idx_exam_date` (`exam_date`),
  KEY `idx_subject` (`subject`),
  KEY `idx_class` (`class_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='学生成绩信息表';

我们需要把他上传。

image-20250423171659988

因为这个比较简单我们就用高质量的索引方式创建文本向量,创建完成后,我们完成创建表的SQL 语句知识库创建。

image-20250423171825327

4、工作流制作

我们回到dify 工作台 创建一个 chatflow工作流,前面文章都有提到如何创建chatflow,这里就不做详细展开。

4.1、 开始

这个开始节点我们这里不需要用户输入提示词,所以这个节点什么都不需要设置。

image-20250423172202431

4.2、 知识检索

image-20250423172353392

我们按照上面的步骤完成知识检索节点创建。

查询变量 输入sys.querystring

知识库这里我们点击添加上面配置好的知识库。

image-20250423172523476

添加完成后,我们就设置好知识库检索这个节点。

image-20250423172605019

5、Agent

接下来我们在工作流中添加一个叫做“Agent”工作流节点. (这个Agent是dify 1.0.0之后版本中出现的,之前0.XX系列版本是没有的)

image-20250423173113833

这里我们需要2个工具1个是 agent策略工具 1个是 database 插件。 这2个都是可以在插件市场找到

5.1、 agent策略工具

image-20250423173309122

5.2、 database 插件

image-20250423173344754

image-20250409133631280

目前这个项目支持的数据库有mysql, postgresql, sqlite, sqlserver, oracle

mysql+pymysql://root:123456@localhost:3306/test
postgresql+psycopg2://postgres:123456@localhost:5432/test
sqlite:///test.db
mssql+pymssql://<username>:<password>@<freetds_name>/?charset=utf8
oracle+oracledb://user:pass@hostname:port[/dbname][?service_name=<service>[&key=value&key=value...]]

我们在插件市场把它安装好后,就需要对它配置。

image-20250409133852474

我们用的是mysql参考上述链接字符串

mysql+pymysql://root:123456@localhost:3306/test

这里还有一个小技巧,就是如果数据库密码是带有@符号的,我们需要转义一下。否则会出现错误。

image-20250409134100638

上述因为密码也带有特殊符号“@” 和后面的数据链接符号@产生了歧义 这样程序连接就会报错

如何解决

若要借助转义的方式来处理包含特殊字符 @ 的连接字符串,在标准的数据库连接字符串里,一般没有通用转义符号能直接用在字符串里。不过可以对特殊字符 @ 进行 URL 编码,@ 对应的 URL 编码是 %40

最后的变成

mysql+pymysql://root:zzz%40123@192.168.11.84:19030/test_db

这样修改后再连接就OK 了

image-20250409134212354

image-20250409134627114

看到已授权完成配置。

上面2个工具安装和配置完成后,我们进入Agent策略工具的配置操作。

我们从下拉选项中选中我们前面装的Agent,如果只装了一个这里只有一个下拉选项。Agent 策略中有两个,一个是function calling ,另外一个是ReAct 我们选择第二个“ReAct”

image-20250423173855683

下面的模型选择就非常重要的了。建议你选择火山引擎的deepseek v3 模型,其他模型我测试效率效果不太好。AI agent对模型要求比较高。有的模型达不到效果,后面测试的时候这块很容易翻车。切记用我推荐的模型,其他模型跑不出来就别说没看我文章了。

image-20250423174343651

工具列表中,我们选择databse, 里面有个函数我们都选中它。

image-20250423174500827

这里我们还需要有个设置,在text to SQL 点击设置,弹出对话框中 设置一下数据库模型。

image-20250423174700902

这个地方的模型我们也使用火山引擎的deepseek v3 模型,这2块的操作是本工作流的重点,细节比较多,如果不按照我文档的里面步骤 也很容易翻车。如果你翻车了建议你把这块文章在好好看一下,注意哪地方没设置好。

指令这块填写如下内容:

请根据用户输入的{{#sys.query#}}语句和{{#1745388821686.result#}}相关内容实现SQL语句查询

image-20250423174919168

查询这块我们填入 sys.query

迭代次数默认3次,如果模型能力弱可以把这值在该大一点。

image-20250423175022460

以上我们就完成了Agent 节点的配置。

直接回复

下面的直接回复就很简单了,直接把上面Agent输出返回即可。

image-20250423175143715

以上我们就完成了工作流流AI Agent 的搭建了。

6、AI Agent制作

我们回到工作流 创建一个 AI agent

image-20250423175433108

进入AI agent界面,这个地方配置就比较简单了。

系统提示词 我们这里输入 上面的SQL 语句脚本

image-20250423175539098

接下来 在工具里面配置一下database工具。这个配置比较简单,注意就是模型这个地方

image-20250423175731385

右上角 Agent Mode 我们就选择默认的 ReAct

image-20250423175815487

模型这里我们还是选择火山引擎的deepseek v3 模型

image-20250423175921298

image-20250423175901161

以上我们就完成了AI agent 制作。

7、 验证及测试

工作流AI Agent测试

我们在工作流AI Agent工作流,点击“预览按钮” 输入我们的问题

请帮我查询一下student_scores有多少条记录

image-20250423180224438

我们查询一下数据库有多少条记录

image-20250423180450699

OK 数据量对的。

AI Agent测试

接下来我们回到AI Agent 对话窗口中,输入下面的问题

请帮我查询一下student_scores有多少条记录

image-20250423181137977

上面我们通过简单的自然语言实现了一个text2sql,这工作流也可以分享给其他人使用。

5.总结

今天主要带大家了解并实现了基于 Dify 知识库与 AI Agent 的 Text2SQL 工作流方案。借助 Dify 提供的功能,我们首先创建了知识库,上传创建表的 SQL 语句文本,完成文本向量的创建。接着制作工作流,添加开始、知识检索、Agent 和直接回复等节点,对每个节点进行细致配置,尤其在 Agent 节点配置中选择合适的工具、模型和策略,完成工作流 AI Agent 的搭建。之后,我们又创建了 AI Agent,配置系统提示词、工具及模型等。

那么,如何系统的去学习大模型LLM?

作为一名从业五年的资深大模型算法工程师,我经常会收到一些评论和私信,我是小白,学习大模型该从哪里入手呢?我自学没有方向怎么办?这个地方我不会啊。如果你也有类似的经历,一定要继续看下去!这些问题啊,也不是三言两语啊就能讲明白的。

所以我综合了大模型的所有知识点,给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢,我就曾放空大脑,以一个大模型小白的角度去重新解析它,采用基础知识和实战项目相结合的教学方式,历时3个月,终于完成了这样的课程,让你真正体会到什么是每一秒都在疯狂输出知识点。

由于篇幅有限,⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》,扫码获取~
在这里插入图片描述

👉大模型学习指南+路线汇总👈

我们这套大模型资料呢,会从基础篇、进阶篇和项目实战篇等三大方面来讲解。
在这里插入图片描述
在这里插入图片描述

👉①.基础篇👈

基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程,带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门大模型。
在这里插入图片描述

👉②.进阶篇👈

接下来是进阶篇,你将掌握RAG、Agent、Langchain、大模型微调和私有化部署,学习如何构建外挂知识库并和自己的企业相结合,学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。
在这里插入图片描述

👉③.实战篇👈

实战篇会手把手带着大家练习企业级的落地项目(已脱敏),比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等,从而帮助大家更好的应对大模型时代的挑战。
在这里插入图片描述

👉④.福利篇👈

最后呢,会给大家一个小福利,课程视频中的所有素材,有搭建AI开发环境资料包,还有学习计划表,几十上百G素材、电子书和课件等等,只要你能想到的素材,我这里几乎都有。我已经全部上传到CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
在这里插入图片描述
相信我,这套大模型系统教程将会是全网最齐全 最易懂的小白专用课!!

<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、付费专栏及课程。

余额充值