
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 等)。










