使用Dify实现Text2Sql功能并输出图表
最近业务需要,研究的dify插件比较多,今天看下两个基础插件:database 和 echarts ,以及看下如何将其应用到对话过程中;基础概念Text2sql :是个“翻译官”,你只需要对着电脑大喊:“给我找上个月花500以上的VIP螺蛳粉爱好者!” ,AI自动把这句人话转成SQL代码,数据库秒懂,直接吐结果。本质就是个“人话 → 数据库黑话”的转换器。说白了就是让数据库听懂人话的魔法ECharts:让数据“骚”起来的可视化工具,把枯燥的数字变成炫酷图表的“数据化妆师”,专治“Excel 图表
最近业务需要,研究的dify插件比较多,今天看下两个基础插件:database 和 echarts ,以及看下如何将其应用到对话过程中;
基础概念
Text2sql :是个“翻译官”,你只需要对着电脑大喊:“给我找上个月花500以上的VIP螺蛳粉爱好者!” ,AI自动把这句人话转成SQL代码,数据库秒懂,直接吐结果。本质就是个“人话 → 数据库黑话”的转换器。说白了就是让数据库听懂人话的魔法
ECharts:让数据“骚”起来的可视化工具,把枯燥的数字变成炫酷图表的“数据化妆师”,专治“Excel 图表太丑”和“PPT 毫无亮点”两大职场绝症。ECharts = 数据界的特效大师,让图表从“路人甲”变成“奥斯卡最佳视觉效果”!
Dify 是啥?
想象一下,你有个超强但“傲娇”的AI助手,你想让它:当客服(但别乱说话)、查公司文档(别瞎编)、自动写周报(别写成科幻小说);正常情况,你得:学编程(写API)、调Prompt(防AI“胡言乱语”)搭服务器,搞运维(然后头发掉光)但有了 Dify,你只需要:拖拖拽拽(像玩《我的世界》搭房子)、选个模板(比如“AI客服”“文档问答”)、点发布(搞定!)本质:一个“AI应用组装车间”,把大模型、你的数据、业务逻辑像乐高一样拼起来,还能随时调整。
这三个结合起来会有什么不一样的效果?
先看下结果:

在聊天界面,我们不仅看到了数据,而且还以图表的方式展现了出来;更绝的是,这些数据原本只是数据库里面的记录,完全无需的原始记录,在 dify+database+echarts 的合力下,变成了看得见,摸不着的画面了;
怎么实现的?
第一步:源码安装dify,我之前文章有详细介绍,可以参考下;
第二步:在插件里面找 database插件

找到后,点击安装;插件就出现在我的插件列表里了; 现在我们对他授权数据库访问:

点授权,输入授权格式,对于mysql数据库,用下面的方式:
mysql+pymysql://用户名:密码@地址:端口/数据库#注意,由于是容器内运行的插件,地址必须是容器可访问的地址,比如写 127.0.0.1 的话,就连不上了
这里有四项功能,不一一解释了,有用的我觉得就 Text to Sql 和 Sql Execute了
第三步,按中同样的方式,安装 echarts,也是搜索、安装即可;echarts不需要授权;
第四步,咱们来创建工作流了;

搞个简单的对话流程,这里面区分下,是要报表的,还是要结果数据的;不多讲,我们看看怎么把数据库数据弄出来的;
a. 先text2sql 一把,将用户对话变成sql:

b、再sql execute 一把,把sql 代码通过查库变成数据:

这一步的输入是 a里面的产生的sql,输出我们用markdown格式即可
c、对于只要数据的,我们输出即可,对于报表的,我们做点特殊处理:

先把markdown格式,变成 标题、x轴、y轴的样子,就是加个参数提取器而已;
d、把数据通过echarts 转成报表,非常简单:

默认支持 柱状图、饼图、折线图;更复杂的图也能实现,把数据结构定义好即可;不过这几个图大部分场景也足够了;
好了,以上逻辑就是dify中实现 text2sql 和 报表展示 功能,本来很早就想实现的,一直不敢进阶,这两天一下就搞明白了,看来技术不是太复杂;复杂的是人心。