怎么让大模型查询本地数据库输出结果(Dify+豆包)
企业级的AI运用更需要能让AI结合自身的文档库和数据库来返回结果,那么本文就讲一下怎么实现。
使用的技术为Dify+豆包
先来看看效果:

这里是使用dify的编排能力、知识库存储能力、工作流能力、多插件能力,控制整个处理过程,让LLM大模型能按我们的编排进入任务中,将用户的自然语言需求,转换成本地Sql查询语句,然后调用sql查询工具,输出查询结果。
当然实际使用肯定不是在这个界面中,这里只是编辑和测试界面,我们可将编排好的Agent发布成网页中Iframe或弹出框插件,甚至可以是浏览器插件。
发布方式如下:

Dify的部署、安装、配置详见:https://docs.dify.ai/zh/use-dify/getting-started/introduction
Dify开源地址:https://github.com/langgenius/dify
豆包模型key获取:地址
安装部署就不赘述了,按教程来就行。请配置好大模型后进行下一步。
查询本地数据库Agent构建过程
1.先创建一个知识库,用于Ai获取你的数据库表结构;点击顶部的“知识库”,“创建知识库”:

2.上传你的数据结构文件,可以将表结构sql语句放在一个txt文件中上传进来,然后点下一步,设置如下:
扩展:知识库可以放你企业的任何文档便于AI大模型检索,注意要部署在本地服务器,防止泄密。

设置完后点保存并处理,知识库会被分段、转换成大模型可使用的向量存储起来。
3、点击工作室——创建空白应用——新建Chatflow

4、简单输入Agent名称描述后继续下一步;
5、按以下顺序建立节点。以用户输入为起点,点节点右边的小+号添加节点,我们首先要根据数据结构来生成sql,所以要连一个知识检索的节点,关联上刚刚建好的数据库结构知识库

6、在知识库检索节点后接上LLM节点,LLM提示词可以参考如下内容:
你是一位SQL专家,先认真理解知识库的表结构,根据用户的自然语言输入{{#sys.query#}}结合{{#context#}}知识库中的表结构成查询sql语句。
1.请将用户的自然语言生成Select查询sql语句,且必须是基于上下文知识库中的表,严禁添加或修改不存在的字段和表;
2.输出只有sql语句,不需要说明、解释,SQL语句要能在Mysql数据库中执行;
3.无法生成sql时返回select '无法生成sql' from dual
7、然后需要把AI生成的返回结果变成可执行的Sql语句,于是需要接一个参数提取器节点;

8、然后接一个Sql查询工具,此工具可直接配置好本地数据库连接串、并接上一步的sql作为参数。

如果是部署在docker里,注意这里的数据库地址要改成:host.docker.internal
9、然后再加个LLM节点将sql输出结果整理成自然语言返回即可:
结合{{#context#}}{{#sys.query#}}和上一步Sql查询的结果{{#1778486166179.text#}},组织语言返回答案。
经过这个Agent智能体的构建,你能够掌握AI编排能力。
回顾一下这整个过程,你能发现:
- 大模型的使用关键在于给出更准确细致的提示词;
- 让大模型能读本地文档的关键在于构建本地知识库,而知识库需要通过embedding模型转换成大模型能识别的向量数据;
- 大模型是通过一些工具来查询Sql数据库的;
- 整个过程是一个工作流,按顺序单步执行的;
我们这个Agent学到的知识点已经很全,你可在此基础上稍加修剪即可变成另一个Agent,扩展一下:
- 你可以做一个只从你公司产品说明书上找答案的Agent,只需要建一个知识库,再加上一个LLM节点即可。
- 你可以做一个翻译Agent,只需要一个LLM即可。
- 你可在本Agent输出sql结果后,再加个图表展示工具节点,将结果用图形化方式返回。
- 我做的各种程序们
- 小y的QQ:28657321 (欢迎交流)

浙公网安备 33010602011771号