LangChain v0.3创建ReAct Agent报错:Prompt缺失必要变量
LangChain v0.3 ReAct Agent 初始化失败问题排查与解决
错误原因
create_react_agent 函数对传入的prompt有强制变量要求,必须包含 tool_names、agent_scratchpad、tools 三个核心变量,你自定义的PromptTemplate仅定义了input和tools_description,缺少这些必填项,因此抛出ValueError。
解决方案
方案1:使用官方内置的ReAct prompt模板(推荐)
直接导入LangChain提供的ReAct专用prompt模板,无需手动编写,避免变量遗漏。
方案2:自定义prompt时补充所有必填变量
如果需要自定义prompt内容,必须在模板中加入所有必填变量,并同步更新input_variables列表。
修正后的完整代码(方案1实现)
# Import necessary modules from langchain_openai import ChatOpenAI from langchain.agents.react.agent import create_react_agent from langchain_community.tools import Tool # 导入官方ReAct prompt模板 from langchain.agents.react.prompt import REACT_PROMPT from langchain.agents import AgentExecutor # Define a mock function to find similar companies def find_similar_companies(company_name: str) -> str: mock_data = { "XYZ Corp": "ABC Inc, DEF Ltd", "Acme Corp": "GHI LLC, JKL PLC" } return f"Similar companies to {company_name}: {mock_data.get(company_name, 'No similar companies found.')}" # Define the tools tools = [ Tool( name="Find Similar Companies", func=find_similar_companies, description="Use this tool to find similar companies based on a company name." ) ] # Initialize the ChatOpenAI model llm = ChatOpenAI( model="gpt-3.5-turbo", openai_api_key="API_KEY" ) # 使用官方REACT_PROMPT创建agent agent = create_react_agent( llm=llm, tools=tools, prompt=REACT_PROMPT ) # 将agent包装为可执行的AgentExecutor agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True) # Test the agent query = "Find similar companies to XYZ Corp" response = agent_executor.invoke({"input": query}) # Print the response print("Agent Response:", response)
补充说明
创建完成的agent需要用AgentExecutor包装后才能调用invoke方法,原代码中缺少这一步,即使解决了prompt变量问题也无法正常执行。
内容的提问来源于stack exchange,提问作者user986508
相关产品推荐
相关产品推荐

