
create_sql_agent 已从 langchain_community.agents 移至 langchain_community.agent_toolkits.sql.base,需根据实际安装版本调整导入路径。
`create_sql_agent` 已从 `langchain_community.agents` 移至 `langchain_community.agent_toolkits.sql.base`,需根据实际安装版本调整导入路径。
在 LangChain 生态持续迭代过程中,模块组织结构频繁优化,create_sql_agent 即是典型示例:自 langchain-community==0.3.13 起,该函数不再位于 langchain_community.agents 模块下,而是被迁移至更精准的子模块路径中。若仍按旧文档或过时教程使用:
from langchain_community.agents import create_sql_agent # ❌ 错误:模块中已不存在
将直接触发 ImportError: cannot import name 'create_sql_agent'。
✅ 正确做法是:
-
确认当前版本:运行
pip show langchain_community,检查输出中的Version字段(如0.3.13或更高); - 使用新导入路径:
from langchain_community.agent_toolkits.sql.base import create_sql_agent # ✅ 正确路径
from langchain_community.utilities import SQLDatabase
from langchain_community.llms import OpenAI
from langchain_community.agent_toolkits import SQLDatabaseToolkit
from langchain_community.agents.agent_types import AgentType
connection_uri = "sqlite:///example.db" # 替换为你的数据库 URI
db = SQLDatabase.from_uri(connection_uri)
toolkit = SQLDatabaseToolkit(db=db, llm=OpenAI(temperature=0))
# 创建 SQL Agent(注意:新版需显式传入 toolkit 和 llm)
agent_executor = create_sql_agent(
llm=OpenAI(temperature=0),
toolkit=toolkit,
agent_type=AgentType.OPENAI_FUNCTIONS, # 推荐使用 OPENAI_FUNCTIONS(需支持 function calling 的模型)
verbose=True
)
# 使用示例
agent_executor.invoke({"input": "列出所有用户表中的记录数"})
⚠️ 注意事项:
-
create_sql_agent现在必须显式传入toolkit和llm参数,不再支持仅靠db自动推导; - 若使用
AgentType.ZERO_SHOT_REACT_DESCRIPTION,需确保 LLM 支持标准 ReAct 格式,并手动配置 prompt; - 建议同步升级相关依赖:
pip install -U langchain langchain-community pydantic sqlalchemy,避免版本不兼容; - 官方文档已更新,请优先查阅 LangChain SQL Agent 文档 获取最新 API 签名与示例。
掌握模块迁移规律(如 agent_toolkits.*.base 是工具类工厂函数的统一出口),可显著提升后续适配效率。











