logo
0
0
WeChat Login
init-env
Forkfromjaguarliu.cool/course/langchain-course, ahead:init-env1 commits

MySQL NLP-to-SQL 项目

基于大语言模型的自然语言到SQL转换系统,支持MySQL数据库的智能查询。

🚀 功能特性

  • 自然语言查询: 用中文或英文描述查询需求,自动生成SQL
  • MySQL支持: 基于MariaDB/MySQL数据库
  • 复杂查询支持: 支持JOIN、聚合、分组、排序等复杂SQL操作
  • 实时执行: 自动执行生成的SQL并返回结果
  • 错误处理: 完善的异常处理和回滚机制

📋 系统要求

  • Python 3.8+
  • MySQL/MariaDB 数据库
  • 腾讯云混元API密钥或其他兼容OpenAI API的服务

🛠️ 安装部署

1. 环境准备

# 克隆项目 git clone <repository-url> cd nlp2sql-mysql # 创建虚拟环境 python -m venv langchain_env source langchain_env/bin/activate # Linux/Mac # 或 langchain_env\Scripts\activate # Windows # 安装依赖 pip install -r requirements.txt

2. 数据库设置

# 安装MariaDB (Debian/Ubuntu) sudo apt update sudo apt install mariadb-server # 启动服务 sudo service mariadb start # 初始化数据库 mysql < mysql_setup.sql

3. API配置

设置环境变量(腾讯云混元示例):

export OPENAI_API_KEY='your-api-key-here' export OPENAI_BASE_URL='https://api.hunyuan.cloud.tencent.com/v1' export OPENAI_MODEL='hunyuan-turbos-latest'

🎯 使用方法

运行测试

python test_mysql_nlp2sql.py

支持的查询类型

查询类型示例问题生成的SQL
简单查询"查找所有来自纽约的客户"SELECT * FROM customers WHERE city = 'New York'
表连接"查找Alice的所有订单"多表JOIN查询
条件过滤"查找金额超过100的订单"WHERE amount > 100
聚合统计"统计每个客户的订单数量"GROUP BY + COUNT
排序查询"查找最年轻的客户"ORDER BY + LIMIT
复杂聚合"查找总消费金额最高的客户"SUM + GROUP BY
日期查询"查找8月份的订单"MONTH() 函数

📊 测试结果

系统在标准测试集上表现优异:

  • 8/8 测试全部通过
  • 平均响应时间: 2.15秒 (SQL生成) + <0.01秒 (执行)
  • 🎯 准确率: 100%
  • 🏗️ 支持: JOIN、聚合、排序、分组等复杂操作

样本输出

📝 测试 2/8: 查找Alice的所有订单 生成的SQL: SELECT o.order_id, o.product, o.amount, o.order_date FROM orders o JOIN customers c ON o.customer_id = c.id WHERE c.name = 'Alice'; 查询结果: [ {'order_id': 101, 'product': 'Laptop', 'amount': 1200.00}, {'order_id': 103, 'product': 'Keyboard', 'amount': 75.50}, {'order_id': 105, 'product': 'Webcam', 'amount': 50.00} ] 生成时间: 3.24s, 执行时间: 0.00s

🗂️ 项目结构

├── test_mysql_nlp2sql.py # 主测试脚本 ├── mysql_setup.sql # 数据库初始化脚本 ├── requirements.txt # Python依赖 ├── README.md # 项目文档 ├── jupyter/ # Jupyter实验笔记 │ ├── 11-mysql-nlp2sql.ipynb │ └── ... └── utils/ # 工具模块

🔧 技术架构

  • 数据库: MariaDB 10.11 (MySQL兼容)
  • LLM: 腾讯云混元-turbos-latest
  • 框架: LangChain 1.2.0 + PyMySQL
  • 运行环境: Python 3.11

🚨 注意事项

  1. API密钥安全: 请勿在代码中硬编码API密钥
  2. SQL注入防护: 系统使用参数化查询,避免SQL注入
  3. 数据库权限: 建议使用只读账户执行查询
  4. 中英文转换: 部分地名需要中英文映射优化

🤝 贡献指南

  1. Fork 项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情

🔮 未来规划

  • 支持更多数据库类型 (PostgreSQL, SQLite)
  • 添加查询结果可视化
  • 实现查询缓存机制
  • 支持自然语言数据修改 (INSERT/UPDATE/DELETE)
  • Web界面开发
  • 多轮对话查询优化

About

langchain & langgraph 大模型课程仓库

Language
HTML24.6%
Python1.5%
Shell0.2%
Jinja0%
Others73.7%