dify:自动解析MySQL数据库的智能体

在dify智能体开发平台中,SQL工具只能执行SELECT语句,无法使用SHOW、DESCRIBE (DESC)以及SHOW CREATE等语句获取数据表的信息。想要使用大模型生成准确的SQL语句,只能由开发者先手动查看并梳理数据库结构,再将整理好的表信息输入给模型,极大地依赖人工操作。这一过程不仅效率低下,还容易因人为疏漏导致生成的SQL语句出现偏差。为了从根本上解决这一问题,我开发了一款能够自动解析MySQL数据库的智能体,实现数据库解析地自动化,可以显著提升基于dify的SQL构建的准确性与开发效率。

环境说明:

         在智能中,用到了第三方插件database,故需要提前安装,dify中安装第三方插件可参考:https://mp.csdn.net/mp_blog/creation/editor/154120281

操作系统:Windows 11

dify: 1.8.1

MySQL:8.0.41

database插件:0.0.6

一、智能体流程图总览

二、输入说明

要使用该智能体连接数据库,需要提供以下完整的连接参数:

  1. 数据库服务器IP:数据库服务器的网络地址,格式为IPv4地址(如192.168.1.100)或域名(如db.example.com)。示例:192.168.2.45
  2. 端口号:数据库服务监听的端口号。示例:3306
  3. 用户名:具有适当权限的数据库账号名称,建议使用专用应用账号而非管理员账号。示例:app_user
  4. 密码:对应用户名的认证密码,建议使用强密码并定期更换。示例:Str0ngP@ssw0rd!2023
  5. 数据库名称:目标数据库的具体名称,在MySQL中称为"schema"。示例:customer_db

三、输出说明

输出json格式的数据,字段包括:DB_connection_status、Table_num、Parsing_tables_ok、Tables_info、Tables_info_description、Error_messge、Error_type。

  1. DB_connection_status:数据库连接状态,1表示成功,0表示失败;
  2. Table_num:数据库中表的数量;
  3. Parsing_tables_ok:所有数据表是否解析成功,True表示成功,Fasle表示失败;
  4. Tables_info:所有数据表的解析结果;
  5. Tables_info_description:对Tables_info中数据结构的说明,以帮助大模型更好的理解数据;
  6. Error_messge:遇到错误时的提示信息;
  7. Error_type:错误类型。

       

        Table_info内容说明:

        每张表用两个csv格式的数据表示,第一个是表的字段信息,第二个是键的信息(主要时从外键中获取表和表的联系)。数据格式如下:

        Common,Default,Extra,Field,Key,Null,Type
        语文成绩,0.00,,chinese,,YES,decimal(5,2)
        英语成绩,0.00,,english,,YES,decimal(5,2)
        成绩ID,,auto_increment,id,PRI,NO,int
        数学成绩,0.00,,math,,YES,decimal(5,2)
        学号,,,sno,MUL,NO,varchar(20)
        总成绩,0.00,,sum,,YES,decimal(6,2)

        Column name,Constraint name,Referenced column name,Referenced table name,Table name
        id,PRIMARY,,,grade
        sno,grade_ibfk_1,sno,student,grade

        Tables_info_description内容:

        这是一个对数据库中所有数据表结构解析后的数据结构的说明。所解析的数据表均用两个csv格式的表格描述:字段表和键表。字段表的表头包括:Common,Default,Extra,Field,Key,Null,Type。Commen列是字段的注释,Default列是默认值,Extra列为额外描述,Field列为字段名称,Key为字段的键,Null列为是否可以为空,Type列为字段类型。键表的表头包括:Column name,Constraint name,Referenced column name,Referenced table name,Table name。Column name列为所在键的字段,Constraint name为约束名称,Referenced table name表示字段所参照的表名称(用于描述外键),Referenced column name表示所参照的字段名称(用于描述外键),Table name用户表示Column name即字段所属表的名称。在键表中,一定着重关注外键,因为它表达了表和表之间的关系,对于联表查询至关重要。另外,在数据组织中,字段表和键表之间用两个换行符(\n\n)分隔,不同的数据表之间用四个换行符(\n\n\n\n)分隔。

四、运行展示

五、源码

        点击下载:MySQL数据库自动解析器.yml

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值