Anthropic社から学ぶAIエージェント活用の枠組み

# 「Building Effective Agents」を知っていますか？

Claudeの開発元として知られるAnthropic社が公開したペーパー「Building Effective Agents」をご存知でしょうか？

「Building Effective Agents」は、Anthropic社が過去1年の間、数十ものチームと連携してきた中で培った、
エージェントシステムの設計と実装に関する実践的なアドバイスを提供しています。

この記事では、このペーパーの要点を振り返りつつ、企業への導入を支援する立場から実践的な視点を交えて解説します。

https://www.anthropic.com/research/building-effective-agents

# エージェントの定義と分類

エージェントは、以下の2種類に分類されます：
- **ワークフロー**: LLMとツールが事前定義されたコードパスに従って連携するシステム
- **エージェント**: LLMが自律的にプロセスやツールの使用を決定し、タスクを遂行するシステム

# 「Building blocks（構成要素）」「Workflows（ワークフロー）」「Agents（エージェント）」

エージェントの設計と実装を「Building blocks（構成要素）」「Workflows（ワークフロー）」「Agents（エージェント）」の3つに分けて説明しており、それぞれが開発現場での課題解決に直結する内容です。以下では、それぞれの要素について具体的に解説します。

## 1. Building Blocks（構成要素）：拡張されたLLMの基盤

エージェント技術の基礎となるのが、拡張された大規模言語モデル（LLM）です。このペーパーでは、LLMを以下のような機能で拡張することが推奨されています。
- **情報取得（Retrieval）**: 必要な情報を検索し活用する能力
- **ツール利用（Tool Usage）**: 外部ツールとの連携機能。
- **記憶（Memory）**: 過去のコンテキストを保持して再利用する仕組み

これらの拡張機能は、特定のユースケースに合わせて調整されるべきであり、シンプルで理解しやすいインターフェースの提供が重要です。Anthropicでは「Model Context Protocol」を例に挙げ、LLMとサードパーティツールを容易に統合する方法を示しています。

- **ユースケース**:
    - 顧客からの問い合わせに対して、最新の製品情報を検索し、迅速に回答する。
    - FAQデータベースと連携し、定型的な質問に即座に対応する。
    - 過去の問い合わせ履歴を参照し、パーソナライズされたサポートを提供する。

## 2. Workflows（ワークフロー）：タスク遂行の構造化

「ワークフロー」は、LLMとツールを組み合わせて特定のタスクを実行するための設計手法を指します。ペーパーでは、以下のようなワークフローパターンが紹介されています。
- **プロンプトチェイン**
タスクを複数のステップに分解し、各ステップでLLMの出力を活用する手法。正確性を高めるため、途中でプログラムによるチェックを行うことも可能です。
  - **ユースケース**:
    - 複雑な文書の要約作成において、段階的に要約を生成し、各段階で内容の正確性を検証する。
    - 製品レビューの分析で、まず肯定的・否定的な意見を分類し、その後、各カテゴリの主要なトピックを抽出する。
- **ルーティング**
入力を分類し、それぞれに特化したタスクへ振り分ける手法。カテゴリごとに特化したプロンプトを用いることで、複雑なタスクに対応できます。
  - **ユースケース**:
    - カスタマーサポートで、問い合わせ内容を技術サポート、販売、一般情報などのカテゴリに自動分類し、適切な担当者に振り分ける。
    - ソーシャルメディアの投稿を分析し、マーケティング、顧客フィードバック、クレームなどに分類して対応策を検討する。
- **並列処理**
タスクを同時進行で処理し、その結果を統合するアプローチ。複数の視点を得る必要がある場合やスピードを重視する際に効果的です。
  - **ユースケース**:
    - ニュース記事の要約で、複数のセクションを同時に要約し、最終的に統合して全体の要約を作成する。
    - 製品の市場調査で、異なる市場セグメントのデータを並行して分析し、総合的なレポートを迅速に作成する。
- **オーケストレータ-ワーカー構造**
中央のLLMがタスクを動的に分解し、ワーカーモデルに指示を出す方法。タスクが事前に予測できない場合に適しています。
  - **ユースケース**:
    - カスタマイズされた商品推薦システムで、ユーザーの嗜好に基づき、オーケストレータが推薦基準を設定し、ワーカーが具体的な商品を選定する。
    - 複雑なデータ分析プロジェクトで、オーケストレータが全体の分析計画を立て、各ワーカーが特定の分析タスクを実行する。
- **評価-最適化ループ**
1つのLLMが出力を生成し、別のLLMが評価・フィードバックを行うプロセス。このループを繰り返すことで、成果物を洗練させていきます。
  - **ユースケース**:
    - コード生成において、最初のLLMがコードを作成し、次のLLMがそのコードをレビュー・改善点を提案する。
    - クリエイティブな文章作成

これらのパターンを活用することで、タスクの構造化が可能となり、予測可能性や一貫性を向上させることができます。

## 3. Agents（エージェント）：動的制御を持つ自律システム

エージェントは、ユーザーの指示をもとにタスクを動的に遂行し、自律的にツールを選択・活用するシステムです。エージェント設計のポイントは以下の通りです。
- **計画と実行の自律性**: 人間の入力を受けて計画を立て、自律的にタスクを実行します
- **「Ground truth」の取得**: 各ステップで外部環境から得られる真実（例：ツールの出力やコードの実行結果）を基に進捗を評価します
- **柔軟性の必要性**: 複雑なタスクにおいては、モデル主導で決定を行う柔軟性が求められます

エージェントは、特に高度な柔軟性が求められるタスクや、大規模な自律的オペレーションに適しています。

# 私の学び
## 1. 「ワークフロー」と「エージェント」という枠組み
従来、エージェントという言葉はその意味が広すぎるがゆえに、説明や実装も複雑化しがちでした。

しかし、このペーパーでは「ワークフロー」と「エージェント」という枠組みでエージェント技術を捉え直しています。

このアプローチは、エージェントを自律性のみに限定せず、「ワークフロー」の重要性を同時に強調する点で、非常に実用的です。

特に、業務で複雑なタスクを遂行する際、「ワークフロー」が欠かせないことを改めて認識しました。

## 2. 細分化されたグルーピングのわかりやすさ
「ワークフロー」と「エージェント」をさらに具体的なグループに分けており、ユースケースを基に各グループを理解しやすい構造になっています。

このグルーピングにより、自分の業務フローに適用できるかどうかを逆引きで考えられる点も魅力的です。

例えば、新しいエージェント設計に取り組む際、どの部分を「ワークフロー」に任せ、どの部分で自律性を発揮させるべきかを明確に判断できます。


## エージェント導入における現場での課題
「エージェント」（本記事ではエージェントシステムを指します）という単語は、多くの企業様内で注目を集めており、期待を込めて導入をご依頼いただくケースが増えています。

しかし、実際に実装を進めた後、導入に向けた会話やフィードバックは「ワークフロー」を前提としたものが多い傾向にあります。

これは、導入先の期待値が「エージェント」そのものよりも、業務の流れを整える「ワークフロー」に近い場合が多いためです。また、導入を担当する部門の方々にとっては、「ワークフロー」の方が具体的にイメージしやすく、フィードバックも行いやすいのではないかと考えられます。

実際、「エージェント」は迅速に形にすることができる一方で、その評価を進めながらカスタマイズしていくプロセスは難しい部分もあります。そのため、企業導入の観点では、「ワークフロー」を基盤として業務部門と会話を進めることが重要です。

さらに理想的には、「ワークフロー」と「エージェント」を組み合わせたハイブリッド構成を目指すことが、企業のニーズに柔軟に対応しながら、より効果的な導入を実現する方法になると考えています。