Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

README.md

NL2SQL Python Tool

一个独立的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: 日志系统