Skip to content

基于 DeepSeek 与 LangChain 的自反思 Text-to-SQL Agent。针对 StarRocks 数据库优化,通过 Schema 剪枝、知识注入及多轮执行反馈机制(Self-Reflection)实现高准确率的自动化 SQL 生成与纠错。

Notifications You must be signed in to change notification settings

YuyaoFan/Text2SQLAgent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

基于 DeepSeek 与 LangChain 的自反思 Text-to-SQL Agent

1. 项目简介

本项目是针对“数智决策科学赛道”开发的智能数据库问答系统。针对 Text-to-SQL 任务中常见的“幻觉 SQL”、“复杂逻辑导致的空结果”以及“数值格式不匹配”等痛点,我们构建了一个基于 DeepSeek-Coder 大模型和 LangChain 框架的 Agent 解决方案。

核心创新: 引入了多轮自反思(Self-Reflection)机制。Agent 在生成 SQL 后会立即在 StarRocks 中执行,并根据执行反馈(如报错信息、空结果等)动态调整 Prompt 进行自我纠错,极大提升了 SQL 的可执行率和业务准确性。

2. 目录结构

请确保您的项目目录遵循以下规范(依据比赛指南):

.
├── 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                   # 项目主说明文档

3. 技术栈

  • 大语言模型 (LLM): DeepSeek-Coder (deepseek-coder)

  • 开发框架: LangChain (ChatOpenAI, SystemMessage)

  • 数据库: StarRocks (通过 PyMySQL 协议交互)

  • 开发语言: Python 3.9+

4. 核心策略

  1. 增强型 Schema 剪枝:get_pruned_schema_string 函数根据题目关键词过滤无关表,并强制保留 Column Comment,辅助模型识别业务枚举值(如:段位ID、游戏代码等)。

  2. 闭环自反思纠错:

    • 报错纠错:捕获 SQL 语法错误,反馈给 LLM 重新生成。
    • 空结果优化:若查询结果为空,提醒模型检查 WHERE 条件中的数值单位或日期格式。
    • 知识注入:将 common_knowledge.md 中的业务逻辑作为上下文注入 Prompt。

5. 快速上手

5.1 环境配置

推荐使用 Conda 创建环境:

cd code
conda env create -f environment.yaml
conda activate your_env_name
# 或者手动安装核心依赖
pip install langchain-openai pymysql pydantic pathlib

5.2 数据库准备

  1. 在您的 StarRocks 实例中执行 sql_file/create_table.sql

  2. 使用 code/sql_exe.py 将比赛数据导入数据库。

5.3 配置修改

编辑 code/langchain_agent.py 文件,填入您的配置:

  • API 密钥:设置 DEEPSEEK_API_KEYDEEPSEEK_API_BASE

  • 数据库连接:修改 DB_CONFIG 字典中的 host, port, user, password, db

5.4 运行程序

执行以下命令开始批量处理题目并生成结果:

python langchain_agent.py

6. 输出文件

执行完成后,系统将生成 dataset_exe_result.json,该文件即为最终打榜提交要求的格式。

7. 团队信息

团队名称:交邮 Agent

完成日期:2025年12月13日

注:本项目所有权、知识产权及其他权益归腾讯所有,仅限本次大赛目的使用。

About

基于 DeepSeek 与 LangChain 的自反思 Text-to-SQL Agent。针对 StarRocks 数据库优化,通过 Schema 剪枝、知识注入及多轮执行反馈机制(Self-Reflection)实现高准确率的自动化 SQL 生成与纠错。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages