提问人:ML Ops 提问时间:10/4/2023 更新时间:10/4/2023 访问量:247
ValueError:一个输入键应得到 ['input', 'agent_scratchpad']
ValueError: One input key expected got ['input', 'agent_scratchpad']
问:
我有一个使用 langchain 和 streamlit 开发的聊天机器人。当我运行它时,它加载得很好,但是一旦我输入第一个输入,它就会生成一个错误,说**“ValueError:一个输入键预期得到['input', 'agent_scratchpad']” ** 我想做的就是将响应添加到内存中。谁能建议我在这里做错了什么。
我的代码如下所示。它使用 langchain 和 steamlit
prompt = ZeroShotAgent.create_prompt(
tools,
prefix=template,
suffix=suffix,
input_variables=["input", "chat_history", "agent_scratchpad"]
)
memory = ConversationBufferMemory(memory_key="chat_history")
llm_chain = LLMChain(llm=OpenAI(temperature=0), prompt=prompt,memory=memory)
agent = ZeroShotAgent(llm_chain=llm_chain, tools=tools, verbose=True,return_intermediate_steps=True)
with textcontainer:
query = st.text_input("Query: ", key="input")
if query:
with st.spinner("typing..."):
conversation_string = get_conversation_string()
agent_executor = AgentExecutor.from_agent_and_tools(agent=agent, tools=tools, memory=memory)
response = agent_executor.run(input=query)
agent_executor.verbose = True
st.session_state.requests.append(query)
st.session_state.responses.append(str(response))
答:
0赞
Kavyashree
10/4/2023
#1
若要解决此问题,需要确保输入键的一致性。您可以在创建提示时更新 input_variables 参数以匹配您正在使用的密钥,也可以调整在调用 agent_executor.run(input=query) 时传递的密钥。
如果要保持 input_variables 参数不变,则应在调用 agent_executor.run() 时传递所有预期的键,如下所示:
响应 = agent_executor.run(input={“input”: query, “chat_history”: conversation_string, “agent_scratchpad”: some_value})
评论
0赞
ML Ops
10/4/2023
感谢您的回复。我已经尝试了您的方法,响应 = agent_executor.run(input={“input”: query, “chat_history”: conversation_string, “agent_scratchpad”: some_value}) 但出现相同的错误 ValueError: One input key expected got ['agent_scratchpad', 'input']
评论