Building Effective Agents — 図解
Anthropic / 2024
Anthropic Engineering ・ 図解サマリー

効果的なAIエージェントの
作り方

数十チームの実装から見えた結論はシンプルだった——うまくいくのは複雑なフレームワークではなく、単純で組み合わせ可能なパターン。その7つの型を図で読み解きます。

出典: anthropic.com/engineering/building-effective-agents — Erik S. & Barry Zhang(2024/12/19)
LLMの世界での成功は、最も高度なシステムを作ることではない。「あなたの課題に合った、正しいシステム」を作ること。まず単純なプロンプトから始め、評価で磨き、単純な解では足りないと確かめてから、はじめて複雑さを足す。
この記事を貫く1本の軸
Workflow
ワークフロー
LLMとツールをあらかじめ書いたコード経路で制御。予測可能・一貫。
Agent
エージェント
LLMが自分で手順とツール使用を判断。柔軟・自律。

01

「エージェント」とは何か

Anthropicはこれら全体を agentic systems(エージェント的システム)と呼び、そのうえで設計上の重要な線を1本引きます。

WORKFLOWワークフロー

決められた経路を通る。LLMとツールが、開発者が書いたコードのフローに沿って動く。分岐も順序も人間が設計する。
予測可能性と一貫性が武器。定義済みのタスク向き。

AGENTエージェント

経路を自分で決める。LLMが自らプロセスとツール使用を動的に指揮し、タスクの進め方を握り続ける。
柔軟性とモデル主導の判断が武器。規模のある不定形タスク向き。

02

いつ使う(そして使わない)か

推奨は一貫して「最も単純な解から始め、必要になったときだけ複雑さを足す」。エージェント的システムは、性能と引き換えにレイテンシとコストを払う取引だと意識する。

1

まず、そもそも作らない選択

多くの用途では、単一のLLM呼び出しを検索(retrieval)と文脈内の例(in-context examples)で最適化するだけで十分。

2

単一呼び出しで足りなければ → ワークフロー

タスクが明確に定義できるなら、予測可能で一貫したワークフローが向く。

3

手順が読めない・分岐が多いなら → 動的ワークフロー

入力に応じてサブタスクが変わる場合はオーケストレーター型などへ。

4

柔軟性と規模が要るなら → エージェント

手数を事前に固定できないオープンな問題で、モデルの判断に一定の信頼が置けるとき。自律ゆえコスト増・エラーの連鎖に注意し、サンドボックスでの十分な検証とガードレールを。

03

フレームワークとの付き合い方

Claude Agent SDK、Strands(AWS)、Rivet、Vellum など。着手は速くなるが、抽象の層がプロンプトと応答を覆い隠し、デバッグを難しくすることがある。

推奨は「まずLLM APIを直接叩く」。多くのパターンは数行で書ける。フレームワークを使うなら、必ずその内部コードを理解すること——中身への誤った思い込みは、顧客のつまずきの典型的な原因。

04

基本ブロック・ワークフロー・エージェント

土台となる拡張LLMから始め、単純な合成ワークフロー → 自律エージェントへと、少しずつ複雑さを上げていく7つの型。図の凡例は 青=決定論的な経路琥珀=動的・自律・フィードバック

00
Building block

拡張LLM(The Augmented LLM)

土台ブロック
In LLM call Out Retrieval Tools Memory query results

The augmented LLM — 検索・ツール・メモリで強化された1つのLLM呼び出し

これは何か

すべてのエージェント的システムの基本部品。LLMが自分で検索クエリを生成し、適切なツールを選び、何を記憶に残すかを判断する。以降の全パターンは「各LLM呼び出しがこの拡張機能を持つ」前提で組む。

実装の勘所

①自分のユースケースに合わせて機能を仕立てる ②LLMにとって使いやすく文書化されたインターフェイスにする。実装手段の一つが MCP(Model Context Protocol)

01
Workflow

プロンプト連鎖(Prompt Chaining)

ワークフロー
In LLM 1 Gate LLM 2 LLM 3 Out Fail → exit

各ステップが前の出力を受け取る直列。途中に「ゲート」で軌道チェックを挟める

こんなときに

タスクを固定のサブタスクに綺麗に分解できるとき。1回あたりを易しくして精度を上げる代わりに、レイテンシを払う取引。

  • マーケコピーを生成 → 別言語へ翻訳
  • アウトライン作成 → 基準を満たすか検査 → 本文執筆
02
Workflow

ルーティング(Routing)

ワークフロー
In Router分類 / classify LLM A LLM B LLM C Out

入力を分類し、専門化した後続タスクへ振り分ける(関心の分離)

こんなときに

別々に扱ったほうがよい明確なカテゴリがあり、分類を(LLMでも従来の分類器でも)正確にできるとき。1種類の入力向けの最適化が他を悪化させる問題を避けられる。

  • 問い合わせ(一般/返金/技術)を別プロセスへ振り分け
  • 易しい質問は Haiku、難しい質問は Sonnet へ振り、性能とコストを最適化
03
Workflow

並列化(Parallelization)

ワークフロー
In Coord.分配 LLM LLM LLM Aggregate集約 Out

複数LLMが同時に働き、出力をプログラム的に集約する

2つの型
  • Sectioning(分割):独立サブタスクを並列実行
  • Voting(投票):同じタスクを複数回走らせ多様な出力を得る
  • 分割:一方が応答、他方が不適切コンテンツを監視(ガードレール)
  • 投票:複数プロンプトでコードの脆弱性をレビューし、閾値で判定
04
Workflow

オーケストレーター & ワーカー

ワークフロー
In Orchestr.動的に分解 Worker Worker Worker Synth.結果を統合 Out — — 破線=実行時に決まる

中央LLMが動的にタスクを分解 → ワーカーへ委任 → 結果を統合

並列化との違い

形は似ているが決定的に違うのは柔軟性。サブタスクは事前定義されず、入力に応じてオーケストレーターがその場で決める(破線)。手数を予測できないタスク向き。

  • 毎回複数ファイルを変更するコーディング(変更数・内容がタスク依存)
  • 複数ソースから情報を集めて分析する検索タスク

▶ 実務での実装例:この型を特許の品質分析に接続する

05
Workflow

評価者 & 最適化者(Evaluator-Optimizer)

ワークフロー
In Generator生成する Evaluator評価・批評 Out solution Reject + feedback(ループ) Accept

一方が生成、もう一方が評価とフィードバック——人の推敲プロセスに似たループ

こんなときに

明確な評価基準があり、反復的な改善が測定可能な価値を生むとき。適合のサインは①人が言語化したフィードバックで応答が確かに良くなる ②LLMがそのフィードバックを出せる。

  • 文芸翻訳:訳者LLMが取りこぼす機微を評価LLMが批評
  • 複数ラウンドが要る検索:さらに検索すべきか評価者が判断

▶ 実務での実装例:Reflexionと「作る役/評価する役」の非対称性

06
Agent

自律エージェント(Autonomous Agent)

エージェント
Human指示・判断 LLM Agent計画・行動・自己修正 Environmenttools / 実行結果 開始 / start checkpoint で確認 action feedback(ground truth) Stop 条件

人の指示で開始 → LLMが環境からの「ground truth」を頼りにループで自律実行 → 停止条件で終了

こんなときに

必要な手数を予測できず、経路をハードコードできないオープンな問題。多ターン動くため、モデルの判断に一定の信頼が要る。実体は「環境からのフィードバックを頼りにツールを使うLLMのループ」と、しばしばシンプル。

例 / 注意

SWE-bench のコード課題、computer use の実装など。自律ゆえ高コスト・エラー連鎖のリスクがあり、サンドボックス検証とガードレール、ツール設計が決定的に重要。


05

組み合わせ、そして仕立てる

これらは処方箋ではなく共通パターン。用途に合わせて形を変え、組み合わせてよい。成功の鍵は他のLLM機能と同じ——性能を測り、実装を反復すること。そして結果が明確に改善するときだけ複雑さを足す。

06

まとめ:3つの中核原則

01

Simplicity
単純さ

エージェントの設計はできるだけ単純に保つ。

02

Transparency
透明性

エージェントの計画ステップを明示し、可視化する。

03

ACI
丁寧な接面

ツールの文書化とテストで、エージェント–コンピュータ接面(ACI)を作り込む。

フレームワークは着手を速めるが、本番に向かうにつれ抽象の層を減らし、基本部品で組むことを恐れないこと。これらの原則に従えば、強力なだけでなく信頼でき・保守しやすく・ユーザーに信頼されるエージェントが作れる。
A1

付録①:実践でのエージェント

価値が最も出るのは、会話と行動の両方を要し、成功基準が明確で、フィードバックループがあり、人の監督を組み込めるタスク。代表例が2つ。

A. Customer support

カスタマーサポート

  • 会話の流れに沿いつつ、外部情報・行動へのアクセスが要る
  • 顧客データ・注文履歴・KB記事をツールで引ける
  • 返金やチケット更新をプログラム的に実行
  • 成功を「解決」で明確に測れる(成功課金モデルも登場)
B. Coding agents

コーディングエージェント

  • 解が自動テストで検証可能
  • テスト結果をフィードバックに反復できる
  • 問題空間が明確・構造的
  • 出力品質を客観的に測れる(ただし人のレビューは依然重要)
A2

付録②:ツールのプロンプト設計(ACI)

どのシステムでもツールは重要部品。ツール定義にも、全体プロンプトと同じだけの設計努力を。人間向けUI(HCI)に注ぐ労力と同じだけ、エージェント向け接面(ACI)に投資する。

「考える」余地を与える

書き始めて詰む前に、モデルに十分なトークン(思考の余地)を残すフォーマットにする。

自然な形式に近づける

ネット上のテキストに自然に現れる形式に寄せる。差分(diff)より全文書き換えが楽なことも。

オーバーヘッドを消す

数千行の行数を数え続ける・JSON内でエスケープするような余計な負荷を課さない。

後輩へのdocstringのつもりで

使用例・エッジケース・入力形式・他ツールとの境界を書く。ワークベンチで試して反復。

ポカヨケ(Poka-yoke)——間違えにくいように引数そのものを変える。実例:エージェントがルートから移動した後、相対パスでミスをした。ツールを絶対パス必須に変えたら、モデルは完璧に使いこなした。
※SWE-bench用エージェントでは、全体プロンプトよりツール最適化に多くの時間を割いたという。