A toolkit for converting natural language to SQL statements.
Project description
PY-NL2SQL: 开箱即用的自然语言到SQL查询生成的Python库
目录
架构方案
安装与使用
# pip install py_nl2sql
from py_nl2sql import LLM,DBInstance,NL2SQLWorkflow
llm = LLM()
instance = DBInstance(
db_type="mysql",
db_name="classicmodels",
need_sql_sample=True,
db_user="root",
db_password="",
db_host="127.0.0.1",
db_port="3306",
llm=llm,
)
query = "what is price of `1968 Ford Mustang`"
service = NL2SQLWorkflow(instance, query, llm)
res = service.get_response()
print(res)
使用说明
在使用本项目时,用户需要提供以下三部分信息:
1. OpenAI Key
用户可以通过两种方式提供 api_key 和 base_url:直接传入参数,或在环境变量中设置 OPENAI_API_KEY 和 OPENAI_BASE_URL。
- 目前,本项目所使用的大模型仅兼容 OpenAI 模型,后续将支持本地模型及其他模型。
- 由于需要使用 OpenAI 的结构化输出特性,默认模型设定为
gpt-4o-mini。
from py_nl2sql.models.llm import LLM base_url
llm = LLM(api_key="sk-xx",base_url="https://xxx")
2. 数据库配置信息
在新建数据库实例时,需要传入 LLM(大语言模型)。在实例化过程中,将执行以下操作:
- 使用嵌入(embedding)模型将数据库表信息进行嵌入处理,并将结果存储到向量数据库中(此步骤为必选)。
- 根据数据库信息生成样本 SQL,以便后续将用户查询转换为 SQL 时作为参考(此步骤为可选)。默认情况下,该功能是开启的;如果不需要生成样本 SQL,可以将
need_sql_sample设置为False。
instance = DBInstance(
db_type="mysql",
db_name="classicmodels",
need_sql_sample=True,
db_user="root",
db_password="",
db_host="127.0.0.1",
db_port="3306",
llm=llm,
)
特性:
- 支持初始化多个数据库实例,以便在存在多个数据库的情况下进行管理。
- 如果数据库发生变动,可以直接调用 instance.db_update() 方法对数据库进行更新。更新过程中,将重新将数据库表信息进行嵌入处理,并存储到向量数据库中。 说明: DBInstance 的设计采用多例模式 + 状态机。根据 db_type + db_name 实例化不同的对象。
3. 用户查询
用户只需传入要查询的数据库实例及相应的查询语句,然后调用 get_response() 方法即可获取最终结果。
service = NL2SQLWorkflow(instance, query)
res = service.get_response()
同时,NL2SQLWorkflow 对象中保存了一系列中间过程的元信息,例如
service.text_to_sql_query # used for sql generation
service.interpretation_query # used for final response generation
service.related_table_summary # Table information related to the query
service.first_sql_query # SQL query generated from the query for the first time
service.final_sql_query # SQL query generated from the query using the similarity SQL
...
Licence
The MIT License (MIT)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py_nl2sql-0.0.2.tar.gz.
File metadata
- Download URL: py_nl2sql-0.0.2.tar.gz
- Upload date:
- Size: 23.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.11.5 Darwin/23.6.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c160fd914c89e957a6f6d827511b7a6b118c68a40e97904a8f1276336e19a8a
|
|
| MD5 |
2a5d3566a4f3896f9d96b4761d52d982
|
|
| BLAKE2b-256 |
78a176cb3df17c7c83a45fb75d50a0c7152c426d31297bedec9ddd7228cb6e53
|
File details
Details for the file py_nl2sql-0.0.2-py3-none-any.whl.
File metadata
- Download URL: py_nl2sql-0.0.2-py3-none-any.whl
- Upload date:
- Size: 29.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.11.5 Darwin/23.6.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
449c98de369237ff6f3f837de999bc423433afdd5ba15c891d45d95e76367b38
|
|
| MD5 |
eff32733d9e568c9c49ddb545f11bea9
|
|
| BLAKE2b-256 |
910254d725e6063378b94b073deb77a3a5e035eaf0c97572c99efb6b14658b21
|