LangChain SQL Agent构建指南(基于MySQL的大模型分析并STEM分发)
LangChain SQL Agent 使用指南
目录
项目概述
LangChain SQL Agent 是基于 LangChain、OpenAI/DeepSeek(兼容 OpenAI 接口)和 SQLDatabase 的智能数据库助理。它可以接受自然语言(中文)输入,自动生成对应的 SQL 并在 MySQL 数据库上执行,返回结构化结果。项目还集成了周报生成的示例(task_agent.py),演示了如何把业务需求转换为 SQL 并输出报告。
环境准备
- 操作系统:Windows 10/11(亦可在 Linux/macOS 上运行)
- Python:推荐 3.12(兼容 3.10+),建议使用 virtualenv 或 conda 创建独立环境
- MySQL:8.0 以上,确保已有可以访问的数据库(示例中使用
weekly_tasks、sales_orders表) - 网络:能够访问 DeepSeek(或 OpenAI)API,需拥有相应的
API_KEY
项目结构
langChain_sql_Agent/
├─ .env # 环境变量文件(API_KEY、DATABASE_URL)
├─ requirements.txt # 依赖列表
├─ README.md # 项目说明(本文件的源文档)
├─ task_agent.py # 核心示例代码(演示自然语言生成 SQL)
├─ report_service.py # 周报 PDF 生成(可选)
└─ Weekly_Report.pdf # 示例输出文件
安装依赖
在项目根目录执行以下命令:
# 创建并激活虚拟环境(可选)
python -m venv venv
# Windows
venv\Scripts\activate
# Linux/macOS
source venv/bin/activate
# 安装项目依赖
pip install -r requirements.txt
requirements.txt 已包含
langchain,langchain-openai,langchain-community,python-dotenv,pymysql等必要库。
配置环境变量
在根目录新建 .env(或直接编辑已有文件),示例内容如下:
# DeepSeek(或 OpenAI)API Key
DEEPSEEK_API_KEY=your_deepseek_api_key
# 数据库链接(MySQL)
# 格式: mysql+pymysql://username:password@host:port/database_name
DATABASE_URL=mysql+pymysql://root:your_password@127.0.0.1:3306/your_db
注意:确保
DATABASE_URL能够在本机成功连接,否则在运行时会抛出SQLAlchemy连接错误。
运行示例代码
python task_agent.py
执行后,控制台会输出类似如下信息(示例):
当前使用的 Python 解释器路径: C:\...\venv\Scripts\python.exe
当前使用的 Python 版本: 3.12.0 (main, Oct 2 2024, 12:00:00) [Clang 15.0.0]
🚀 Agent 正在思考中...
--- AI 生成的周报草稿 ---
[AI 返回的自然语言报告]
程序会自动:
- 读取
.env中的 API Key 与数据库 URL - 通过
SQLDatabase.from_uri建立数据库连接 - 使用
ChatOpenAI(DeepSeek)模型生成 SQL create_sql_agent将自然语言转为可执行的 SQL 并返回结果- 最终在控制台打印 AI 组合的周报文字稿
代码详解
下面把 task_agent.py 的关键代码块分段解释,帮助读者理解每一步的作用。
1️⃣ 导入与环境加载
import os
from dotenv import load_dotenv
from langchain_community.utilities import SQLDatabase
from langchain_openai import ChatOpenAI
from langchain_community.agent_toolkits import create_sql_agent
import sys
print(f"当前使用的 Python 解释器路径: {sys.executable}")
print(f"当前使用的 Python 版本: {sys.version}")
# 加载 .env 中的变量
load_dotenv()
load_dotenv()会把.env内容注入到os.getenv()中。- 打印解释器路径和版本,仅用于调试,确保使用的解释器是你创建的虚拟环境。
2️⃣ 数据库连接
# DATABASE_URL 形如 mysql+pymysql://user:pwd@host:port/db
db = SQLDatabase.from_uri(os.getenv("DATABASE_URL"))
SQLDatabase.from_uri是 LangChain 对 SQLAlchemy 的包装,能自动读取表结构并提供run方法执行 SQL。
3️⃣ 大模型初始化(DeepSeek 示例)
llm = ChatOpenAI(
model="deepseek-chat",
openai_api_key=os.getenv("DEEPSEEK_API_KEY"),
openai_api_base="https://api.deepseek.com/v1",
temperature=0
)
temperature=0让模型生成的 SQL 更确定,避免随机的无效语句。- 若你使用 OpenAI,只需把
model改为gpt-4o并使用对应的OPENAI_API_KEY即可。
4️⃣ 创建 SQL Agent
agent_executor = create_sql_agent(
llm,
db=db,
agent_type="openai-tools",
verbose=True,
max_iterations=15,
handle_parsing_errors=True
)
create_sql_agent会构造一个 工具型 Agent,其中SQLDatabase被包装成工具,Agent 能在对话中自行调用该工具。verbose=True会把思考过程输出到控制台,帮助调试。max_iterations限制思考轮数,防止无限循环。handle_parsing_errors=True能把 SQL 语法错误返回给模型让它重写。
5️⃣ 输入自然语言 Prompt 并执行
prompt = """
你是公司的财务周报助手。请为员工'张三'生成本周(2026-03-30至今)的销售周报:
1. 统计销售总额和订单数量。
2. 列出金额最高的前三笔订单。
3. 结合 weekly_tasks 表,简述该员工本周的工作进展。
如果本周没有订单,请明确说明,但仍需汇总其工作任务进展。
"""
print("🚀 Agent 正在思考中...")
response = agent_executor.invoke({"input": prompt})
print("\n--- AI 生成的周报草稿 ---")
print(response["output"])
- 这里的 Prompt 给出了业务需求,Agent 会先分析表结构(
SQLDatabase.get_table_info()),生成对应的 SELECT 语句,执行后再组织成自然语言答案。 invoke返回一个字典,关键字段是output,即最终的文字报告。
常见问题 & FAQ
| 问题 | 解决办法 |
|---|---|
| 无法连接 MySQL | 检查 DATABASE_URL 中的用户名、密码、主机、端口是否正确;确认 MySQL 服务已启动并开放外部访问(防火墙)。 |
| 模型返回错误的 SQL | 将 temperature 调整为 0,或在 Prompt 中明确要求 “请仅返回有效的 SQL”。开启 verbose=True 查看模型的思考过程以定位问题。 |
DeepSeek API 超时 |
确认网络能访问 https://api.deepseek.com,或在 ChatOpenAI 中添加 request_timeout=30 参数。 |
报错 ImportError: cannot import name 'ChatOpenAI' |
检查 langchain-openai 版本是否 >= 0.1.0,或执行 pip install --upgrade langchain-openai。 |
| 想把报告导出为 PDF | 参考项目中的 report_service.py,使用 reportlab 或 fpdf 将 response["output"] 写入 PDF。 |
参考资源
- LangChain 官方文档: https://python.langchain.com/docs/
- SQLDatabase 工具: https://python.l### 专业智能创作助手的功能
专注于根据用户意图和搜索词检索网络信息,整合生成清晰实用的答案。
回答格式要求
严格遵循Markdown规范,避免第一人称和步骤词汇,确保内容结构化。
内容组织方式
采用多步骤或方法呈现,段落间换行分隔,代码与公式按格式要求处理。
适用场景
适用于需要精准信息检索、技术指导或知识整合的场景,提供高效解决方案。angchain.com/docs/modules/tools/sql_database/
- DeepSeek API 文档: https://deepseek.com/docs/api
- MySQL 官方手册: https://dev.mysql.com/doc/
- Python‑dotenv: https://pypi.org/project/python-dotenv/
- 代码项目git:https://github.com/ggjj-hub/LangChain_SQL_Agent(私人仓库,请勿搬运)
🎉 完成
通过本指南,你可以快速搭建一个 自然语言 → SQL 的智能助手,并在此基础上扩展为周报生成、数据分析或聊天机器人等业务场景。如果还有其他需求(如多数据库支持、结果缓存、API 封装),欢迎在评论区交流。
祝你玩得开心,项目顺利!
更多推荐




所有评论(0)