语义转SQL,实现大模型对接查询数据库内数据
目的
用户输入查询语句,例如:“张三几岁了”;
大模型通过对话响应输出sql语句;
将sql语句粘贴至数据库桌面化应用,查询数据并返回结果。
说明
本文档中的所有下载的所需资源都可以在网盘下载或在右上角的群内容获取。
1. 准备提示词
你需要提前预置一份提示词,为大模型确认角色,需要其执行的操作,以及被查询的数据表的结构和其他强制性要求。
## 角色你是一名数据分析师## 工作内容你需要实现将用户输入的内容转换为SQL查询语句去MySql数据库中查找数据## 被查询的数据表的结构CREATE TABLE `users` ( `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', `name` VARCHAR(50) NOT NULL COMMENT '姓名' COLLATE 'utf8_unicode_ci', `age` INT(11) NULL DEFAULT NULL COMMENT '年龄', `hobby` VARCHAR(50) NULL DEFAULT NULL COMMENT '爱好' COLLATE 'utf8_unicode_ci', `city` VARCHAR(50) NULL DEFAULT NULL COMMENT '所在城市' COLLATE 'utf8_unicode_ci', `high_school_score` FLOAT(12) NULL DEFAULT NULL COMMENT '高考成绩', `cutoff_score` FLOAT(12) NULL DEFAULT NULL COMMENT '分数线', PRIMARY KEY (`id`) USING BTREE)COMMENT='用户表'COLLATE='utf8_unicode_ci'ENGINE=InnoDBAUTO_INCREMENT=5;## 你可以使用的其他方法用户输入类似于“求和”或“总和”时,则在sql语句中使用SUM()。用户输入类似于“平均数”或“平均”时,在在sql语句中使用AVG()。## 要求1.如果用户输入的内容无法生成为sql语句,请直接说“抱歉,该命令无法形成数据库查询操作”。2.当可以生成sql语句时,请确保输出的内容为完整正确的sql语句,不要输出此外的其他任何字符,确保你生成的内容用户可以直接执行查询操作。3.对于字符串内容的查询请使用LIKE操作而不是等于操作。4.请不要在回复中包括除sql语句之外的任何内容。
网盘压缩包内文件名:语义转SQL.text
2. 安装mysql运行环境
请确保你已经安装了mysql运行环境,并配置好mysql的用户名和密码。
你可以点击此链接下载并安装phpstudy。
网盘压缩包内文件名:phpstudy_pro.zip
拿到压缩包后,解压至任意目录下,双击phpstudy_x64.exe文件,进入phpstudy的安装向导,按照提示一步步安装即可。
安装完成后,在首页将mysql的服务启动,并进入数据库栏目,设置好用户名和密码。
3. 下载安装数据库桌面化应用
你可以点击此链接下载Heidisql数据库桌面化应用,并安装。
网盘压缩包内文件名:HeidiSQL_12.10.0.7000_Setup.exe
安装后输入设置好的用户名和密码登录,打开数据库连接,连接到你的mysql数据库。
4. 创建或导入数据库和表
可以在文件-加载SQL文件-选择文件-执行SQL文件,导入数据库和表结构及数据。
此时你就得到了一个名为tosql的数据表,同时里面包括了一张名为user的数据表。
5. 实现语义转SQL功能
5.1 准备大模型运行环境及工具
你需要通过ollama或lmstudio准备好大模型运行环境,并安装好相关工具。
具体内容你可以参考ollama或lmstudio的过往教程文档。
同时如果你使用的是ollama,你还需要准备pagaassist浏览器插件,你可以参考pagaassist这篇文档。
本篇文档以ollama+pagaassist为例,lmstudio同理。
5.2 设置提示词
在ollama或lmstudio中,设置好提示词,并保存。
网盘压缩包内文件名:语义转sql.txt
6. 实现语义转SQL功能
在对话框中选中自己准备好的提示词,输入相应的查询语句,点击“提交”按钮。
ollama或lmstudio会自动生成相应的sql语句,并将其粘贴到HeidiSQL的脚本运行对话框中执行。
7. 下节预告
使用dify,构建数据库查询的web服务,使得大模型可以直接响应用户语义请求,生成sql语句,通过web服务前往数据库查询,返回数据并以表格的形式展示给用户。
问题说明
提示词远比我们想象中强大,称其为“提示词工程”毫不过分。
语义转SQL功能的实现,需要大模型的配合,高智能化的大模型结果更精准。