You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Langchain中load_tools无法识别python_repl工具的问题排查

解决load_tools加载python_repl报错的问题

错误原因

python_repl属于LangChain的实验性功能,load_tools默认只加载核心工具集,不会自动包含实验性工具,所以直接调用load_tools(["python_repl"])会触发未知工具的报错。

修复方法

方法一:手动创建PythonREPL工具

既然已经能直接使用PythonREPL类,可手动将其封装为Agent兼容的工具:

from langchain.llms.fake import FakeListLLM
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain_experimental.tools.python.tool import PythonREPLTool

# 手动实例化并添加工具
tools = [PythonREPLTool()]

responses=["Action: Python REPL\nAction Input: print(2 + 2)",
"Final Answer: 4"
]
llm = FakeListLLM(responses=responses)
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, 
verbose=True)
agent.run("whats 2 + 2")

方法二:用load_tools的extra_tool_list参数扩展工具集

如果想继续使用load_tools,可以通过extra_tool_list参数显式传入实验性工具:

from langchain.llms.fake import FakeListLLM
from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain_experimental.tools.python.tool import PythonREPLTool

# 通过extra_tool_list添加实验工具
tools = load_tools([], extra_tool_list=[PythonREPLTool()])

responses=["Action: Python REPL\nAction Input: print(2 + 2)",
"Final Answer: 4"
]
llm = FakeListLLM(responses=responses)
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, 
verbose=True)
agent.run("whats 2 + 2")

补充说明

你直接创建PythonREPL对象能正常运行,是因为绕开了load_tools对工具类型的默认过滤,直接调用了实验模块里的工具实现。

内容的提问来源于stack exchange,提问作者Shivi Bhatia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 05:42:37