AgentExecutorの使い方

LangChainにおける「AgentExecutor」は、エージェント(Agent)とツール(Tools)を統合して実行プロセスを管理するコンポーネントです。エージェントが思考してアクションを選び、そのアクションを実行する一連の流れを制御する役割を担います。

以下では、AgentExecutorの概要、構成要素、使い方の流れ、コード例、ユースケースについて順を追って詳しく説明します。


1. AgentExecutorとは何か

AgentExecutorは、次の要素を組み合わせて「反復的な思考→アクション→観察」のループを管理する実行エンジンです。

  • Agent(例: ZeroShotAgent, ReActAgentなど)

  • Tool(定義された関数やAPI)

  • 実行ルール(最大ステップ数、途中終了条件など)

LangChainのエージェントは「Toolを選びながら思考を進めるLLM」として設計されており、その一連のプロセスを制御・実行するのがAgentExecutorです。


2. AgentExecutorの構成

必須要素

  • agent: ツールを選択してアクションを考えるエージェント(ZeroShotAgentなど)

  • tools: 実際に呼び出せるツール(Tool型のリスト)

オプション設定

  • verbose: ログ出力を有効化するか(Trueで詳細出力)

  • handle_parsing_errors: LLMが予期しない出力を出した場合の例外処理

  • max_iterations: 最大の思考ループ回数

  • early_stopping_method: ループ終了方法(”force” or “generate”)


3. 使い方の流れ

plaintext
1. Toolの定義 2. LLM(言語モデル)の準備 3. Agentの生成(ZeroShotAgentなど) 4. AgentExecutorの生成 5. Executorに入力してrun

4. コード例(Python)

python
from langchain.agents import Tool, AgentExecutor, initialize_agent from langchain.agents.agent_types import AgentType from langchain.llms import OpenAI # 1. Toolの定義(例:計算用) def add(a, b): return str(int(a) + int(b)) tools = [ Tool( name="AddTool", func=lambda x: add(*x.split()), description="2つの数を加算します。入力は '5 3' のような形式です。" ) ] # 2. LLMの初期化 llm = OpenAI(temperature=0) # 3. Agentの生成(ZeroShotAgentを使った例) agent = initialize_agent( tools=tools, llm=llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True ) # 4. 実行 result = agent.run("5と3を足してください") print(result)

5. 主なユースケース

  • ユーザーの入力から複雑な意思決定を自動化したい場合(例:旅行計画、ツール選択)

  • LLMに複数の外部ツールを使わせたい場合(例:計算、検索、データベース問合せ)

  • 会話型システムに複数の処理手順を踏ませたい場合(例:チャットボット with memory)


6. 注意点

  • AgentExecutorの内部では、LLMの出力を正確にTool呼び出し形式へ変換できることが前提です。

  • verbose=Trueで設定しておくと、エージェントの**「思考・アクション・観察」**の流れが詳細に出力され、デバッグに有用です。

  • 出力形式が不安定な場合はhandle_parsing_errors=Trueの設定で処理継続できます。


まとめ

項目 説明
主な目的 Agentによる思考とTool実行の流れを統括して処理する
構成要素 agent(思考)、tools(アクション)、executor(制御)
使用タイミング ツールを複数統合したLLMアプリケーションの中核処理として
実行管理機能 最大ステップ数、例外処理、早期終了条件の設定が可能

ChatGPT4o 生成日:2025/06/12