Gemini と LangGraph を使用して ReAct エージェントをゼロから作成する

LangGraph はステートフルな LLM アプリケーションを構築するためのフレームワークであり、ReAct(推論と行動)エージェントの構築に適しています。

ReAct エージェントは、LLM の推論とアクションの実行を組み合わせます。ユーザーの目標を達成するために、反復的に思考し、ツールを使用し、観察に基づいて行動し、アプローチを動的に適応させます。「"ReAct: Synergizing Reasoning and Acting in Language Models"」(2023 年)で紹介されたこのパターンは、厳格なワークフローではなく、人間のような柔軟な問題解決を反映しようとしています。

LangGraph には、ReAct エージェント( create_react_agent)が組み込まれています。これは、ReAct 実装の制御とカスタマイズを強化する必要がある場合に役立ちます。このガイドでは、簡略化されたバージョンを示します。

LangGraph は、次の 3 つの主要なコンポーネントを使用してエージェントをグラフとしてモデル化します。

  • State: アプリケーションの現在のスナップショットを表す共有データ構造(通常は TypedDict または Pydantic BaseModel)。
  • Nodes: エージェントのロジックをエンコードします。現在の State を入力として受け取り、計算または副作用を実行して、更新された State(LLM 呼び出しやツール呼び出しなど)を返します。
  • Edges: 現在の State に基づいて実行する次の Node を定義し、条件付きロジックと固定遷移を可能にします。

API キーをまだ取得していない場合は、Google AI Studio から取得できます。

pip install langgraph langchain-google-genai geopy requests

環境変数 GEMINI_API_KEY に API キーを設定します。

import os

# Read your API key from the environment variable or set it manually
api_key = os.getenv("GEMINI_API_KEY")

LangGraph を使用して ReAct エージェントを実装する方法をよりよく理解するために、このガイドでは実践的な例を紹介します。ツールを使用して、指定された場所の現在の天気を調べるエージェントを作成します。

この天気エージェントでは、State は継続的な会話履歴(メッセージのリストとして)と、実行されたステップ数のカウンタ(整数として)を保持します。これは説明のためのものです。

LangGraph には、状態メッセージ リストを更新するためのヘルパー関数 add_messages が用意されています。これはリデューサーとして機能し、 現在のリストと新しいメッセージを受け取り、結合されたリストを返します。メッセージ ID で更新を処理し、新しい未確認のメッセージに対してはデフォルトで「追加のみ」の動作になります。

from