推理と計画(Reasoning & Planning)

自律型AI Agentを構築する過程において、大規模言語モデル(LLM)がAgentの頭脳であり、ツール呼び出し(Tool Use)が手足であるとすれば、推理と計画(Reasoning & Planning)はそれを単なるQ&Aマシンから自律的な問題解決者へと昇格させる中核エンジンである。

複雑な現実のタスクは、一回の生成(One-pass generation)で完了できることはほとんどない。AIには、目標の分解、論理的推論、経路探索、自己修正、ツールのスケジューリング能力が必要である。

以下は、現在業界で最も主流な推論・計画フレームワークである。


思考の連鎖(Chain of Thought, CoT)

段階的推論能力

従来のLLMは回答を生成する際、直感的に一気に結論を出すことが多い。

思考の連鎖(CoT)の核となる考え方は次のとおり:モデルに最終回答を出力する前に、中間の推論ステップを明示的に出力させる(Let's think step by step)。この手法により、複雑な数学、論理的推論、常識的なQAにおけるモデルの潜在能力が大幅に引き出される。

CoTはモデルにより多くの計算時間(トークン数が計算量を表す)だけでなく、後続の生成をそれまでの正しい論理の上に構築できるようにする。

例:Few-shot CoT プロンプト設計

# 推論過程を含む例を提供することで、モデルをCoT推論に導く
prompt = """
問題:ロジャーはテニスボールを5個持っています。彼はテニスボールが2缶入りのものをさらに買いました。各缶には3個入っています。彼は今全部で何個のテニスボールを持っていますか?
解答:ロジャーは最初に5個のテニスボールを持っています。2缶のテニスボール、各缶3個で、合計 2 * 3 = 6 個のテニスボール。5 + 6 = 11。答えは11です。

問題:食堂に23個のリンゴがあります。昼食に20個使った場合、さらに6個買いました。現在リンゴは何個ありますか?
解答:食堂には元々23個のリンゴがありました。20個使った後、残りは 23 - 20 = 3 個です。さらに6個買ったので、現在は 3 + 6 = 9 個です。答えは9です。

問題:{user_question}
解答:"""


ReAct フレームワーク(Reasoning + Acting)

推論 + 行動ループ

もしCoTがモデル内部だけで独りよがりに考えているならば、ReAct(Reason + Act)こちらはモデルに目を開かせて世界を見せるものである。内部の論理的推論(Thought)と外部ツールとのやり取り(Action)を織り交ぜ、動的な閉ループフィードバックシステムを形成する。

ReActパラダイムでは、AgentはThought(思考) -> Action(行動) -> Observation(観察)のループを、最終結論に達するまで繰り返す。

ReActループ構造図 Thought, Action, Observation の間の循環関係を示している。 Thought 現状と目標の分析 Action 外部ツール/APIの呼び出し Observation(観察) User Query

限界:ReActは短期的で手順が明確なタスクでは優れた性能を発揮する。しかし、思考と行動の履歴全体が同じコンテキストウィンドウに蓄積されるため、タスクの連鎖が長くなると、無限ループに陥ったり、コンテキストのオーバーロードにより初期目標を忘れたりしやすい。


Plan-and-Execute(計画先行実行モード)

長期的なタスクにおけるReActの弱点を解決するため、Plan-and-Executeは思考と行動を分離し、人間が大規模プロジェクトに取り組む際の戦略を採用している:先にスケジュール表を作成し、それから一つずつ作業を実行する。。

システムは通常、2つの独立した役割に分かれる:

  1. Planner(プランナー):大きな目標を受け取り、詳細なStep-by-Stepのサブタスクリストを生成する役割を担う。
  2. Executor(実行者):これらのサブタスクを順番に実行する役割を担う。実行器は通常、小規模なReAct Agentであり、毎回現在の小さな目標の達成にのみ集中する。
Plan-and-Execute 構造図 複雑な目標 Planner(プランナー) 1. Webページを取得 2. データを抽出 3. レポートを生成 Executor(実行者) サブタスクを一つずつ処理 (毎回独立したコンテキスト) 最終納品

Tree of Thoughts (ToT) とツリー状マルチパス探索

ツリー状マルチパス探索

CoTであれPlan-and-Executeであれ、本質的には線形の経路探索である。しかし、コードを書く、数学の問題を解く、クリエイティブな文章を書くといった場面では、人間は複数の案を考え、評価して最適なものを選び、さらにはエラーを見つけたらバックトラックする。

ToT(思考の木)推論プロセスを木としてモデル化する:ノードは現在の思考状態である。モデルは各分岐点で複数の候補Thoughtを生成し、内部のEvaluator(評価器)でこれらのノードを採点する(例:実行可能、リスクの可能性あり、実行不可)。BFS(幅優先探索) 或 DFS(深さ優先探索)のアルゴリズムと組み合わせて、さらに深く進むかバックトラックして再試行するかを決定する。


タスク計画 & MCTS(モンテカルロ木探索)

複雑なタスクの分解と探索

戦略ゲームや極めて難易度の高い推論タスク(最先端の数学的検証、複雑なコードリポジトリのリファクタリングなど)では、単純なToTではまだ効率的ではない。業界はLLMと従来の強化学習探索アルゴリズムを組み合わせ始めているMCTS(Monte Carlo Tree Search)(AlphaGoの中核ロジックに似ている)。

  • LLMをポリシーネットワーク(Policy Network)として:ヒューリスティックな次の行動提案を提供し、無意味な分岐の拡大を減らす。
  • LLM/コード環境をバリューネットワーク(Value Network)として:シミュレーション実行(Rollout)を通じて、ある行動系列の最終的な勝率や成功率を予測する。
  • 利点:膨大な解空間の中で、グローバル最適の可能性が最も高い計画経路を見つけることができる。

Reflexion:自己反省とエラー訂正

人間はタスクを実行する際、最初に失敗したら、経験と教訓をまとめ、次の試行で同じエラーを避ける。

ReflexionこのフレームワークはAgentに同様の能力を与える。

Reflexionの閉ループでは、Agentの出力が失敗と判定されたとき(例:テストケースが通らない、APIエラー)、Reviewerメカニズムがトリガーされる。。

LLMは、過去の行動と失敗のフィードバックに基づいて、口語的な反省(Reflection)を書くよう求められる。例えば:「私はさっき誤ったAPIパラメータ形式を使用しました。次回はドキュメントを確認してからJSONを渡すべきです」この反省はエピソード記憶(Episodic Memory)に保存され、次の試行のコンテキストプロンプトとして利用される。これにより、Agentの自己修復能力が大幅に向上する。

例:Reflexion の反省プロンプト設計

reflection_prompt = """
あなたはPythonクローラーの作成を試みているAIアシスタントです。
これはあなたが先ほど実行したコードです:{previous_code}
これは実行環境が返したエラー情報です:{error_traceback}

深く反省してください:
1. エラーが発生した根本原因は何ですか?
2. 次の試行で、具体的な修正戦略は何ですか?

反省を記録し、後続の行動を導いてください。
"""


タスク分解戦略と実装実践

実際のプロダクションレベルのAIエージェント開発において、LLMの「ゼロショット」だけで複雑なプランニングを行うのは不安定です。一般的に使用されるハイブリッド介入戦略には以下が含まれます:

介入戦略 核心的な手法 適用シーン
サブタスクのテンプレート化(SOP) LLMに自由にプランニングさせるのではなく、標準運用手順(SOP)を事前に定義し、LLMを固定されたステートマシン(State Machine)内で遷移させます。 カスタマーサポートシステム、標準化されたデータクリーニングパイプライン。
HITL (Human-in-the-Loop) Plannerがタスクリストを生成した後、実行を中断し、人間のユーザーに確認・修正・承認(Approve)を求め、その後Executorに実行させます。 高リスク操作:データベースレコードの削除、一斉メールの送信、高額な資金送金など。
RLHFによるプランニング誘導 強化学習と人間の嗜好フィードバックを利用して、大規模モデルのプランニング能力を専用にファインチューニングし、安全で効率的なステップの組み合わせを生成しやすくします。 基盤となる大規模言語モデルの学習段階(例:OpenAIのo1モデルのトレーニング)。

フレームワーク比較まとめ

モード 核心的なメカニズム 利点 欠点
CoT Step-by-Step 線形推論 実装が非常にシンプルで、基本的な推論精度を顕著に向上させる 外部ツールを呼び出せず、一つの道を突き進みがち
ReAct 思考と行動の交互クローズドループ 環境に動的に適応し、観測を通じてリアルタイムに調整できる コンテキストがステップの蓄積に伴って爆発しやすく、本来の目的を見失う
Plan-and-Execute まずサブタスクに分解し、その後分離して実行する 長期的な複雑なタスクに非常に適しており、コンテキストが明確 突発的な変化(プランニング自体のエラー時)に対して柔軟性が不十分
ToT / MCTS ツリー状検索、評価とバックトラック 最高難度の複雑な論理問題を解決できる 計算コストが非常に高く、トークン消費が指数関数的
Reflexion 失敗フィードバックに基づいてリフレクションメモリを生成 自己修正と継続的進化の能力を備えている 明確なフィードバック信号(コードコンパイラのエラーなど)に依存
その他の拡張