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
相关产品推荐
相关产品推荐

