LangChain SQL Agent构建指南(基于MySQL的大模型分析并STEM分发)

张开发
2026/4/8 12:42:54 15 分钟阅读

分享文章

LangChain SQL Agent构建指南(基于MySQL的大模型分析并STEM分发)
LangChain SQL Agent 使用指南目录项目概述环境准备项目结构安装依赖配置环境变量运行示例代码代码详解常见问题 FAQ参考资源项目概述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创建独立环境MySQL8.0 以上确保已有可以访问的数据库示例中使用weekly_tasks、sales_orders表网络能够访问 DeepSeek或 OpenAIAPI需拥有相应的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-mvenv venv# Windowsvenv\Scripts\activate# Linux/macOSsourcevenv/bin/activate# 安装项目依赖pipinstall-rrequirements.txtrequirements.txt已包含langchain,langchain-openai,langchain-community,python-dotenv,pymysql等必要库。配置环境变量在根目录新建.env或直接编辑已有文件示例内容如下# DeepSeek或 OpenAIAPI Key DEEPSEEK_API_KEYyour_deepseek_api_key # 数据库链接MySQL # 格式: mysqlpymysql://username:passwordhost:port/database_name DATABASE_URLmysqlpymysql://root:your_password127.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建立数据库连接使用ChatOpenAIDeepSeek模型生成 SQLcreate_sql_agent将自然语言转为可执行的 SQL 并返回结果最终在控制台打印 AI 组合的周报文字稿代码详解下面把task_agent.py的关键代码块分段解释帮助读者理解每一步的作用。1️⃣ 导入与环境加载importosfromdotenvimportload_dotenvfromlangchain_community.utilitiesimportSQLDatabasefromlangchain_openaiimportChatOpenAIfromlangchain_community.agent_toolkitsimportcreate_sql_agentimportsysprint(f当前使用的 Python 解释器路径:{sys.executable})print(f当前使用的 Python 版本:{sys.version})# 加载 .env 中的变量load_dotenv()load_dotenv()会把.env内容注入到os.getenv()中。打印解释器路径和版本仅用于调试确保使用的解释器是你创建的虚拟环境。2️⃣ 数据库连接# DATABASE_URL 形如 mysqlpymysql://user:pwdhost:port/dbdbSQLDatabase.from_uri(os.getenv(DATABASE_URL))SQLDatabase.from_uri是 LangChain 对 SQLAlchemy 的包装能自动读取表结构并提供run方法执行 SQL。3️⃣ 大模型初始化DeepSeek 示例llmChatOpenAI(modeldeepseek-chat,openai_api_keyos.getenv(DEEPSEEK_API_KEY),openai_api_basehttps://api.deepseek.com/v1,temperature0)temperature0让模型生成的 SQL 更确定避免随机的无效语句。若你使用 OpenAI只需把model改为gpt-4o并使用对应的OPENAI_API_KEY即可。4️⃣ 创建 SQL Agentagent_executorcreate_sql_agent(llm,dbdb,agent_typeopenai-tools,verboseTrue,max_iterations15,handle_parsing_errorsTrue)create_sql_agent会构造一个工具型 Agent其中SQLDatabase被包装成工具Agent 能在对话中自行调用该工具。verboseTrue会把思考过程输出到控制台帮助调试。max_iterations限制思考轮数防止无限循环。handle_parsing_errorsTrue能把 SQL 语法错误返回给模型让它重写。5️⃣ 输入自然语言 Prompt 并执行prompt 你是公司的财务周报助手。请为员工张三生成本周2026-03-30至今的销售周报 1. 统计销售总额和订单数量。 2. 列出金额最高的前三笔订单。 3. 结合 weekly_tasks 表简述该员工本周的工作进展。 如果本周没有订单请明确说明但仍需汇总其工作任务进展。 print( Agent 正在思考中...)responseagent_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”。开启verboseTrue查看模型的思考过程以定位问题。DeepSeek API超时确认网络能访问https://api.deepseek.com或在ChatOpenAI中添加request_timeout30参数。报错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/apiMySQL 官方手册: https://dev.mysql.com/doc/Python‑dotenv: https://pypi.org/project/python-dotenv/代码项目githttps://github.com/ggjj-hub/LangChain_SQL_Agent私人仓库请勿搬运 完成通过本指南你可以快速搭建一个自然语言 → SQL的智能助手并在此基础上扩展为周报生成、数据分析或聊天机器人等业务场景。如果还有其他需求如多数据库支持、结果缓存、API 封装欢迎在评论区交流。祝你玩得开心项目顺利

更多文章