概要
この投稿では次のことを説明します。
- LangChain のエージェントを使用して ReAct ロジックを実装する方法
- フレームワークのインストール
- 言語モデルをロードしています
- 方法 1: LandChain 式言語を使用する
- 建築剤
- 方法 2: ZeroShotReactAgent を使用する
- 方法 3: チャット モデルの使用
- エージェントの構築
- 方法 4: ChatZeroShotReactAgent を使用する
- 結論
LangChain のエージェントを使用して ReAct ロジックを実装するにはどうすればよいですか?
” 反応する 「」は、「理由」フェーズと「アクション」フェーズを組み合わせて、言語モデルのパフォーマンスを強化します。 リ 「」は理性を指し、「 活動 」を行動に移します。 ReAct ロジックは、テキストを理解して生成する LLM またはチャットボットを構築するのに最も最適化されていると考えられています。エージェントは、どのアクションをどの順序で実行するかを決定する意思決定者です。
LangChain のエージェントを使用して ReAct ロジックを実装するプロセスを学習するには、次のガイドを参照してください。
ステップ 1: フレームワークのインストール
まず、LangChain をインストールして、ReAct ロジックの実装プロセスを開始します。
pip インストール ラングチェーン
google-search-results モジュールをインストールして、Google から検索結果を取得できるエージェントを構築するための依存関係を取得します。
pip インストール openai google-search-results
その後、大規模言語モデルまたは LLM をロードして ReAct ロジックを実装するために使用できる OpenAI モジュールをインストールします。
pip インストール openai
必要なモジュールをすべて入手したら、セットアップするだけです。 OpenAI環境 LLM の構築と SerpAPI環境 モデルでエージェントを使用する場合:
輸入 あなた輸入 ゲットパス
あなた 。 約 [ 「OPENAI_API_KEY」 】 = ゲットパス 。 ゲットパス ( 「OpenAI API キー:」 )
あなた 。 約 [ 「SERPAPI_API_KEY」 】 = ゲットパス 。 ゲットパス ( 「Serpapi API キー:」 )
ステップ 2: 言語モデルのロード
次のステップでは、LangChain フレームワークを使用して必要なライブラリをインポートして、言語モデルを読み込みます。
から ラングチェーン。 エージェント 輸入 ロードツールから ラングチェーン。 エージェント 輸入 エージェントの初期化
から ラングチェーン。 エージェント 輸入 エージェントタイプ
から ラングチェーン。 llms 輸入 OpenAI
OpenAI() メソッドを使用して言語モデル (llm) を構築し、SerpAPI を使用してエージェント用のツールを構成します。
llm = OpenAI ( 温度 = 0 )ツール = ロードツール ( [ 「セルパピ」 、 「llm-数学」 】 、 llm = llm )
方法 1: LandChain 式言語を使用する
LCEL は、LangChain で言語モデルを構築しながらチェーンを統合または構成するプロセスです。 LangChainHub をインストールしてプロセスを開始し、LangChain 内のエージェントで ReAct ロジックを構築および使用するための依存関係を取得します。
pip インストール langchainhub
ReActSingleInputOutputParser などの LangChain からライブラリをインポートして、ReAct モデルを使用できるモデルを構築します。
から ラングチェーン。 ツール 。 与える 輸入 render_text_descriptionから ラングチェーン。 エージェント 。 出力パーサー 輸入 ReActSingleInputOutputParser
から ラングチェーン。 エージェント 。 フォーマット_スクラッチパッド 輸入 format_log_to_str
から ラングチェーン 輸入 ハブ
pull() メソッドを使用して言語モデルをロードし、ReAct ロジックを設計し、それをプロンプト変数に保存します。ロードされたデータセットにロジックを実装して、エージェントとの連携を実装するために使用できるツールをいくつか定義します。
プロンプト = ハブ。 引く ( 「hwchase17/反応」 )プロンプト = プロンプト。 部分的 (
ツール = render_text_description ( ツール ) 、
ツール名 = '、' 。 参加する ( [ t. 名前 のために t で ツール 】 ) 、
)
建築剤
ここで、このガイドのステップ 2 でロードした言語モデルと統合して、エージェントとそのツールを構成します。
llm_with_stop = そうですね。 練る ( 停止 = [ 」 \n 観察' 】 )エージェント変数を定義して、エージェントの動作を説明するエージェントを構成するための引数とツールを提供します。 llm_with_stop や ReActSingleInputOutputParser() メソッドなど、以前に構成された部分がエージェントに統合されています。
エージェント = {'入力' : ラムダ ×:× [ '入力' 】 、
「エージェント_スクラッチパッド」 : ラムダ x: format_log_to_str ( バツ [ '中間ステップ' 】 )
} |プロンプト | llm_with_stop | ReActSingleInputOutputParser ( )
AgentExecutor ライブラリを取得し、エージェント、ツール、冗長などの引数を使用してそのメソッドを構成し、より読みやすい出力を取得します。
から ラングチェーン。 エージェント 輸入 エージェントエグゼキュータエージェント_エグゼキューター = エージェントエグゼキュータ ( エージェント = エージェント 、 ツール = ツール 、 冗長な = 真実 )
文字列クエリを入力として使用して、agent_executor() メソッドを呼び出します。これにより、エージェントが出力を抽出するようにトリガーされます。
エージェント_エグゼキュータ。 呼び出す ( { '入力' : 「レオ・ディカプリオのガールフレンドは誰ですか?」 } )出力
次のスクリーンショットは、エージェントが ReAct ロジックを使用して情報を抽出し、自然言語でテキストを生成したことを示しています。
方法 2: ZeroShotReactAgent を使用する
ReAct ロジックは、agent_executor 変数の構成中に ZeroShotReactAgent などの別のエージェントを使用して実装することもできます。その後、質問を入力として Agent_executor 変数を呼び出して、エージェントを呼び出します。
エージェント_エグゼキューター = エージェントの初期化 ( ツール 、 llm 、 エージェント = エージェントタイプ。 ZERO_SHOT_REACT_DESCRIPTION 、 冗長な = 真実 )エージェント_エグゼキュータ。 呼び出す ( { '入力' : 「レオ・ディカプリオの彼女の年齢を0.21乗すると何になりますか」 } )
出力
エージェントは、agent_executor の呼び出し中に要求された入力に基づいて情報を抽出しました。
方法 3: チャット モデルの使用
ChatOpenAI ライブラリをインポートした後にチャット モデルを使用して ReAct ロジックを実装するために使用できる別のプロセス:
から ラングチェーン。 チャットモデル 輸入 チャットオープンAIChatOpenAI() メソッドを使用し、温度の値を 0 に設定してチャット モデルを構築します。これにより、モデルの結果のランダム性を制御できます。
チャットモデル = チャットオープンAI ( 温度 = 0 )ユーザーが ReAct ロジックを実装してプロンプト変数に保存できるモデルをロードし、プロセスで使用するツールを構成します。
プロンプト = ハブ。 引く ( 「hwchase17/react-json」 )プロンプト = プロンプト。 部分的 (
ツール = render_text_description ( ツール ) 、
ツール名 = '、' 。 参加する ( [ t. 名前 のために t で ツール ] ) 、
)
エージェントの構築
チャット モデルを使用して、モデルがテキストの生成を停止したときに観察または最近のメッセージを保存します。
チャットモデル_ウィズ_ストップ = チャットモデル。 練る ( 停止 = [ 」 \n 観察' ] )ReActJsonSingleInputOutputParser ライブラリを取得して ReAct ロジックを実装し、結果を JSON 形式で生成します。
から ラングチェーン。 エージェント 。 出力パーサー 輸入 ReActJsonSingleInputOutputParserchat_model 変数とメソッドを使用してエージェントを構築および構成し、エージェントを呼び出して結果を生成します。
エージェント = {'入力' : ラムダ ×:× [ '入力' ] 、
「エージェント_スクラッチパッド」 : ラムダ x: format_log_to_str ( バツ [ '中間ステップ' ] )
} |プロンプト |チャットモデル_ストップ | ReActJsonSingleInputOutputParser ( )
Agent_executor を構成して実行し、入力変数で指定されたクエリに基づいて結果を取得します。
エージェント_エグゼキューター = エージェントエグゼキュータ ( エージェント = エージェント 、 ツール = ツール 、 冗長な = 真実 )エージェント_エグゼキュータ。 呼び出す ( { '入力' : 「レオ・ディカプリオの彼女の年齢を0.21乗すると何になりますか」 } )
出力
次のスクリーンショットに示すように、エージェントは出力を抽出しました。
方法 4: ChatZeroShotReactAgent を使用する
エージェントの値を変更すると、LangChain フレームワークで ReAct ロジックを実装することもできます。
エージェント = エージェントの初期化 ( ツール 、 チャットモデル 、 エージェント = エージェントタイプ。 CHAT_ZERO_SHOT_REACT_DESCRIPTION 、 冗長な = 真実 )エージェント。 走る ( 「レオ・ディカプリオの彼女の年齢を0.21乗すると何になりますか」 )
出力
出力構造には、情報の抽出に使用されたトークンとモデルからのエージェントの動作に関する詳細情報が含まれています。
LangChain のエージェントを使用して ReAct ロジックを実装するプロセスについては以上です。
結論
LangChain フレームワークを使用してエージェントで ReAct ロジックを実装するには、google-search-results などのモジュールをインストールしてエージェントを構成します。その後、アカウントの OpenAI および SerpAPI 認証情報を使用して環境をセットアップし、モデルの使用を開始します。 ReAct ロジックは、LCEL と、LangChain モジュールによって提供される複数のエージェントとのチャット モデルを使用して実装できます。このガイドでは、LangChain のエージェントを使用した ReAct ロジックの実装について詳しく説明しました。