本项目是针对“数智决策科学赛道”开发的智能数据库问答系统。针对 Text-to-SQL 任务中常见的“幻觉 SQL”、“复杂逻辑导致的空结果”以及“数值格式不匹配”等痛点,我们构建了一个基于 DeepSeek-Coder 大模型和 LangChain 框架的 Agent 解决方案。
核心创新: 引入了多轮自反思(Self-Reflection)机制。Agent 在生成 SQL 后会立即在 StarRocks 中执行,并根据执行反馈(如报错信息、空结果等)动态调整 Prompt 进行自我纠错,极大提升了 SQL 的可执行率和业务准确性。
请确保您的项目目录遵循以下规范(依据比赛指南):
.
├── data/ # 数据存放目录
│ ├── schema.json # 84 张表的元数据
│ ├── final_dataset.json # 86 道比赛题目
│ └── common_knowledge.md # 业务知识库(枚举值映射)
├── docs/ # 项目文档目录
│ ├── 方案介绍.pdf # 详细方案设计
│ ├── 代码使用说明.pdf # 环境配置指引
│ └── 数智决策科学赛道指南.pdf # 官方比赛指南(原名已规范化)
├── sql_file/ # SQL 脚本目录
│ ├── create_table.sql # 建表语句
│ └── drop_table.sql # 删表语句
├── langchain_agent.py # 核心 Agent 执行脚本(含自反思逻辑)
├── sql_exe.py # 数据库工具类(数据导入与执行)
├── environment.yaml # Conda 环境配置文件
└── README.md # 项目主说明文档
-
大语言模型 (LLM): DeepSeek-Coder (deepseek-coder)
-
开发框架: LangChain (ChatOpenAI, SystemMessage)
-
数据库: StarRocks (通过 PyMySQL 协议交互)
-
开发语言: Python 3.9+
-
增强型 Schema 剪枝:
get_pruned_schema_string函数根据题目关键词过滤无关表,并强制保留Column Comment,辅助模型识别业务枚举值(如:段位ID、游戏代码等)。 -
闭环自反思纠错:
- 报错纠错:捕获 SQL 语法错误,反馈给 LLM 重新生成。
- 空结果优化:若查询结果为空,提醒模型检查 WHERE 条件中的数值单位或日期格式。
- 知识注入:将
common_knowledge.md中的业务逻辑作为上下文注入 Prompt。
推荐使用 Conda 创建环境:
cd code
conda env create -f environment.yaml
conda activate your_env_name
# 或者手动安装核心依赖
pip install langchain-openai pymysql pydantic pathlib-
在您的 StarRocks 实例中执行
sql_file/create_table.sql。 -
使用
code/sql_exe.py将比赛数据导入数据库。
编辑 code/langchain_agent.py 文件,填入您的配置:
-
API 密钥:设置
DEEPSEEK_API_KEY和DEEPSEEK_API_BASE。 -
数据库连接:修改
DB_CONFIG字典中的host,port,user,password,db。
执行以下命令开始批量处理题目并生成结果:
python langchain_agent.py执行完成后,系统将生成 dataset_exe_result.json,该文件即为最终打榜提交要求的格式。
团队名称:交邮 Agent
完成日期:2025年12月13日
注:本项目所有权、知识产权及其他权益归腾讯所有,仅限本次大赛目的使用。