Prompt Engineering 2026年4月12日

ReAct Prompting:推論と行動を融合するAIエージェントの基盤技術

LLMに「考える(Reason)」と「行動する(Act)」を交互に行わせるReActフレームワークの仕組み、実装パターン、AIエージェント開発への応用を解説します。

ReAct Promptingとは

ReAct(Reasoning + Acting)は、Yao et al.(2022)が提案し、ICLR 2023で発表されたプロンプティングフレームワークです。LLMに推論トレース(Thought)とタスク固有のアクション(Action)を交互に生成させることで、外部ツールとの連携を可能にしつつ、推論の透明性を確保します。

2026年現在、LangChain、LlamaIndex、Claude Code、GPTsなど、ほぼ全てのAIエージェントフレームワークの設計思想の根幹にReActがあります。プロンプトエンジニアリングの技術であると同時に、AIエージェントアーキテクチャの基盤パターンとして定着しました。

Thought-Action-Observationループ

ReActの核心は、以下の3ステップを繰り返すループ構造です。

  1. Thought(思考):現在の状況を分析し、次に何をすべきか推論する
  2. Action(行動):外部ツール(検索、計算、API呼び出し等)を実行する
  3. Observation(観察):アクションの結果を受け取り、次のThoughtに反映する

このループにより、LLMは「考えてから行動し、結果を見てまた考える」という人間の問題解決プロセスを模倣します。

なぜ推論と行動を分離するのか

Chain-of-Thought(CoT)は推論のみで、外部情報を参照できないため幻覚が発生しやすくなります。一方、行動のみ(Act-only)のアプローチでは、なぜその行動を取ったかの説明がなく、エラーの原因特定が困難です。ReActは両者を組み合わせることで、幻覚の抑制と判断根拠の可視化を同時に実現します。

ベンチマーク結果

知識推論タスク

タスクCoTのみActのみReActReAct + CoT-SC
HotpotQA(QA)良好低いCoTに匹敵最高性能
Fever(事実検証)良好低いCoTに匹敵最高性能

インタラクティブ意思決定タスク

タスク従来手法ReAct改善幅
ALFWorld模倣学習ReAct+34%(絶対値)
WebShop強化学習ReAct+10%(絶対値)

特筆すべきは、ReActがわずか1〜2個のFew-shot例で模倣学習や強化学習ベースの手法を大幅に上回った点です。

実践:プロンプト例

例1:基本的なReActプロンプト(質問応答)

以下の形式で質問に回答してください。必要に応じて検索ツールを使います。

利用可能なツール:
- Search[query]: Wikipediaを検索して関連情報を取得
- Lookup[keyword]: 現在のページ内でキーワードを検索
- Finish[answer]: 最終回答を提出

質問:東京スカイツリーと東京タワーでは、どちらが何メートル高いですか?

Thought 1: 東京スカイツリーと東京タワーの高さを調べる必要がある。
まず東京スカイツリーの高さを検索しよう。
Action 1: Search[東京スカイツリー 高さ]
Observation 1: 東京スカイツリーは高さ634メートルの電波塔である。
Thought 2: 東京スカイツリーは634m。次に東京タワーの高さを調べよう。
Action 2: Search[東京タワー 高さ]
Observation 2: 東京タワーは高さ333メートルの総合電波塔である。
Thought 3: 東京スカイツリー634m、東京タワー333m。差は634-333=301m。
Action 3: Finish[東京スカイツリーの方が301メートル高い]

例2:コードデバッグにおけるReActパターン

あなたはシニアエンジニアです。以下のバグを、ReAct形式で調査・修正してください。

利用可能なアクション:
- ReadFile[path]: ファイルの内容を読む
- RunTest[command]: テストを実行する
- SearchCode[query]: コードベースを検索する
- Fix[description]: 修正を適用する

バグ報告:ユーザーがログインすると、たまにセッションが即座に切れる

Thought 1: セッション管理のコードを確認する必要がある。
まずセッション関連のファイルを探そう。
Action 1: SearchCode[session middleware]
Observation 1: src/middleware/session.ts が見つかった。
Thought 2: セッションミドルウェアの実装を確認しよう。
Action 2: ReadFile[src/middleware/session.ts]
Observation 2: (ファイル内容が表示される)
Thought 3: セッションの有効期限がmaxAgeで設定されているが、
単位がミリ秒ではなく秒で指定されている。これが原因の可能性が高い。
Action 3: Fix[session.tsのmaxAgeの単位をミリ秒に修正]
Thought 4: 修正後、テストを実行して確認しよう。
Action 4: RunTest[npm test -- --grep "session"]
Observation 4: 全テスト通過。
Action 5: Finish[maxAgeの単位が秒指定になっていたため、
ミリ秒に修正。テスト通過を確認済み。]

例3:市場調査タスクにおけるReAct

以下の質問について、ReAct形式で調査してください。
各ステップで思考と行動を明示してください。

利用可能なアクション:
- WebSearch[query]: Web検索を実行
- Analyze[data]: データを分析・要約
- Calculate[expression]: 数値計算
- Report[content]: 最終レポートを出力

質問:日本のSaaS市場の2025年の市場規模と、
前年比成長率はどの程度ですか?

Thought 1:
(ここからモデルが推論と行動を交互に生成)

いつ使うべきか

ReActパターンが特に有効な場面は以下の通りです。

  • 外部情報の参照が必要なタスク:Web検索、データベース照会、API呼び出しを伴う質問応答
  • マルチステップの調査・分析:複数の情報源を組み合わせて結論を出すタスク
  • デバッグ・トラブルシューティング:仮説を立て、検証し、次のアクションを決めるプロセス
  • AIエージェント開発:ツール使用を含む自律的なタスク実行

逆に、以下の場合はReActは過剰です。

  • 外部ツールが不要な単純な推論・生成タスク
  • リアルタイム性が求められるチャット応答
  • 知識が完結している(外部参照不要な)タスク

注意点・限界

ループの暴走リスク

ReActは理論上、無限にThought-Action-Observationループを繰り返す可能性があります。実装時は最大ステップ数の制限(通常5〜10ステップ)を必ず設定してください。

ツール設計の重要性

ReActの性能は利用可能なツールの品質に大きく依存します。ツールの説明が曖昧だったり、返すデータの形式が不統一だったりすると、モデルは適切なアクションを選択できません。

幻覚アクションの問題

存在しないツールを呼び出したり、不正な引数を渡したりすることがあります。ツール呼び出しのバリデーションは必須です。

コストの増大

各ステップでLLMの呼び出しが発生するため、単純なプロンプトと比較してコストは3〜10倍になることが一般的です。タスクの複雑さに応じて、ReActの必要性を判断してください。

推論モデルとの重複

o1やDeepSeek-R1などの推論モデルは内部的に多段階の推論を行います。これらのモデルにReActを適用する場合、ツール使用の部分に限定するのが効率的です。

参考リンク