访问中间步骤
为了更好地了解代理程序的运行情况,我们还可以返回中间步骤。这以额外的键值对的形式返回,其中包含一个由(action, observation)元组组成的列表。
from langchain.agents import load_tools  
from langchain.agents import initialize_agent  
from langchain.agents import AgentType  
from langchain.llms import OpenAI  
API 参考:
- load_tools 来自 
langchain.agents - initialize_agent 来自 
langchain.agents - AgentType 来自 
langchain.agents - OpenAI 来自 
langchain.llms 
初始化代理程序所需的组件。
llm = OpenAI(temperature=0, model_name="text-davinci-002")  
tools = load_tools(["serpapi", "llm-math"], llm=llm)  
使用 return_intermediate_steps=True 初始化代理程序。
agent = initialize_agent(  
    tools,  
    llm,  
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,  
    verbose=True,  
    return_intermediate_steps=True,  
)  
response = agent(  
    {  
        "input": "Who is Leo DiCaprio's girlfriend? What is her current age raised to the 0.43 power?"  
    }  
)  
> 进入新的 AgentExecutor 链...
 我应该查找谁是 Leo DiCaprio 的女朋友
动作:搜索
动作输入:"Leo DiCaprio girlfriend"
观察结果:Camila Morrone
思考:我应该查找 Camila Morrone 的年龄
动作:搜索
动作输入:"Camila Morrone age"
观察结果:25 岁
思考:我应该计算 25 岁的 0.43 次方是多少
动作:计算器
动作输入:25^0.43
观察结果:答案:3.991298452658078
思考:我现在知道最终答案了
最终答案:Camila Morrone 是 Leo DiCaprio 的女朋友,她今年 3.991298452658078 岁。
> 链结束。
# 实际返回类型是代理程序动作的 NamedTuple,然后是观察结果
print(response["intermediate_steps"])  
[(AgentAction(tool='Search', tool_input='Leo DiCaprio girlfriend', log=' 我应该查找谁是 Leo DiCaprio 的女朋友\n动作:搜索\n动作输入:"Leo DiCaprio girlfriend"'), 'Camila Morrone'), (AgentAction(tool='Search', tool_input='Camila Morrone age', log=' 我应该查找 Camila Morrone 的年龄\n动作:搜索\n动作输入:"Camila Morrone age"'), '25 岁'), (AgentAction(tool='Calculator', tool_input='25^0.43', log=' 我应该计算 25 岁的 0.43 次方是多少\n动作:计算器\n动作输入:25^0.43'), '答案:3.991298452658078\n')]
import json  
      
print(json.dumps(response["intermediate_steps"], indent=2))  
[
  [
    [
      "Search",
      "Leo DiCaprio girlfriend",
      " 我应该查找谁是 Leo DiCaprio 的女朋友\n动作:搜索\n动作输入:\"Leo DiCaprio girlfriend\""
    ],
    "Camila Morrone"
  ],
  [
    [
      "Search",
      "Camila Morrone age",
      " 我应该查找 Camila Morrone 的年龄\n动作:搜索\n动作输入:\"Camila Morrone age\""
    ],
    "25 岁"
  ],
  [
    [
      "Calculator",
      "25^0.43",
      " 我应该计算 25 岁的 0.43 次方是多少\n动作:计算器\n动作输入:25^0.43"
    ],
    "答案:3.991298452658078\n"
  ]
]
