一个独立的NL2SQL(自然语言转SQL)Python工具。
- 自然语言转SQL查询
- 支持多表多字段的智能召回和筛选
- 支持流式输出思考过程
- 支持多种LLM模型
- 支持MySQL等SQL方言
cd nl2sql-python
pip install -e .import asyncio
from nl2sql_tool.model.protocal import NL2SQLRequest
from nl2sql_tool.tool.nl2sql import NL2SQLAgent
async def main():
agent = NL2SQLAgent()
request = NL2SQLRequest(
request_id="test-123",
query="查询不同国家的销售总额",
current_date_info="当前时间信息:2025-09-12,星期五",
table_id_list=["sales"],
column_info=[
{
"modelCode": "sales",
"modelName": "超市销售明细数据",
"schemaList": [
{
"columnId": "COUNTRY",
"columnName": "国家",
"columnComment": "国家",
"dataType": "VARCHAR",
"fewShot": "中国,美国,日本",
},
{
"columnId": "SALES",
"columnName": "销售额",
"columnComment": "销售额",
"dataType": "DECIMAL",
"fewShot": "1000.00,2000.50",
}
],
}
],
dialect="mysql"
)
result = await agent.run(request)
print(result)
if __name__ == "__main__":
asyncio.run(main())复制 .env_template 到 .env 并配置:
NL2SQL_MODEL_NAME: NL2SQL转换模型REWRITE_MODEL_NAME: 查询重写模型THINK_MODEL_NAME: 思考过程模型OPENAI_API_KEY: OpenAI API密钥
- Python >= 3.11
- litellm: LLM接口统一
- jinja2: 模板引擎
- pydantic: 数据验证
- loguru: 日志系统