このブログは、Anthropic が Claude Research 機能(複数の AI エージェントが協力して複雑な調査を行う機能)を開発した際に学んだ教訓を共有するものです。
エージェント(Agent) とは、LLM(大規模言語モデル)が 自律的にツールを使いながらループ処理を行う仕組みです。人間が 1 回指示を出すと、AI が自分で考えて、検索したり、情報を整理したり、次に何をすべきか判断しながら作業を進めます。
マルチエージェントシステム は、複数のエージェントが 協力して働くシステムです。
リサーチ作業には以下の特性があります:
固定されたパイプライン(「Aを調べる→Bを調べる→まとめる」のような決まった流れ)では、このような柔軟な作業に対応できません。
サブエージェントは以下の利点を提供します:
ブログでは興味深い例えが使われています:
「過去10万年で個人の人間の知性はそこまで進化していないが、人間社会は情報時代に指数関数的に能力を高めた。これは集合知と協調能力のおかげである」
つまり、個々のエージェントには限界があっても、複数が協力すれば遥かに大きな成果を出せるということです。
Research システムは以下の構造を採用しています:
┌─────────────────────────────────────────────────────────────┐
│ ユーザークエリ │
└─────────────────────────┬───────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ リードエージェント(Lead Agent) │
│ ・クエリを分析 │
│ ・戦略を立案 │
│ ・サブエージェントを生成・調整 │
└────────┬──────────┬──────────┬──────────┬───────────────────┘
↓ ↓ ↓ ↓
┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐
│Sub │ │Sub │ │Sub │ │Sub │ ← 並列実行
│Agent 1│ │Agent 2│ │Agent 3│ │Agent 4│
└────────┘ └────────┘ └────────┘ └────────┘
│ │ │ │
└──────────┴──────────┴──────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ リードエージェントが結果を統合 │
│ ・追加調査が必要か判断 │
│ ・必要なら新しいサブエージェントを生成 │
└─────────────────────────┬───────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ Citation Agent(引用エージェント) │
│ ・全ての主張に適切な出典を付与 │
└─────────────────────────┬───────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 最終レポート + 引用 │
└─────────────────────────────────────────────────────────────┘
マルチエージェントシステムでは、各エージェントがプロンプトで制御されるため、プロンプトエンジニアリングが最も重要な改善レバーです。
Anthropicでは、本番環境と同じプロンプト・ツールを使ったシミュレーション環境を構築し、エージェントがステップバイステップで作業する様子を観察しました。
観察で発見した問題:
正確なメンタルモデルを持つことで、最もインパクトのある変更が明らかになります。
サブエージェントには以下の情報が必要です。詳細なタスク説明がないと、エージェントは作業を重複させたり、ギャップを残したり、必要な情報を見つけられなかったりします
悪い例:「半導体不足について調べて」という曖昧な指示
プロンプトに明示的なスケーリングルールを埋め込みます:
| タスクタイプ | サブエージェント数 | ツール呼び出し回数 |
|---|---|---|
| 単純な事実確認 | 1 | 3-10回 |
| 直接比較 | 2-4 | 各10-15回 |
| 複雑なリサーチ | 10以上 | 責任を明確に分割 |
初期バージョンでは、単純なクエリへの過剰投資が頻繁に発生していました。
エージェント-ツールインターフェースは、人間-コンピュータインターフェースと同様に重要です。各ツールには明確な目的と説明が必要です。
問題例:Slack にしか存在しないコンテキストを Web 検索しようとするエージェント → 最初から失敗が運命づけられている
与えたヒューリスティクス:
悪いツール説明は、エージェントを完全に間違った方向に導きます。
Claude 4モデルは優れたプロンプトエンジニアとして機能します。
ツールテストエージェントの例:
結果:新しい説明を使うことで、後続のエージェントのタスク完了時間が 40%削減
エキスパートの人間のリサーチ戦略を模倣:
❌ 悪い例:最初から長く具体的なクエリ → 結果が少ない
✅ 良い例:
1. 短く広いクエリで開始
2. 何が利用可能か評価
3. 徐々に焦点を絞る
Extended Thinking(拡張思考モード)を制御可能なスクラッチパッドとして使用:
リードエージェントの思考内容:
サブエージェントの思考内容(Interleaved Thinking):
テストでは、拡張思考により指示追従・推論・効率性が向上しました。
参考: Building with extended thinking
初期エージェントは逐次検索で非常に遅かった。
導入した2種類の並列化:
結果:複雑なクエリのリサーチ時間が最大 90%削減(数時間→数分)
同じ開始点でも、まったく異なる有効なパスを取る可能性がある
→ 「正しいステップを踏んだか」ではなく、「正しい結果を達成したか」+「合理的なプロセスを踏んだか」を評価
Anthropic は約 20 個のクエリセットから始めました。数百のテストケースを待つよりも、少数のサンプルですぐにテストを始めることが重要です。
リサーチ出力は自由形式のテキストで、単一の正解がないため、プログラム的な評価が難しいです。
評価基準(ルーブリック):
出力:0.0-1.0のスコア + 合格/不合格
自動評価では見逃すエッジケースを発見:
実例:テスターが、エージェントが SEO 最適化されたコンテンツファームを、学術 PDF や個人ブログなどの権威あるソースより優先することに気づいた → ソース品質ヒューリスティクスをプロンプトに追加して解決
エージェントは長時間実行され、多くのツール呼び出しにわたって状態を維持します。
問題点:
対策:
エージェントは動的な決定を行い、同じプロンプトでも実行ごとに非決定的です。
問題例:「明らかな情報を見つけられない」というユーザー報告
解決策:本番環境でのフルトレーシングを追加し、個々の会話内容を監視せずに(プライバシー保護)、エージェントの決定パターンや相互作用構造を監視
エージェントシステムは、ほぼ継続的に実行される高度にステートフルなプロンプト・ツール・実行ロジックの網です。
デプロイ更新時の問題:
解決策:Rainbow Deployments(虹色デプロイ)
「AIエージェント構築では、ラストマイルがしばしば旅の大部分になる」
開発マシンで動くコードベースを、信頼性のある本番システムにするには大きなエンジニアリング努力が必要です。プロトタイプから本番へのギャップは予想以上に大きい。
マルチターン会話で永続的な状態を変更するエージェントの場合:
数百ターンに及ぶ会話では:
サブエージェントの出力をすべてリードエージェント経由で伝えると、情報が失われる可能性があります。
解決策:
メリット: