AI Agent(エージェント)がタスクを分解(Task Decomposition)すべきかどうかを判断するプロセスは、本質的にLLM(大規模言語モデル)の推論能力とシステムが事前に設定したルールを組み合わせて、意味解析と意思決定を行うことです。
このプロセスは単純な「Yes/No」のスイッチではなく、多次元的な評価プロセスです。以下に、Agentの核心的な判断ロジックとメカニズムを解説します。
1. 意味的複雑さと意図認識 (Semantic Complexity)
Agentはまず、ユーザーのプロンプトの意味構造を分析します。プロンプトに明示的な複雑なロジックが含まれている場合、Agentはタスクを分解する傾向にあります。
- 多重動詞/ターゲット: 指示の中に「Aを検索して、Bを要約し、Cに送信する」といった接続詞構造(And, Then, After)が含まれている場合、それは強力な分解シグナルとなります。
- 抽象レベル: タスクが抽象的であればあるほど(例:「旅行の計画を立てて」)、分解が必要です。具体的であればあるほど(例:「東京行きのチケットを予約して」)、直接実行される可能性が高くなります。
- 暗黙の依存関係: Agentは、タスク完了に必要な情報が不足していないか評価します。次のステップ(「年齢を計算する」)を実行するために、まず情報を取得(「誕生日の検索」)しなければならない場合、分解は必須となります。
2. ツール能力の粒度マッチング (Tool Granularity Matching)
Agentは呼び出し可能なツール(Tools/Functions)のライブラリを持っています。分解するかどうかの鍵は、入力された指示が単一のツール呼び出しに直接マッピングできるかにあります。
- 直接マッピング: ユーザーが「今何時?」と聞き、Agentが
get_current_timeツールを見つけた場合、分解せずに直接実行します。 - 能力のギャップ: ユーザーが「A社とB社の決算書の差異を分析して」と聞き、Agentが
get_report(company)ツールしか持っていない場合、一度に「比較」を行うことは不可能です。そのため、以下のように分解が必要と判定されます。get_report(A)get_report(B)- LLMを使って2つのデータを比較する
3. コンテキストとトークン制限 (Context & Constraints)
- コンテキストウィンドウの制限: タスクが膨大なデータの処理(例:「この500ページの本を要約して」)を伴い、一度の推論のコンテキストウィンドウを超える場合、Agentは戦略に基づいて**チャンキング(分割処理)**タスクとして分解します。
- 出力長の制限: コンテキスト制限と同様に、予想される出力が極端に長い場合、Agentは分割生成を計画することがあります。
4. 一般的なプランニングパターン (Planning Patterns)
Agentの「脳」は通常、特定のプロンプトエンジニアリング・パターンを実行して、この判断を強制的に行います。
- CoT (Chain of Thought, 思考の連鎖):
- システムプロンプトには通常、「深呼吸して、ステップバイステップで考えて(Take a deep breath and think step by step.)」という指示が含まれます。
- このパターンはモデルに思考プロセスを出力させます。モデルは「独り言」の中で、「このタスクは難しすぎる。まずXをやって、次にYをやるべきだ」と自ら発見します。
- ReAct (Reason + Act):
- これは「思考(Reason) -> 行動(Act) -> 観察(Observe)」のループパターンです。
- Reasonフェーズで、Agentは現在の状態が目標状態と一致しているか評価します。一致していない場合、次の具体的なサブタスク手順を生成します。
- Planner-Solver アーキテクチャ:
- Agentを2つの役割に分割するアーキテクチャです。
- Planner: 大きな目標をDAG(有向非巡回グラフ)や手順リストに分解することに特化。
- Solver: 各ステップを実行することに特化。
- このモードでは、全ての入力タスクはデフォルトでPlannerの審査を受け、Plannerがそのまま通すか分解するかを決定します。
- Agentを2つの役割に分割するアーキテクチャです。
5. 開発者はこの判断をどう制御するか?
開発者は以下の方法で、Agentの分解傾向に介入できます。
- Few-Shot Prompting (少数の事例提示): System Prompt内で例を示します。
- 例A:「1+1を計算して」 -> 直接回答。
- 例B:「スネークゲームを作って」 -> ロジック設計、UI作成、制御層の作成に分解。
- 閾値設定: 一部の高度なアーキテクチャでは、軽量な分類モデル(Classifier)をトレーニングし、「このタスクは複雑か」を専門に判断させます。信頼度(Confidence)が0.8を超えた場合のみ、分解フローに入ります。
まとめ
Agentによる分解の判断は魔法ではなく、あらかじめ設定されたプロンプトによってLLMに自己反省(Self-Reflection)を促した結果です。
判断フロー図解:
- 入力: ユーザー指示。
- チェック: 既存のツールで一発で解決できるか? -> Yes -> 実行。
- 反省: タスクに複数の独立したステップや曖昧な目標が含まれているか? -> Yes -> CoT/Plannerモードに入り分解する。
- 実行: サブタスクを順次実行する。