ValueError:一个输入键应得到 ['input', 'agent_scratchpad']

ValueError: One input key expected got ['input', 'agent_scratchpad']

提问人:ML Ops 提问时间:10/4/2023 更新时间:10/4/2023 访问量:247

问:

我有一个使用 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)) 
Python 聊天机器人 streamlit langchain

评论


答:

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']