
3 步让 AI 听懂人话查数据库LangChain SQLDatabaseChain 实战指南【免费下载链接】langchainThe agent engineering platform.项目地址: https://gitcode.com/GitHub_Trending/la/langchain想让 AI 直接听懂上个月卖了多少货这种话然后自己去数据库里查出答案过去你得手写一堆胶水代码拼提示词、调模型、解析 SQL、执行查询、格式化返回。LangChain 的 SQLDatabaseChain 把这套流程全包了——你只管问问题它负责翻译成 SQL 并执行。它到底在干嘛你可以把它想象成一个会写 SQL 的翻译官。工作流程一句话就能说清你的问题 → LLM 看着表结构写 SQL → 执行查询 → 把结果拼成回答它背后靠两样东西SQLAlchemy 负责连数据库MySQL、PostgreSQL、SQLite 都支持LLM 负责理解自然语言并生成查询。表结构信息会被自动塞进提示词里所以 LLM 知道有哪些表、哪些列可以查。顺带一提新版 LangChain 里这个类已经搬家了。现在推荐的入口是create_sql_query_chain核心实现就藏在 libs/langchain/langchain_classic/chains/sql_database/query.py 里提示词模板在同目录的 prompt.py 中想改行为时看这两个文件就对了。三步跑起来准备两样东西一个数据库连接一个语言模型。然后建数据库连接用SQLDatabase.from_uri(sqlite:///Chinook.db)这样的 URI 连上库一行搞定。建模型随便挑一个 LLMtemperature设 0SQL 生成要的是稳定不是创意。组装并提问把模型和数据库丢给create_sql_query_chain然后用invoke({question: ...})发问。最小可运行片段长这样pip 安装 langchain、langchain-community、langchain-openai 后from langchain_openai import ChatOpenAI from langchain_classic.chains import create_sql_query_chain from langchain_community.utilities import SQLDatabase db SQLDatabase.from_uri(sqlite:///Chinook.db) chain create_sql_query_chain(ChatOpenAI(temperature0), db) print(chain.invoke({question: How many employees are there})[query])跑通了吗恭喜你已经有了一条自然语言查库的流水线。能玩出什么花样让它只查指定的表调用时在输入里带上table_names_to_use: [employees]表信息就只暴露这一张表既省 token 又降低误查风险。控制每次返回的行数k参数控制每条 SELECT 最多返回几行默认 5。数据表又大又宽时调小它能防止回答被撑爆。给查询带上列注释get_col_commentsTrue会把列的注释一起喂给 LLM让status 列存的是 0/1这种暗号不再难猜。注意它只支持 PostgreSQL、MySQL 和 Oracle。自定义提示词模板传入自己的prompt但模板里必须包含input、top_k、table_info三个变量缺一个都会直接抛错。想按方言切换措辞把dialect加进变量即可系统会自动填充。这些坑提前踩方言不匹配你用的是 SQLite 的函数LLM 却按 MySQL 方言生成查询必挂。连库时确认db.dialect和你预期一致提示词里的{dialect}会自动带上但别自己写死方言名。权限给太大这条链路天然会把表结构甚至样本数据暴露给模型。数据库连接务必用只读账号只开需要查询的那几张表——这是官方文档里反复强调的安全底线。结果太长撑爆上下文大宽表全量返回提示词上下文直接爆掉。用k限制行数或者只让模型查相关列默认模板里已经写了别查所有列但自定义模板时记得保留这句。给你几条忠告先喂对表结构表名、列名越规范LLM 越不容易瞎猜。能在库里加列注释就加。用真实数据测试拿业务里最刁钻的 20 个问题跑一遍生成的 SQL 一条条人工核对再上生产。日志留一手把每次生成的 SQL 和对应问题记下来出问题时这是最好的线索。复杂分析拆着问对比各季度销售趋势这种问题容易生成翻车 SQL拆成几步简单查询更稳。生产环境留人工审核让生成的 SQL 先过一道规则检查比如禁止DROP、DELETE再执行。回到你最初的场景业务同学提一个问题你的系统几秒钟内给出答案中间没人需要碰 SQL。这条链路搭好后数据库问答真的可以变成产品的一个标准功能。【免费下载链接】langchainThe agent engineering platform.项目地址: https://gitcode.com/GitHub_Trending/la/langchain创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考