ReAct
这个演示展示了如何使用一个代理来实现ReAct逻辑。
from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.llms import OpenAI
首先,让我们加载我们要用来控制代理的语言模型。
llm = OpenAI(temperature=0)
接下来,让我们加载一些要使用的工具。注意,llm-math
工具使用了一个LLM,所以我们需要传入它。
tools = load_tools(["serpapi", "llm-math"], llm=llm)
最后,让我们使用这些工具、语言模型和我们想要使用的代理类型来初始化一个代理。
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
现在让我们来测试一下!
agent.run("Who is Leo DiCaprio's girlfriend? What is her current age raised to the 0.43 power?")
> 进入新的AgentExecutor链...
我需要找出谁是Leo DiCaprio的女朋友,然后计算她的年龄的0.43次方。
动作:搜索
动作输入:"Leo DiCaprio girlfriend"
观察结果:Camila Morrone
思考:我需要找出Camila Morrone的年龄
动作:搜索
动作输入:"Camila Morrone age"
观察结果:25岁
思考:我需要计算25的0.43次方
动作:计算器
动作输入:25^0.43
观察结果:答案:3.991298452658078
思考:我现在知道最终答案了
最终答案:Camila Morrone是Leo DiCaprio的女朋友,她的年龄的0.43次方是3.991298452658078。
> 完成链。
"Camila Morrone是Leo DiCaprio的女朋友,她的年龄的0.43次方是3.991298452658078。"
使用聊天模型
您还可以创建使用聊天模型而不是LLM作为代理驱动程序的ReAct代理。
from langchain.chat_models import ChatOpenAI
chat_model = ChatOpenAI(temperature=0)
agent = initialize_agent(tools, chat_model, agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
agent.run("Who is Leo DiCaprio's girlfriend? What is her current age raised to the 0.43 power?")