LangChain 升级后 agent_toolkits 导入报错的解决方案

3次阅读

LangChain 升级后 agent_toolkits 导入报错的解决方案

LangChain v0.1+ 版本将部分代理工具(如 create_python_agent 和 PythonREPLTool)迁移至独立包 langchain_experimental,直接导入旧路径会触发路径校验异常;需安装新包并更新导入语句。

langchain v0.1+ 版本将部分代理工具(如 `create_python_agent` 和 `pythonrepltool`)迁移至独立包 `langchain_experimental`,直接导入旧路径会触发路径校验异常;需安装新包并更新导入语句。

自 2023 年 10 月起,LangChain 进行了模块架构重构:原位于 langchain.agents.agent_toolkits 下的实验性代理工具(包括 create_python_agent、PythonREPLTool 等)被正式移出核心包,统一归入新发布的独立子包 —— langchain_experimental。该变更旨在解耦稳定 API 与仍在迭代中的高级功能,提升核心库的稳定性与可维护性。

当你执行 conda install conda-forge::langchain 升级至 v0.1.x 或更高版本后,若仍沿用旧导入方式:

from langchain.agents.agent_toolkits import create_python_agent  # ❌ 已废弃 from langchain.tools.python.tool import PythonREPLTool             # ❌ 已废弃

Python 在解析 __init__.py 中的动态导入逻辑时,会调用 langchain_core._api.path.get_relative_path() 校验模块路径关系。由于 langchain/agents/agent_toolkits 与 langchain_core 不再属于同一逻辑子树(前者已实质“断连”),便抛出经典错误:

ValueError: '.../langchain/agents/agent_toolkits' is not in the subpath of '.../langchain_core'

✅ 正确做法如下:

1. 安装实验性模块包

pip install langchain_experimental

⚠️ 注意:conda-forge 当前暂未同步提供 langchain_experimental 的稳定构建,强烈建议使用 pip 安装,避免环境不一致问题。

2. 更新导入语句

功能 新导入路径 说明
创建 Python 代理 from langchain_experimental.agents.agent_toolkits import create_python_agent ✅ 替代原 langchain.agents.agent_toolkits.create_python_agent
Python 执行工具 from langchain_experimental.tools.python.tool import PythonREPLTool ✅ 替代原 langchain.tools.python.tool.PythonREPLTool
基础 Python REPL from langchain.python import PythonREPL ✅ 仍保留在 langchain 主包中,无需改动
通用代理初始化 from langchain.agents import load_tools, initialize_agent, AgentType ✅ 这些核心代理类未迁移,保持原路径

完整示例(可直接运行)

# ✅ 正确导入(LangChain ≥ 0.1.0) from langchain_experimental.agents.agent_toolkits import create_python_agent from langchain_experimental.tools.python.tool import PythonREPLTool from langchain.llms.openai import OpenAI  # 注意:v0.1+ 中 OpenAI LLM 已移至 langchain_openai(见下方提示) from langchain.agents import AgentType  # 初始化工具与 LLM(以 OpenAI 为例) tool = PythonREPLTool() llm = OpenAI(temperature=0, api_key="your-api-key")  # 若使用新版,推荐改用 langchain_openai.OpenAI  agent = create_python_agent(     llm=llm,     tool=tool,     verbose=True,     agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION, )

? 重要补充说明

  • OpenAI 模块变更:langchain.llms.openai.OpenAI 在 v0.1+ 中已被弃用,官方推荐迁移到独立包 langchain_openai

    pip install langchain_openai
    from langchain_openai import OpenAI  # ✅ 新标准路径
  • 版本兼容性检查:运行以下命令确认关键包版本:

    pip show langchain langchain-experimental langchain-openai

    建议组合版本参考:langchain>=0.1.16, langchain-experimental>=0.1.10, langchain-openai>=0.1.4

  • 避免混用 Conda/Pip 安装:若环境由 Conda 创建,仍建议对 langchain_experimental 和 langchain_openai 使用 pip 安装,因其在 Conda Forge 中更新滞后,易引发路径或依赖冲突。

该调整并非 bug,而是 LangChain 向模块化、渐进式演进的关键一步。及时更新导入路径与依赖,不仅能解决当前报错,更能确保后续平滑接入更多 experimental 功能(如 CSV Agent、pandas Agent 等)。

text=ZqhQzanResources