目次を表示する

AI エージェントを業務に組む ─ アーキテクチャパターンの地図

古典パターン ─ ReAct・Reflexion・Plan-and-Act・Voyager

古典パターン ─ ReAct・Reflexion・Plan-and-Act・Voyager

ch2 の 8 パターン、ch3 の 6 トポロジーは、すべて 2022-2025 年の論文と実装の蓄積の上に立っている。本章では、現代のエージェント設計に深く影響を与えた 5 つの古典パターンを整理する。

これらを知っておくと、新しいフレームワークが出てきたときに「ああ、これは ReAct の発展形だな」「これは Reflexion を framework に組み込んだものだな」と即座に評価できるようになる。フレームワークの ChangeLog を読むスピードが上がる。

5 つの古典パターン早見表

論文出典核心本作の 8 パターンへの継承
ReActYao et al., ICLR 2023Thought / Action / Observation の交互生成Augmented LLM + Autonomous Agent Loop の標準形
ReflexionShinn et al., NeurIPS 2023失敗を「言語的フィードバック」に変換、エピソードメモリへ保存Evaluator-Optimizer
Plan-and-ActErdogan et al., ICML 2025Planner / Executor を完全分離、長期 horizon タスクで合成データで Planner 強化Orchestrator-Workers の長 horizon 版
Tree of ThoughtsYao et al., NeurIPS 2023思考を木として展開、評価 + backtracking で探索的推論Parallelization (voting) + Evaluator-Optimizer の合成
VoyagerWang et al., 2023スキル(実行可能コード)を蓄積する skill library + 自動カリキュラムSkills を溜めるエージェントの原型、Anthropic Skills の思想的ルーツ

1. ReAct ── 推論と行動の交互生成

Yao et al. “ReAct: Synergizing Reasoning and Acting in Language Models” (ICLR 2023) arxiv.org/abs/2210.03629

核心アイデア:LLM の出力を Thought / Action / Observation の 3 種類に分けて交互生成させる。

Thought 1: ユーザーは天気を知りたい。今日の東京の天気を調べる必要がある。
Action 1: search_weather("Tokyo", "today")
Observation 1: 晴れ、気温 22-28°C、降水確率 10%

Thought 2: 答えは見つかった。応答を組み立てる。
Action 2: respond("今日の東京は晴れ、気温 22-28°C、降水確率 10% です")

なぜ重要か:純粋な Chain-of-Thought(CoT)の問題は ハルシネーションだった。LLM が頭の中だけで推論を完結させると、外部世界の事実と乖離する。ReAct は「推論」と「外部世界との対話」を交互にすることで、ハルシネーションを抑える

現代への影響

  • LangGraph の agent loop は ReAct の実装
  • OpenAI Agents SDK の agent loop も ReAct
  • Anthropic の tool use のメンタルモデルも ReAct
  • 「Augmented LLM の標準形」と言える

業務投入では、エージェントが内部で何を考えて何をしたかを Thought / Action / Observation の 3 列に分解してログるだけで、debug 可能性が大きく上がる。

2. Reflexion ── 自己反省ループ

Shinn et al. “Reflexion: Language Agents with Verbal Reinforcement Learning” (NeurIPS 2023) arxiv.org/abs/2303.11366

核心アイデア:失敗の結果を 言語的フィードバックに変換し、エピソードメモリに保存して次の試行で改善する。重み更新なしで「学習」する。

sequenceDiagram
    participant A as Agent (Actor)
    participant E as Environment
    participant R as Self-reflection
    participant M as Episodic Memory

    A->>E: 試行 1
    E->>A: 結果(失敗)
    A->>R: なぜ失敗したか考えろ
    R->>M: 「ツール X を呼ぶ前にバリデーションが必要だった」
    M->>A: 記憶を参照
    A->>E: 試行 2
    E->>A: 結果(成功)

なぜ重要か:従来の RL は重みを更新するため、コスト・時間・データ量が必要だった。Reflexion は 重みを更新せず、自然言語のメモを残すだけで改善する。LLM の文脈学習能力を最大限に活用したパターン。

現代への影響

  • 第1部 ch3 で扱った Effective Harness の CHANGELOG.md(失敗履歴ファイル)は、Reflexion の実装パターンそのもの
  • LangGraph の reflection サンプル
  • OpenAI Codex Auto-Review の retroactive review
  • Anthropic 8 パターンの Evaluator-Optimizer

業務投入では、「失敗を捨てずに記憶として残す」という設計判断が、長時間運用するエージェントの品質を底上げする。

3. Plan-and-Act ── 計画と実行の完全分離

Erdogan et al. “Plan-and-Act: Improving Planning of Agents for Long-Horizon Tasks” (ICML 2025) arxiv.org/abs/2503.09572

核心アイデアPlanner(高レベル計画)Executor(環境固有のアクション)完全に分離する。長期 horizon タスクで合成データを使って Planner を強化する。

第1部 ch3 でも扱ったが、本章ではパターンとして再整理する。

graph TB
    Goal[Goal]
    Planner[Planner<br/>大モデル<br/>計画 5-10 ステップ]
    Executor[Executor<br/>小モデル<br/>各ステップ実行]
    Env[Environment<br/>tools / browser / API]
    Replan[Replan loop]

    Goal --> Planner
    Planner -->|計画| Executor
    Executor -->|tool call| Env
    Env -->|observation| Executor
    Executor -->|step 完了| Replan
    Replan --> Planner

ベンチ実績:WebArena-Lite で 57.58%、WebVoyager(テキスト)で 81.36% という SOTA。

なぜ重要か

  • Planner と Executor を別モデルにできる(Lead に高価モデル、Sub に安価モデル
  • Planner だけを別途強化できる(合成データで訓練)
  • 長期 horizon でも計画書を保持できる

現代への影響

  • 本作の Orchestrator-Workers パターンの長 horizon 版
  • Magentic-One の Task Ledger / Progress Ledger はこの実装
  • Anthropic Multi-agent Research の Lead/Sub 分離も同型

4. Tree of Thoughts ── 探索的推論

Yao et al. “Tree of Thoughts: Deliberate Problem Solving with Large Language Models” (NeurIPS 2023) arxiv.org/abs/2305.10601

核心アイデア:思考を木として展開し、各ノードを評価して、必要なら backtracking で別の経路を探索する。

graph TB
    Root[問題]
    A1[アプローチ A]
    A2[アプローチ B]
    A3[アプローチ C]
    A1a[A の続き 1<br/>評価: 良]
    A1b[A の続き 2<br/>評価: 悪]
    A2a[B の続き 1<br/>評価: 中]
    
    Root --> A1
    Root --> A2
    Root --> A3
    A1 --> A1a
    A1 --> A1b
    A2 --> A2a
    
    A1a -.最良.-> Final[解]

なぜ重要か:単純な CoT は一直線の推論だが、現実の問題は分岐がある。ToT は AlphaGo のような探索を LLM の推論に持ち込んだ。

現代への影響

  • 数学・パズルなど探索的問題で部分的に採用
  • Self-Consistency(多パス + 多数決)の発展形
  • 業務投入では純粋な ToT は重すぎて使われにくいが、「複数案を評価して選ぶ」設計として影響を残している
  • 本作の Parallelization (voting) + Evaluator-Optimizer の合成パターンとして整理できる

5. Voyager ── スキル蓄積エージェント

Wang et al. “Voyager: An Open-Ended Embodied Agent with Large Language Models” (2023) arxiv.org/abs/2305.16291

核心アイデア:エージェントがスキル(実行可能コード)を蓄積する skill library を持ち、新しいタスクに直面したら過去のスキルを再利用する。Minecraft 環境で、自動カリキュラム + iterative prompting + skill library で長期にわたる探検をやり遂げた。

graph TB
    AC[Auto Curriculum<br/>次に何をするか]
    Agent[Voyager Agent]
    SL[(Skill Library<br/>過去スキルの DB)]
    Env[Minecraft]
    IP[Iterative Prompting<br/>失敗したら直す]

    AC -->|タスク提案| Agent
    Agent -->|search| SL
    SL -->|過去スキル| Agent
    Agent -->|action| Env
    Env -->|feedback| IP
    IP -->|改善| Agent
    Agent -.新スキル.-> SL

なぜ重要か:従来のエージェントは その場限りだった。Voyager は 「自分のスキルを溜めて再利用する」というメンタルモデルを提示した。

現代への影響

  • Anthropic Skills(progressive disclosure で metadata → SKILL.md 全体 → bundled files、と必要なときだけロード)の思想的ルーツ
  • Claude Code の Skills 機構
  • LangChain の Tool を「再利用可能な skill」として扱うメンタルモデル
  • 第3部(運用工学編)で扱う「self-improving agent」の先駆け

古典パターン × 8 パターンの対応マップ

5 つの古典が、本作の 8 パターンにどう継承されているかを整理する。

graph TB
    classic1[ReAct<br/>2022-10]
    classic2[Reflexion<br/>2023-03]
    classic3[Tree of Thoughts<br/>2023-05]
    classic4[Voyager<br/>2023-05]
    classic5[Plan-and-Act<br/>2025-03]

    P1[Augmented LLM]
    P2[Autonomous Agent Loop]
    P3[Evaluator-Optimizer]
    P4[Parallelization]
    P5[Orchestrator-Workers]
    P6[Harness + Sandbox]

    classic1 --> P1
    classic1 --> P2
    classic2 --> P3
    classic3 --> P4
    classic3 --> P3
    classic4 --> P6
    classic5 --> P5

これらは 時系列で進化してきた:

2022-10: ReAct          ── 推論と行動の交互(基盤)
2023-03: Reflexion      ── 失敗を言語化して学習(メモリ)
2023-05: Tree of Thoughts ── 探索的推論(並列)
2023-05: Voyager        ── スキル蓄積(永続性)
2025-03: Plan-and-Act   ── 長 horizon の計画分離(時間軸)
2026:    Harness+Sandbox ── 統合実行基盤(業界標準パターン化)

つまり、過去 4 年で「単一エージェントの推論」から「常時稼働するエージェント基盤」へ、研究と実装が共進化した

なぜ古典を読む価値があるか

「フレームワークの ChangeLog を読めば十分では?」という疑問に答える。

古典は「なぜそう設計されているか」を教える。たとえば:

  • LangGraph の interrupt() は何のためにあるか → Reflexion の自己反省を framework に持ち込んだから
  • OpenAI Agents SDK の Agent.as_tool() は何のためにあるか → Plan-and-Act の Executor を tool として呼ぶため
  • Anthropic Skills の progressive disclosure は何のためにあるか → Voyager の skill library を context window 制約下で実装するため

「なぜ」を知らないと、フレームワークの API を写経するだけになる。古典を読むと、「自分のユースケースでこの API を使うか / 使わないか」を判断できるようになる。

❌ アンチパターン:ReAct ループに無限に入る

症状
─────────
- エージェントが Thought → Action → Observation を 50 回繰り返しても完了しない
- 同じツールを繰り返し呼ぶ
- トークンコストが膨れる

根本原因
─────────
- ReAct ループの終了条件が曖昧
- 失敗履歴を残していない(Reflexion が組み込まれていない)
- 計画が無い(Plan-and-Act が組み込まれていない)

脱出法
─────────
1. ステップ上限を設ける(例:30 step で打ち切り)
2. CHANGELOG.md に失敗履歴を残す(同じ袋小路に入らない)
3. 5 step 以上のタスクは Plan-and-Act パターンに切り替え
4. ループ検知ロジック(同じ tool call が 3 回以上連続したら HITL に escalate)

業務投入の観点で重要な 3 点

  1. ReAct は Augmented LLM の標準形:エージェントが内部で何を考えて何をしたかを Thought/Action/Observation で 3 列分解してログる。これだけで debug 可能性が大きく上がる
  2. Reflexion の CHANGELOG.md パターンを必ず実装する:失敗を捨てずに記憶として残す。長時間運用するエージェントの品質を底上げする
  3. Plan-and-Act で Planner と Executor を分離:Lead に高価モデル、Sub に安価モデル。コスト効率が大きく変わる

次章への接続

ch5 では、HITL(Human-in-the-Loop)の設計を扱う。古典パターンを実装したエージェントを、業務に乗せるには人間との接点を設計する必要がある。差し込み箇所を 6 つ、実装パターンを 6 つ、リスクを 4 つで整理する。


この章のまとめ

  • 5 つの古典が現代のエージェント設計の基礎:ReAct / Reflexion / Plan-and-Act / Tree of Thoughts / Voyager
  • 時系列で「単一推論」→「常時稼働基盤」へ進化:2022 年 ReAct から 2026 年 Harness+Sandbox まで
  • 古典は「なぜそう設計されているか」を教える:フレームワークの API を写経でなく判断で使えるようになる
  • CHANGELOG.md(Reflexion)と Planner/Executor 分離(Plan-and-Act)は実装の現実解