効果的なAIエージェントの構築:Anthropicによるエージェンティック・システムのガイド

Anthropicは、複雑なフレームワークよりも、シンプルで構成可能なパターンを使用してAIエージェントを構築することを推奨しています。最も成功している実装は、特定のタスクに対して適切な複雑さのレベルを優先しているからです。核となる哲学は、可能な限り最もシンプルな解決策(多くの場合、単一のLLM呼び出し)から開始し、結果が明らかに改善される場合にのみ複雑さを増していくことです。

ワークフローとエージェントの区別

Anthropicは、すべてのLLM駆動型システムを「エージェンティック・システム」として分類していますが、ワークフローとエージェントの間には重要なアーキテクチャ上の違いがあります。

  • ワークフロー: LLMとツールが定義済みのコードパスを通じてオーケストレーションされるシステム。これらは、明確に定義されたタスクに対して予測可能性と一貫性を提供します。
  • エージェント: LLMが自身のプロセスとツールの使用を動的に指示し、タスクの達成方法を制御し続けるシステム。これらは、必要なステップがハードコードできないオープンエンドな問題に最適です。

エージェンティック・システムの構成要素

すべてのエージェンティック・システムは、検索、ツール、およびメモリによって強化されたLLMであるaugmented LLMから始まります。Anthropicは、シンプルなクライアント実装を介してサードパーティ製ツールを統合するために、Model Context Protocol (MCP) を使用することを提案しています。

構成的なワークフロー

タスクを予測可能なステップに分解できる場合、ワークフローは完全な自律性に対する信頼できる代替手段となります。

  • Prompt Chaining: タスクを、各LLM呼び出しが前の出力を処理する一連のステップに分解します。これは、マーケティングコピーの生成とその後の翻訳のようなタスクに理想的です。
  • Routing: 入力を分類して、専門化されたフォローアップタスクに誘導します。これにより、関心の分離が可能になります。例えば、カスタマーサービスへの問い合わせを異なる専門的なプロンプトにルーティングしたり、簡単な質問を小さなモデル(例:Claude Haiku 4.5)に、難しい質問をより高性能なモデル(例:Claude Sonnet 4.5)に誘導したりできます。
  • Parallelization: 複数のLLM呼び出しを同時に実行します。これには、Sectioning(タスクを独立したサブタスクに分割し、例えばレスポンスの生成と並行してガードレール・チェックを実行するなど)と、Voting(高い信頼性を得るために、同じタスクを複数回実行して多様な出力を得る)が含まれます。
  • Orchestrator-Workers: 中央のLLMがタスクを動的に分解し、ワーカーLLMに委任します。これは、コーディング・プロジェクトにおける複数のファイルへの変更といった、サブタスクが予測不可能な複雑なタスクに使用されます。
  • Evaluator-Optimizer: 1つのLLMがレスポンスを生成し、別のLLMが反復的な洗練のためにフィードバックを提供します。ループ構造です。これは、文学的な翻訳や、複数回の分析を必要とする複雑な検索タスクに効果的です。

自律型エージェント

エージェントは、LLMが計画を立て、独立して動作しなければならないオープンエンドな問題に使用されます。彼らは、進捗を評価するために、環境からのフィードバック(ground truth)に基づいたツールの使用のループに依存します。

エージェントの主な特徴:

  • Dynamic Planning: エージェントは完了までの自身の経路を決定します。
  • Human-in-the-Loop: エージェントは、チェックポイントやブロッカーにおいて、人間のフィードバックのために一時停止できます。
  • Stopping Conditions: 制御を維持するために、エージェントは通常、最大反復回数の制限を含みます。

Anthropicは、SWE-benchタスクのためのコーディング・エージェントと、彼らの「computer use」リファレンス・実装を、自律型エージェントの主要な例として挙げています。

実装のためのベストプラクティス

フレームワーク vs. 直接的な API 使用

Claude Agent SDK、AWS Strands、Rivet、および Vellum のようなフレームワークは、低レベルのタスクを簡素化しますが、Anthropicは、それらがプロンプトとレスポンスを抽象化するレイヤーを作成し、デバッグを困難にする可能性があると警告しています。透明性を維持するために、LLM APIを直接使用することから始めることを推奨しています。

エージェント・コンピュータ・インターフェース (ACI) の設計

効果的なエージェントには、高品質なツール・ドキュメンテーションと設計が必要です。Anthropicは、ツールの定義をツール・エンジニアリングと同様の厳格さで扱うことを提案しています。

  • Avoid Formatting Overhead: モデルがインターネット上で自然に見てきた形式を使用してください。diffsの行数カウントのような、モデルに複雑な計算をさせたり、過度な文字列エスケープ(コードのための JSON など)をさせたりすることを避けてください。
  • Poka-yoke (Error-Proofing): ミスをより困難にするようにツール引数を設計してください。例えば、Anthropicは、相対パスではなく絶対パスを使用することを要求することで、SWE-benchエージェントを改善しました。これにより、共通の失敗点となる箇所を回避できました。
  • Clear Documentation: ツール定義の中に、使用例、エッジケース、および入力形式の要件を記述してください。

実力践的アプリケーション

Anthropicは、エージェンティック・システムのための高価値な領域を2つ特定しています。

  1. Customer Support: 会話型インターフェースと、顧客データを取得しアクション(例:返金処理)を実行するためのツールを組み合わせたもの。成功は、ユーザーが定義した解決策によって測定されます。
  2. Coding Agents: コードの解決策は自動テストを通じて検証可能であるため、非常に効果的です。これにより、エージェントが客観的なフィードバックに基づいて反復的に動作することが可能になります。

成功のための核となる原則

信頼できる、かつメンテナンス可能なエージェントを構築するために、Anthropicは3つの原則を強調しています。

  1. Simplicity: シンプルな設計を維持し、不必要な複雑さを避ける。
  2. Transparency: エージェントの計画ステップを明示的に示す。
  3. ACI Optimization: モデルがツールを完璧に使いこなせるように、ツール・ドキュメンテーションとテストを慎重に設計する。

Sources

関連