ReAct(リアクト)

広く知られているAutoGPTプロジェクトは、推論+アクションを組み合わせたReActモデルに基づいています。LLMラージモデルは推論を担当し、目標を達成するためのアクションを制御します。開発者にとって、アクションとは実際には良いツールやAPIを開発することです。この章ではLangChainがどのようにReActモデルを実装しているかを紹介します。

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に組み込まれた2つのツールを読み込みます:Google検索のためのserpapiおよび数学計算機のためのllm-math、どちらもLLMを使用して実装されています。そのため、ツールを読み込む際には使用するllmモデルを渡す必要があります。

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

最後に、エージェントを初期化します。エージェントの種類はAgentType.ZERO_SHOT_REACT_DESCRIPTIONで、これはReActモデルを表しています。

agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

さて、テストしてみましょう!

agent.run("レオナルド・ディカプリオの彼女は誰?彼女の現在の年齢の0.43のべき乗は何?")
> 新しいAgentExecutorチェーンに入る…
     レオナルド・ディカプリオの彼女が誰かを調べて、その後彼女の年齢の0.43のべき乗を計算する必要があります。
    アクション:検索
    アクション入力:"レオナルド・ディカプリオ 彼女"
    観察:カミラ・モローネ
    考え中:カミラ・モローネの年齢を調べる必要があります
    アクション:検索
    アクション入力:"カミラ・モローネ 年齢"
    観察:25歳
    考え中:25の0.43のべき乗を計算する必要があります
    アクション:電卓
    アクション入力:25^0.43
    観察:答え:3.991298452658078

    考え中:最終的な答えがわかりました
    最終答え:カミラ・モローネはレオナルド・ディカプリオの彼女であり、彼女の年齢の0.43のべき乗は3.991298452658078です。

    > チェーンが完了しました。

    "カミラ・モローネはレオナルド・ディカプリオの彼女であり、彼女の年齢の0.43のべき乗は3.991298452658078です。"

チャットモデルの使用

前回の例から、エージェントが推論エンジンとして大規模モデルを選択する必要があることがわかりました。ここでは、推論エンジンとしてOpenAIのチャットモデルを使用するように変更します。

from langchain_openai import ChatOpenAI

chat_model = ChatOpenAI(temperature=0)
agent = initialize_agent(tools, chat_model, agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
agent.run("レオナルド・ディカプリオの彼女は誰?彼女の現在の年齢の0.43のべき乗は何?")