Skip to content

jiangfengz/wenshu-nl2sql

Repository files navigation

🎓 高校智能问数平台

基于 DeepSeek 大模型的自然语言转 SQL 查询系统,覆盖 59 张高校信息化规划表,支持自然语言输入自动生成 SQL 语句。

项目背景

为河南省教育厅高校数据填报提供智能问答能力。用户用自然语言描述查询需求(如「统计各学院国家奖学金发放总额」),系统自动分析 59 张规划表的字段结构,调用 DeepSeek 生成可执行的 SQL 查询语句。

系统架构

自然语言输入
     │
     ▼
┌──────────────┐    ┌─────────────────┐    ┌────────────────┐
│  SchemaManager │───▶│   SQLGenerator   │───▶│  DeepSeek API  │
│  (59张表Schema) │    │  (NL → Prompt)   │    │  (SQL生成)     │
└──────────────┘    └─────────────────┘    └────────────────┘
                            │
                            ▼
                     ┌──────────────┐
                     │   SQL 输出    │
                     └──────────────┘

数据覆盖

业务系统 表数量 示例表
教务系统 5 学生基本信息、成绩、毕业生、学籍异动、教学任务
学工系统 13 各类奖学金/助学金发放、困难生信息、入伍资助等
财务系统 6 科目、凭证、余额、辅助信息等
科研项目管理系统 5 纵向/横向项目、成员、收入、支出
一卡通系统 4 卡户、商户、交易流水、补助圈存
人事系统 3 教职工信息、薪酬发放、岗位聘任
校园交通管理系统 3 车辆登记、出入记录、收费记录
资产管理系统 2 资产管理、资产出租
其他系统 18 图书、采购、招生、就业、宿舍、基建、出国、公车、继教等

快速开始

环境要求

  • Python 3.11+
  • DeepSeek API Key

安装依赖

pip install -r requirements.txt
# 或手动安装:pip install requests python-dotenv openpyxl

配置 API Key

编辑项目根目录下的 .env 文件:

DEEPSEEK_API_KEY=your-api-key-here

启动交互式查询

python main.py

交互式菜单:

============================================================
        🎓 高校智能问数平台 - AI SQL Generator
        Powered by DeepSeek | 59张规划表
============================================================
  主菜单
  1. 🔍 自然语言查询 → SQL
  2. 📝 生成测试用例 (NL-SQL对)
  3. 📚 查看所有表结构
  4. 🧪 批量测试
  5. 🚪 退出

查询示例

🔍 请输入查询需求 > 统计各个学院的学生人数

📊 涉及的表: 6_教务系统_学生基本信息表

📝 生成的SQL:
SELECT [学院名称], COUNT(*) AS 学生人数
FROM [6_教务系统_学生基本信息表]
GROUP BY [学院名称]
ORDER BY 学生人数 DESC;

项目文件说明

文件 说明
config.py 全局配置:API Key、模型参数、文件路径
schema_manager.py Schema 管理器:加载/搜索/格式化 59 张表的字段信息
sql_generator.py SQL 生成引擎:构造 Prompt 并调用 DeepSeek API
test_generator.py 测试用例生成器:用 DeepSeek 批量生成 NL-SQL 测试对
main.py CLI 主程序:交互式查询、测试生成、批量验证
extract_schemas.py Schema 提取脚本:从 Excel 样表自动解析字段结构(路径基于脚本目录,可整体迁移)
generate_tests.py 测试用例生成脚本:独立运行批量生成 NL-SQL 测试对(等价于 CLI 菜单选项 2)
validate_tests.py 测试用例批量验证脚本:逐条调用模型校验 test_pairs.json
test_queries.py 示例查询脚本:内置 4 条样例,快速验证 SQL 生成效果
table_schemas.json 59 张表的完整 Schema(由 extract_schemas.py 自动提取)
test_pairs.json 自然语言-SQL 测试用例集(当前 276 对)
requirements.txt Python 依赖清单(requests / python-dotenv / openpyxl)
附件:59张规划表填报样表.../ 教育厅 59 张规划表 Excel 样表,extract_schemas.py 的数据来源

测试用例

test_pairs.json 包含 276 个自然语言-SQL 测试对:

难度 数量 占比
简单 100 36%
中等 143 52%
困难 33 12%

覆盖单表查询、多表 JOIN(最高 4 表关联)、聚合、分组、排序、子查询等 SQL 场景。

重新生成测试用例

# 方式一:通过 CLI 交互式菜单选项 2
python main.py

# 方式二:直接运行生成脚本
python generate_tests.py

批量验证测试用例

python validate_tests.py

注意事项

  • 生成的 SQL 使用 SQLite 语法,中文字段名用方括号 [] 包裹
  • 尚无实际数据库,SQL 仅供格式参考和后续建表使用
  • DeepSeek API 调用有速率限制,批量生成测试用例时内置了间隔延时
  • .env 中的 API Key 不会提交到版本控制

技术要点

  • 使用 requests 直接调用 DeepSeek API,避免 OpenAI 库的 URL 拼接与版本兼容问题
  • 通过 dotenv 管理 API Key,支持 .env 文件覆盖系统环境变量
  • 59 张 Excel 表格的字段结构由 openpyxl 自动解析提取
  • SQL 生成 Prompt 采用紧凑 Schema 格式,确保在 Token 限制内覆盖全部 59 张表

About

高校智能问数平台 — 基于 DeepSeek 的自然语言转 SQL,覆盖 59 张高校信息化规划表(含 276 条 NL-SQL 测试集)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages