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. 使い方の流れ
4. コード例(Python)
5. 主なユースケース
-
ユーザーの入力から複雑な意思決定を自動化したい場合(例:旅行計画、ツール選択)
-
LLMに複数の外部ツールを使わせたい場合(例:計算、検索、データベース問合せ)
-
会話型システムに複数の処理手順を踏ませたい場合(例:チャットボット with memory)
6. 注意点
-
AgentExecutorの内部では、LLMの出力を正確にTool呼び出し形式へ変換できることが前提です。 -
verbose=Trueで設定しておくと、エージェントの**「思考・アクション・観察」**の流れが詳細に出力され、デバッグに有用です。 -
出力形式が不安定な場合は
handle_parsing_errors=Trueの設定で処理継続できます。
まとめ
| 項目 | 説明 |
|---|---|
| 主な目的 | Agentによる思考とTool実行の流れを統括して処理する |
| 構成要素 | agent(思考)、tools(アクション)、executor(制御) |
| 使用タイミング | ツールを複数統合したLLMアプリケーションの中核処理として |
| 実行管理機能 | 最大ステップ数、例外処理、早期終了条件の設定が可能 |
ChatGPT4o 生成日:2025/06/12