Skip to main content

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?")