エージェント通信プロトコル (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システム

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

ステップ1: 環境の設定

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

pip install google-generativeai

また、 APIキー リクエストを認証します。

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

しましょう's 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: エージェントの作成と実装

フレームワークが整えば、専門のエージェントを作成できます。's 作る 研究者エージェント 質問に答えることができ、 マネージャーエージェント それを照会します。

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

あらゆるURLを数分ですぐに使える広告キャンペーンに変換 その AI パフォーマンス重視のマーケターと成長志向のブランド向けに構築された広告エージェント

tl; dv

話し合った内容を忘れるのはやめましょう。すべての会議で、その内容に基づいて行動を起こしましょう。 その AI 会議の議事録を作成し、会話を記録して実行可能な成果物に変換するツール。

AskYura

顧客とのあらゆる会話を、完了したビジネスアクションにつなげる ノーコード AI 運用実行のために構築されたエージェント

クベルンズ

よりスマートな導入。より迅速な拡張。クラウドコストを最大40%削減。 ゼロコンフィグによるフルスタック展開のために構築された、AIエージェント型クラウドPaaS。

ウィザード

デザインスキルが全くなくても、アイデアをインタラクティブなプロトタイプに変換できます。 AI ワイヤーフレーム、モックアップ、アプリのプロトタイプ作成のためのUIデザインツール

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