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
py_nl2sql-0.0.2.tar.gz
(23.7 kB
view hashes)
Built Distribution
py_nl2sql-0.0.2-py3-none-any.whl
(29.0 kB
view hashes)
Close
Hashes for py_nl2sql-0.0.2-py3-none-any.whl
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 | 449c98de369237ff6f3f837de999bc423433afdd5ba15c891d45d95e76367b38 |
|
| MD5 | eff32733d9e568c9c49ddb545f11bea9 |
|
| BLAKE2b-256 | 910254d725e6063378b94b073deb77a3a5e035eaf0c97572c99efb6b14658b21 |