概述
在本教程中,你将学习如何使用 LangChain 智能体构建一个能够回答 SQL 数据库相关问题的智能体。 在高层次上,智能体将:1
从数据库获取可用的表和模式
2
决定哪些表与问题相关
3
获取相关表的模式
4
根据问题和模式信息生成查询
5
使用 LLM 双重检查查询是否有常见错误
6
执行查询并返回结果
7
纠正数据库引擎暴露的错误,直到查询成功
8
根据结果生成响应
概念
我们将涵盖以下概念:设置
安装
LangSmith
设置 LangSmith 来检查链或智能体内部发生了什么。然后设置以下环境变量:1. 选择 LLM
选择一个支持工具调用的模型:- OpenAI
- Anthropic
- Azure
- Google Gemini
- AWS Bedrock
- HuggingFace
- OpenRouter
2. 配置数据库
你将为本教程创建一个 SQLite 数据库。SQLite 是一个轻量级数据库,易于设置和使用。我们将加载chinook 数据库,这是一个代表数字媒体商店的示例数据库。
为方便起见,我们已将数据库(Chinook.db)托管在公共 GCS 存储桶中。
langchain_community 包中提供的便捷 SQL 数据库包装器来与数据库交互。该包装器提供了一个简单的接口来执行 SQL 查询和获取结果:
3. 添加数据库交互工具
使用langchain_community 包中提供的 SQLDatabase 包装器来与数据库交互。该包装器提供了一个简单的接口来执行 SQL 查询和获取结果:
4. 使用 create_agent
使用 create_agent 构建一个 ReAct 智能体,代码量最少。智能体将解释请求并生成 SQL 命令,工具将执行这些命令。如果命令有错误,错误消息会返回给模型。模型可以检查原始请求和新的错误消息并生成新命令。这种向模型提供反馈(在本例中是错误消息)的模式非常强大。
使用描述性的系统提示词初始化智能体以自定义其行为:
5. 运行智能体
在示例查询上运行智能体并观察其行为:你可以在 LangSmith 追踪中检查上述运行的所有方面,包括采取的步骤、调用的工具、LLM 看到的提示词等。
(可选)使用 Studio
Studio 提供了一个”客户端”循环以及记忆,因此你可以将其作为聊天界面运行并查询数据库。在 Studio 中运行你的智能体
在 Studio 中运行你的智能体
除了之前提到的包之外,你还需要:在你将运行的目录中,你需要一个包含以下内容的 创建一个
langgraph.json 文件:sql_agent.py 文件并插入以下内容:6. 实现人机协作审查
在执行之前检查智能体的 SQL 查询以防止意外操作或低效查询是明智的。 LangChain 智能体提供内置的人机协作中间件支持,为智能体工具调用添加监督。让我们配置智能体在调用sql_db_query 工具时暂停以进行人工审查:
sql_db_query 工具之前暂停以进行审查。
我们可以使用 Command 恢复执行,在本例中接受查询。
有关详情,请参阅人机协作指南。
后续步骤
如需更深度的自定义,请查看这个教程,了解如何直接使用 LangGraph 原语实现 SQL 智能体。连接这些文档到 Claude、VSCode 等工具,通过 MCP 获取实时答案。

