一架梯子,一头程序猿,仰望星空!
LangChain教程(Python版本) > 内容正文

LangChain ReAct实现


ReAct

大名鼎鼎的AutoGPT项目就是基于ReAct模式实现,就是推理+行动模型,LLM大模型负责推理,控制行动达成目标,对于开发来说行动其实就是开发好的工具或者API,本章介绍LangChain如何实现ReAct模式。

加载基础包

from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain_openai import OpenAI

这里使用openai模型

llm = OpenAI(temperature=0)

这里加载两个langchain内置的工具, serpapi一个google搜索工具,llm-math是一个数学计算器,使用llm实现,所以这里加载工具的时候要传入使用的llm模型

tools = load_tools(["serpapi", "llm-math"], llm=llm)

最后,初始化agent,agent类型选择AgentType.ZERO_SHOT_REACT_DESCRIPTION,代表ReAct模式。

# verbose参数指定打印运行日志
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

现在让我们来测试一下!

agent.run("Leonardo DiCaprio的女朋友是谁?她现在的年龄提高到0.43次方是多少?")
# 大家可以观察运行日志,agent通过推理 + 行动(调用工具)一步步的完成问题。
> 进入新的AgentExecutor链...
     我需要找出谁是Leonardo DiCaprio的女友,然后计算她的年龄的0.43次幂。
    行动: 搜索
    行动输入: "Leonardo DiCaprio 女友"
    观察: Camila Morrone
    思考: 我需要找出Camila Morrone的年龄
    行动: 搜索
    行动输入: "Camila Morrone 年龄"
    观察: 25岁
    思考: 我需要计算25的0.43次幂
    行动: 计算器
    行动输入: 25^0.43
    观察: 答案: 3.991298452658078

    思考: 我现在知道最终答案了
    最终答案: Camila Morrone是Leonardo DiCaprio的女友,她的年龄的0.43次幂是3.991298452658078。

    > 链完成。

    "Camila Morrone是Leonardo DiCaprio的女友,她的年龄的0.43次幂是3.991298452658078。"

使用聊天模型

通过前面的例子知道agent需要选择一个大模型作为推理引擎,这里我们改成使用openai的聊天模型。

from langchain_openai import ChatOpenAI

# 定义使用openai的chat模型
chat_model = ChatOpenAI(temperature=0)
# 定义agent
agent = initialize_agent(tools, chat_model, agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
# 执行任务
agent.run("Leonardo DiCaprio的女朋友是谁?她现在的年龄提高到0.43次方是多少?")


关联主题