「Building Effective Agents」を実務に落とす — Anthropic 公式ガイドの 5 パターンと設計原則

「Building Effective Agents」を実務に落とす — Anthropic 公式ガイドの 5 パターンと設計原則

Anthropic が 2024 年 12 月に公開した Building effective agents は、AI エージェント設計の 定本 です。2026 年現在、業界のほぼすべてのエージェント実装は、この記事で定義された 5 パターンのどれか(または組み合わせ)になっています。

ただし原文は英語で、しかも「どう実装するか」より「どう設計するか」の抽象度が高いので、実務に落とすには解釈が要ります。

本稿では、

  1. ワークフローとエージェントの違い
  2. 5 つの基本パターンそれぞれの定義・用途・実装
  3. 「フレームワークに頼らない」思想の本当の意味
  4. MulmoTerminal など実製品での具体例

を日本語で解説します。原文を読む前に本稿を、読んだあとに本稿を、どちらでも読み物になるように書きました。

ワークフロー と エージェント は違う

Anthropic はまず、「agentic systems」 という傘用語を定義し、その下に 2 つを置きます。

ワークフロー (Workflows)

LLM とツールが事前定義されたコード経路を通じてオーケストレーションされるシステム

エージェント (Agents)

LLM が動的に自身のプロセスとツール使用を指揮し、タスク達成方法を自ら統制するシステム

実務的な見分け方: コードを書いていて「次は X を呼び出し、その結果で Y を呼ぶ」のような if-else がたくさん出てきたら ワークフロー。LLM が「次に何するか」を自分で決めているなら エージェント。

エージェントを使うべき時・使うべきでない時

Anthropic は**「できるならワークフロー、無理ならエージェント」** という保守的な立場です。

エージェントを使うべき時

エージェントを避けるべき時

金融の決済バックエンドや医療の意思決定 のような領域では、エージェントは慎重に。これらは明確な経路を書き下すべき場所です。

5 つの基本パターン

パターン 1: Prompt Chaining(連鎖型)

定義: タスクを段階的に分解し、前のステップの出力を次のステップに渡す。

input → LLM step 1 → output 1 → LLM step 2 → output 2 → ... → final

使いどころ:

例:

実装: Python / TypeScript で 20 行程度。LangChain を使う必要はなく、for ループで十分。

パターン 2: Routing(振り分け型)

定義: 入力を分類し、適切な特化プロンプト or 特化モデルへ振り分ける。

input → classifier LLM → category → specialist LLM A / B / C → output

使いどころ:

例:

実装: 分類する LLM 呼び出し 1 回 → 結果で switch して適切な specialist を呼ぶ。これも 30 行程度。

パターン 3: Parallelization(並列型)

定義: 複数のタスクを同時実行し、結果を集約する。

2 つのサブパターン:

3a. セクショニング

独立したサブタスクを並列実行。

input → split → [task A / task B / task C 並列] → merge → output

例: 大きなドキュメントのレビューを「文法」「論理」「ファクト」で並列チェック。

3b. 投票 (Voting)

同じタスクを複数回実行して信頼度を上げる。

input → [LLM run 1 / LLM run 2 / LLM run 3 並列] → majority vote → output

例: コンテンツの安全性判定、重要な分類タスク、脆弱性レビュー。

実装: Promise.all や asyncio.gather で並列実行。これも 20-30 行。

パターン 4: Orchestrator-Workers(統括型)

定義: 中央の orchestrator LLM が、動的にサブタスクを分解・委譲し、worker LLM の結果を統合する。

input → orchestrator → (worker 1, worker 2, worker 3) → orchestrator → output

parallelization との違い: サブタスクが入力に応じて動的に決まる。設計時には「何体の worker が要るか」が分からない。

使いどころ:

例: Anthropic 自身の Research 機能 はこのパターン。

実装: orchestrator が tool call で worker を起動する。10-15 ファイルくらいの中規模コード。

パターン 5: Evaluator-Optimizer(評価改善型)

定義: 1 体の LLM が回答生成、別の LLM が評価・フィードバック、を繰り返す。

input → generator → draft → evaluator → feedback → generator → draft 2 → ... → final

使いどころ:

例:

実装: generator と evaluator を別プロンプトで分け、ループで回す。終了条件(スコア閾値・ループ回数上限)を明示する。

「フレームワークに頼らない」の本当の意味

Anthropic は LangChain / CrewAI / AutoGen / LlamaIndex などのフレームワークに対して、明確に 「最初は使わないほうが良い」 という立場を取っています。

なぜか

「使うな」ではなく「必要になるまで使うな」

これはフレームワーク全否定ではありません。「API を直接叩くところから始めて、必要性が明確になってから導入する」のが推奨される順序。

実際の判断基準:

フレームワークが実際に役立つケース

これらが本当に必要な段階になったら導入する。先回りして入れると、不要な複雑性で詰まります。

ACI: Agent-Computer Interface の設計

Anthropic が強調するもう一つの原則は ACI (Agent-Computer Interface) の設計。

ツール設計には、人間コンピュータインタフェース(HCI)と同等の投資をするべき

具体例:

ツール名・パラメータ名

引数の形式

description の書き方

具体的な改善例 (Anthropic の実験)

SWE-bench のエージェントで、ファイル操作ツールが相対パスを使うと間違えやすいことが発覚。パラメータを絶対パス限定にしたら完全に解決。

パラメータ 1 つの型変更が、エージェント全体の信頼性を変える。ACI の設計はそれくらい効きます。

MulmoTerminal での実例

MulmoTerminal は、これらの原則の 具体化 として参考になります。

Routing パターン

Parallelization パターン

Orchestrator-Workers パターン

Evaluator-Optimizer パターン

ACI の実装

まとめ

この 1 本を読んで、ちゃんと咀嚼する時間 が、2026 年のエージェント開発者にとっての最大の ROI です。

関連リンク


Singularity Society はテクノロジー集団として MulmoClaude / MulmoTerminal / MulmoCast を開発しています。エンジニア・起業家向けの実践プログラム BootCamp も運営しています。

この記事をシェア

関連記事

記事一覧に戻る