エージェント通信プロトコル (ACP) を使用したマルチエージェント システムの構築

エージェント通信プロトコル (ACP) を使用したマルチエージェント システムの構築

人工知能の世界が拡大するにつれ、開発者は単一の AI モデルから、多数の専門エージェントが協力して問題を解決する複雑なマルチエージェント システムまで、多岐にわたります。

この変化は大きな課題をもたらします。 異なるチームが異なるツールを使用して構築した可能性のあるこれらの異なるエージェントを、どのように効果的に相互に通信させるのでしょうか?ここで標準化されたプロトコルが不可欠になります。 

エージェント通信プロトコル(ACP)は、エージェント間の通信に統一された言語を提供することで、システムの拡張性、柔軟性、管理性を向上させるソリューションを提供します。

このガイドでは、エージェント通信プロトコルを使用して拡張性の高いマルチエージェント通信システムを構築するための詳細な手順を説明します。

エージェント通信プロトコル (ACP) とは何ですか?

エージェント通信プロトコル(ACP)は、エージェント間の通信方法を標準化するために設計されたオープンプロトコルです。 AI エージェント 互いにコミュニケーションをとる。英語や中国語のような共通言語をソフトウェアエージェント向けに考えてみてください。

建築ライト f865806d00
画像ソース: IBM 蜂AI プロジェクト

これは、エージェントがどのプログラミング言語やフレームワークで構築されたかに関わらず、エージェントがシームレスに連携できる統一されたインターフェースを提供します。これにより、マルチエージェントシステムの開発における大きな課題が解決されます。マルチエージェントシステムでは、エージェントの統合に、エージェントが更新されるたびに動作しなくなる、脆弱なカスタムコードが必要となることが多かったのです。

image?url=https%3A%2F%2Fresearch ウェブサイト prod cms uploads.s3.us.cloud オブジェクト ストレージ.appdomain.cloud%2FBee AI アニメーション 8a662c5834

IBM Researchによって開発され、現在はLinux Foundationの一部となっている 蜂AI プロジェクトACPはシンプルながらも強力なクライアントサーバーアーキテクチャに基づいて構築されており、 AI クライアント クラウドホストツールと連携し、リアルタイムでモジュール化されたタスク実行を可能にします。仕組みは以下のとおりです。

An AI エージェント(Crewのようなフレームワークで構築)AI または Smolagents は ACP サーバー内に「ラップ」されます。
このサーバーはホストとして機能し、エージェントを検出およびアクセス可能にします。
ACP クライアントとして機能する他のエージェントまたはプロセスは、このサーバーに標準化されたリクエストを送信して、ホストされているエージェントと対話することができます。

この構造により、システム全体を書き換えることなく、エージェントを新しいバージョンまたは別のフレームワーク上に構築されたまったく異なるエージェントに簡単に交換できます。

ACPの基本原則

ACPを実装するには、その基本的な構成要素を理解する必要があります。このプロトコルは、いくつかの主要コンポーネントを通じて通信を標準化し、すべてのメッセージが構造化され、明確で、実行可能であることを保証します。

1

ACPMessage データクラス

このプロトコルの核となるのは ACPMessage データクラス。これは、エージェント間で送信されるすべてのメッセージの標準化されたフォーマットです。これにより、すべての通信パケットが、正しく理解され、ルーティングされるために必要な情報を含むことが保証されます。典型的な ACPMessage 含まれています:

送信者と受信者: メッセージの送信者と宛先の受信者を識別します。
パフォーマンス: メッセージの最も重要な部分であり、送信者を示す's 意図。
内容: 送信される実際のデータまたは命令。
会話ID: 関連するメッセージを 1 つの会話スレッドにグループ化するための一意の識別子。
2

パフォーマティブ

パフォーマティブとは、メッセージの目的を定義する動詞です。受信側に対して、どのような行動や反応が期待されるかを伝えます。一般的なパフォーマティブには、以下のようなものがあります。

クエリ: 情報を尋ねます。
リクエスト: エージェントに特定のアクションを実行するように要求します。
知らせる: 返答を期待せずに情報を提供します。
購読: トピックの今後の更新を要求します。
放送: 利用可能なすべてのエージェントにメッセージを送信します。
3

ACPAgent

その ACPAgent システムに参加するあらゆるエージェントの基本クラスです。エージェントを定義します。's アイデンティティとその中核機能(送受信など) ACPMessages各エージェントには一意の名前または ID があり、システムはこれを使用してエージェントにメッセージをルーティングできます。

4

ACPメッセージブローカー

多数のエージェントを持つシステムでは、すべてのメッセージトラフィックを処理するための中央ポストオフィスが必要です。 ACPMessageBroker この目的を果たす。それは's エージェントからのメッセージを受信し、正しい受信者に確実に配信する中央ルーティングコンポーネント。このブローカーアーキテクチャは、システムの拡張性と管理性を高める鍵となります。

初めてのACPシステムのためのコーディングガイド

ACPシステム

それでは、実際に手を動かして、シンプルなACP準拠のメッセージングシステムをPythonで構築してみましょう。このチュートリアルでは、元の実装で示されているように、自然言語処理にGoogleのGemini APIを使用します。

ステップ1: 環境の設定

まず、Googleとやりとりするために必要なPythonライブラリをインストールする必要があります。's 生々しい AI モデル。

pip install google-generativeai

リクエストを認証するために、APIキーを設定する必要もあります。

ステップ2: コアACPコンポーネントの定義

それでは、ACPの基本的な概念をPythonコードに翻訳してみましょう。まずはメッセージ構造を定義することから始めます。

# Define the ACP Message Structure using a dataclass
from dataclasses import dataclass, field
from typing import Any, Dict, Optional
import uuid

@dataclass
class ACPMessage:
    """A standard message format for Agent Communication Protocol."""
    sender: str
    receiver: str
    performative: str
    content: Any
    message_id: str = field(default_factory=lambda: str(uuid.uuid4()))
    conversation_id: Optional[str] = None
    metadata: Dict[str, Any] = field(default_factory=dict)

    def create_reply(self, sender: str, performative: str, content: Any) -> 'ACPMessage':
        """Helper to create a reply to this message."""
        return ACPMessage(
            sender=sender,
            receiver=self.sender,
            performative=performative,
            content=content,
            conversation_id=self.conversation_id or self.message_id
        )

次に、 ACPAgent クラス。各エージェントには名前と、受信メッセージを処理するメソッドがあります。

# Define the base class for an ACP Agent
class ACPAgent:
    """Base class for an agent in an ACP system."""
    def __init__(self, name, broker):
        self.name = name
        self.broker = broker
        self.broker.register_agent(self)

    def send_message(self, message: ACPMessage):
        """Sends a message through the broker."""
        print(f"[{self.name}] Sending message to {message.receiver}: {message.performative}")
        self.broker.route_message(message)

    def receive_message(self, message: ACPMessage):
        """Processes an incoming message."""
        print(f"[{self.name}] Received message from {message.sender}: {message.performative}")
        # Agent-specific logic goes here
        pass

最後に、 ACPMessageBroker コミュニケーションを管理する。

# Define the Message Broker for routing messages
class ACPMessageBroker:
    """A central broker to route messages between agents."""
    def __init__(self):
        self.agents: Dict[str, ACPAgent] = {}

    def register_agent(self, agent: ACPAgent):
        """Adds a new agent to the network."""
        print(f"[Broker] Registering agent: {agent.name}")
        self.agents[agent.name] = agent

    def route_message(self, message: ACPMessage):
        """Routes a message to the intended recipient."""
        recipient_agent = self.agents.get(message.receiver)
        if recipient_agent:
            recipient_agent.receive_message(message)
        else:
            print(f"[Broker] Error: Agent '{message.receiver}' not found.")

ステップ3: エージェントの作成と実装

フレームワークが整ったので、専門的なエージェントを作成できます。質問に答えることができるリサーチャーエージェントと、そのリサーチャーエージェントに問い合わせを行うマネージャーエージェントを作成してみましょう。

google.generative をインポートするai ジェナイとして

# Configure your Gemini API key
# genai.configure(api_key="YOUR_API_KEY")

class ResearcherAgent(ACPAgent):
    """An agent that uses a generative model to answer queries."""
    def __init__(self, name, broker):
        super().__init__(name, broker)
        # self.model = genai.GenerativeModel('gemini-pro')

    def receive_message(self, message: ACPMessage):
        super().receive_message(message)
        if message.performative == "QUERY":
            question = message.content
            # For demonstration, we'll use a canned response.
            # In a real scenario, you would call the model:
            # response_text = self.model.generate_content(question).text
            response_text = f"My analysis on '{question}' indicates a positive outlook."

            reply = message.create_reply(
                sender=self.name,
                performative="INFORM",
                content=response_text
            )
            self.send_message(reply)

class ManagerAgent(ACPAgent):
    """An agent that delegates tasks and queries other agents."""
    def receive_message(self, message: ACPMessage):
        super().receive_message(message)
        if message.performative == "INFORM":
            print(f"[{self.name}] Got a response: {message.content}")

    def start_task(self, topic: str):
        """Starts a new task by querying the researcher."""
        print(f"[{self.name}] Initiating research on: {topic}")
        query_message = ACPMessage(
            sender=self.name,
            receiver="Researcher_1",
            performative="QUERY",
            content=f"What is the market trend for {topic}?",
            conversation_id=str(uuid.uuid4())
        )
        self.send_message(query_message)

ステップ4: システムの実行

さあ、's すべてをまとめて、実際に動作する様子を見てみましょう。

# Main execution block
if __name__ == "__main__":
    # 1. Initialise the broker
    message_broker = ACPMessageBroker()

    # 2. Create and register agents
    manager = ManagerAgent("Manager_Alpha", message_broker)
    researcher = ResearcherAgent("Researcher_1", message_broker)

    # 3. Kick off a task
    manager.start_task("AI-powered SEO tools")

このコードを実行すると、マネージャーエージェントがクエリを送信し、ブローカーがそれを研究者にルーティングし、研究者がそれを処理して応答を送信し、ブローカーが応答をマネージャーにルーティングするという一連の流れが確認できます。このシンプルなやり取りは、堅牢で疎結合な通信フローを示しています。

高度なワークフローでシステムを拡張する

ACPの真の威力は、エージェントを2つから複数にスケールアップし、複雑なワークフローを構築した時に明らかになります。このプロトコルは、シーケンシャルチェーンや階層チェーンといった高度なパターンをサポートしています。

シーケンシャルワークフロー: 最初のリクエストは、一連のエージェントを次々に起動します。例えば、 マネージャーエージェント 尋ねることができる 研究エージェント データを収集し、その結果を ライティングエージェント 報告書の草稿を作成する。
階層型ワークフロー: トップレベルの ルータエージェント 複雑なクエリを受け取り、それをサブタスクに分解し、各サブタスクを適切な専門エージェントに委任します。これは、次のような高度なシステムでよく使用されます。 AI SEOエージェント異なるエージェントが処理する可能性がある 自動キーワードリサーチ, コンテンツの最適化、競合他社の分析など。

モジュール式で相互接続されたシステムを構築できるこの能力は、まさに画期的なものです。共通プロトコルのおかげで、各チームは独自のエージェントを独立して開発・保守することができ、それらがより大きなシステムにシームレスに接続できることを確信できます。

現実世界におけるACP:SEOの事例

ACPでSEOを簡単にする方法

ACPの原則は単なる理論ではなく、ビジネスオートメーションに直接応用できます。検索エンジン最適化(SEO)の分野を考えてみましょう。現代のSEO戦略には、キーワード分析、コンテンツ作成、ページ内最適化、バックリンク追跡など、多くの要素が複雑に絡み合っています。

ACPを搭載したマルチエージェントシステムは、このプロセス全体を自動化できます。次のようなシステムを想像してみてください。

  1. An SEOストラテジストエージェント 検索傾向を監視し、コンテンツのギャップを特定します。
  2. A キーワードリサーチエージェント 価値の高い一次情報と LSIのキーワード.
  3. A コンテンツライティングエージェント ストラテジストからの概要に基づいて記事を生成します。
  4. An オンページ最適化エージェント コンテンツの読みやすさ、キーワードの密度、意味的関連性をチェックします。

ACPのおかげで、これらのエージェントは完璧にコミュニケーションをとることができました。戦略担当エージェントは REQUEST リサーチエージェントにキーワードを問い合わせ、 INFORM 調査結果をライティングエージェントにメッセージとして送信します。このモジュール化により、SEOワークフロー全体がより効率的かつ拡張可能になります。

結論

協力体制の構築 AI システム 最もエキサイティングなフロンティアの一つです テクノロジーしかし、共通の通信規格がなければ、これらのシステムはカスタム統合の混乱に陥るリスクがあります。エージェント通信プロトコル(ACP)は、この問題に対して、簡潔で堅牢かつスケーラブルなソリューションを提供します。

ACPは、シンプルなクライアント・サーバーモデルと明確に定義されたメッセージ構造によってエージェント間の相互作用を標準化することで、開発者が柔軟で強力なマルチエージェントアプリケーションを構築できるようにします。Pythonガイドで説明されているように、基本的なACPシステムの実装は簡単です。

そこから、ソフトウェア開発からSEOまで、さまざまな分野の複雑なタスクに対応できる、高度で階層的なワークフローを構築できます。ACPのようなプロトコルを採用することは、インテリジェントエージェントがシームレスに連携して目標達成を支援する未来への重要な一歩です。

コメント送信

あなたのメールアドレスは公開されません。必須項目には*印が付いています。

このサイトはスパム対策にAkismetを使用しています。コメントデータの処理方法についてはこちらをご覧ください。

プログラムに参加する(英語) Aimojo 部族!

毎週 76,200 人以上のメンバーがインサイダー情報を提供します。 
???? ボーナス: 200ドルの「AI 登録すると「マスタリーツールキット」が無料になります!

トレンド AI ツール
んグラム

あらゆる製品ドキュメントを数分で公開可能なビデオに変換 その AI 製品開発チームとマーケティングチーム向けに構築されたビデオジェネレーター

ZenCreator

オールインワン AI 完全な創作の自由を求めるクリエイターのためのコンテンツスタジオ 無制限の AI 画像、動画、インフルエンサーの生成を、単一のクレジットベースのプラットフォーム上で実現。

Pixazo AI

50歳以上の人を想像してみてください AI あなたが想像できるあらゆるものを創造できるモデルたち。 1つのプラットフォーム。数百の AI 可能性。無限の創造方法。

フィットネスAI

より賢くトレーニングし、より速く進歩しよう。 その AI 次に何を持ち上げるべきかを知っているコーチ。

OiiOii AI

OiiOii AIでスタジオ品質のアニメーションを作成 一つのアイデアを完全なアニメーションに仕上げる

© 著作権 2023 - 2026 | 登録する AI プロ | ♥で作られました