官方文档教程代码中的关于intermediate_steps的疑问

官方文档地址如下:https://python.langchain.com/docs/modules/agents/#define-the-agent

想请教下,这段代码中agent输入的x["intermediate_steps"]哪里获取?(是由AgentExecutor自动生成的吗)

from langchain.agents.format_scratchpad import format_to_openai_function_messages
from langchain.agents.output_parsers import OpenAIFunctionsAgentOutputParser

agent = (
    {
        "input": lambda x: x["input"],
        "agent_scratchpad": lambda x: format_to_openai_function_messages(
            x["intermediate_steps"]
        ),
    }
    | prompt
    | llm_with_tools
    | OpenAIFunctionsAgentOutputParser()
)

后续调用的时候只输入了inputchat_history

agent_executor.invoke({"input": input1, "chat_history": chat_history})
agent_executor.invoke({"input": "is that a real word?", "chat_history": chat_history})

根据提供的代码示例,我们可以看到在初始化代理时,使用了参数 return_intermediate_steps=True。这将导致代理在执行操作并生成观察结果时,将中间步骤作为额外的键添加到返回值中。

在上述的示例中,代理执行了许多操作和观察,每一步都被记录下来。当代理完成时,它返回一个包含中间步骤的列表,其中每个步骤都表示为一个元组,包含一个操作和一个观察。

具体而言,在这个特定的例子中,代理执行了三个操作:搜索、搜索和计算器。在每个操作之后,代理都会生成一个观察结果。这些步骤和结果被记录下来,并作为中间步骤包含在返回值中。

因此,中间步骤可以让您了解代理在执行任务时的详细过程,并提供了有关代理如何到达最终答案的见解。