Tools for interacting with SQL and files are implemented through LLMs..
The most complete access interface is encapsulated
SQLGPT 是一款强大的工具,它能够通过简单的文字描述,自动生成符合要求的 SQL 查询语句。无论您是在快速生成复杂查询还是与数据库进行交互,SQL_GPT 都能够显著提升您的效率和工作流程。
- 自动生成 SQL 查询: 只需简单的文字描述,工具将自动生成符合要求的 SQL 查询语句。
- 错误修正建议: 在查询存在错误时,工具会提供智能的修正建议,助您快速解决问题。
- 数据库连接管理: 轻松配置和管理多个数据库连接,直接在工具内执行生成的 SQL 查询。
- 多数据库兼容: 工具兼容多种主流数据库系统,适用于不同项目的需求。
- 代理访问支持: 针对特定场景,您可以通过系统代理来访问 GPT 服务。
- 多 API KEY 轮询: 您可以设置多个备选
API KEY
来访问 GPT,提升稳定性。 - SQL语句优化: 通过GPT的能力根据数据库的结构进行SQL语句优化。
- Java持久层SQL语句生成: 结合SQL以及数据库结构信息来自动生成Java持久层语句,如:
Mybatis
。 - 多轮对话: 通过多轮对话的方式来实现对生成SQL的不断优化。
- 对文件系统对话 通过引入向量数据库来完成对文件系统信息的整理,完整和文件系统的对话。
- 增加缓存操作来加速文件对话 通过引入多种的redis结构体来完成对向量数据库的访问加速。平均提高30%的查找速度、
- 数据自动可视化分析: 在通过数据库操作完数据之后,通过对数据进行分析来展示数据的基础信息。
要开始使用 SQL_GPT,只需按照以下简单步骤进行操作:
-
安装所需依赖: 确保您的环境中已安装 Python 3.x,并执行以下命令安装所需依赖包:
pip install requirements.txt
-
配置OPENAI数据: 在
config.json
中配置您的OPENAI-KEY
以及BASE_URL
信息来方便同Chat交互,还可以通过OPENAI-KEYS
列表来设置多个APP_KEY。 -
配置数据库连接: 在
config.json
中配置您的数据库连接信息,包括主机名、用户名、密码等,以便进行数据库交互。 -
生成 SQL 查询: 在工具的用户界面中,用自然语言描述您的查询需求。SQL_GPT 将会智能地生成相应的 SQL 查询语句。例如:
from gpt.SQLGPT import SQL_GPT sql_GPT = SQL_GPT() # 生成sql语句 sql_GPT.generateSQL("生成两个数据库表的关联查询操作。") # 对错误的SQL进行修改 sql_GPT.SQL_ERROR_CHECK("SELECT * FROM tableA WHERE user_id IN (SELECT user_id FROM tableB LIMIT 1000);", "SQL执行失败: (1235, This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'")
SQl-GPT是基于LLM构造的本地问答系统。可以根据需求生成sql语句,并在这个基础上对sql进行优化和纠错以及生成mybatis的xml文件。此外,还可以直接执行sql语句,同时设置多个监控的数据库。 在和数据库交互的基础上,同时实现了同文件系统进行交互,通过引入向量数据库来增加交互的上下文,并通过采用redis结构体对查询进行缓存以此来提高查询速度,同时支持多种向量模型。
同本地数据库,文件系统进行交互以及问答redis
安装redis数据库,建议通过docker进行安装。
docker run --restart=always -p 6379:6379 --name redis-docker -d redis:7.0.12 --requirepass admin
api_key
在与线上LLm进行交互时,需要实现申请好对应的api-key
。MySql
在本地安装MySql
数据库,同样推荐使用docker进行安装。
该项目使用了以下项目。
- FastChat 提供 chat 服务
- vicuna-13b 作为基础模型
- langchain 工具链
- Auto-GPT 通用的插件模版
- Hugging Face 大模型管理
- Chroma 向量存储
- Milvus 分布式向量存储
- ChatGLM 基础模型
- llama-index 基于现有知识库进行In-Context Learning来对其进行数据库相关知识的增强。