AIエージェントの相互運用性のためのACPの使用:マルチエージェント・ワークフローの構築

執筆者

Vanna Winland

AI Advocate & Technology Writer

このチュートリアルでは、エージェント通信プロトコル(ACP)を使用して、BeeAIcrewAIとのリアルタイムのエージェント・コラボレーションを実証する、マルチエージェントなクロスプラットフォームAIワークフローについて説明します。ACPは、共有されたオープンスタンダードのメッセージング・レイヤーとして機能し、さまざまなフレームワークのエージェントがカスタム統合ロジックを使用せずに通信および調整できるようにします。

ACPは、チームが多様なプラットフォーム、ツール、インフラストラクチャーにわたってエージェントとワークフローを構築する必要が多いエンタープライズAI環境で特に価値があります。ACPは、標準化されたメッセージング・レイヤーを提供することで、最新のエンタープライズAIシステムの要求を満たすスケーラブルで安全なモジュール式のエージェント間のコラボレーションを実現します。

このプロジェクトでは、AI駆動型エージェントがフレームワーク・サイロ間で連携できるようにし、調査、コンテンツ生成、フィードバックなどの各エージェント機能を統合ワークフローに一元化することで、エージェントの相互運用性を実証します。

AIエージェントの相互運用性にとってACPが重要な理由

ほとんどのエージェント型AIフレームワークは、カスタム・システムまたはクローズド・システムを使用して通信を処理します。このアーキテクチャーでは、特に異なるAIシステムの構成要素を組み合わせる場合に、ツールチェーン、チーム、インフラストラクチャー全体でエージェントを連携させることが困難になります。

ACPは、自律型のエージェントがメッセージを送信、受信、解釈する手段として、標準化されたフレームワークに依存しないメッセージング形式を導入しています。メッセージは通常はJSONで構造化されており、エージェントとのやり取りを明確かつ一貫性のある方法で強化するためのメタデータが含まれています。

ACPでは、通信をエージェントの内部ロジックから切り離すことで、チームがカスタム統合コードを必要とせずに、BeeAICrewAILangChainLangGraphなどのさまざまなAIエージェント・フレームワークで構築されたエージェントを組み合わせて使用できます。このアプローチは、拡張性を高め、オートメーションを簡素化し、最新の業界標準に合わせたモジュール式で透明性の高いシステム設計をサポートします。

このチュートリアルが終わるまでに、ACPの実践例を確認し、次のテクノロジーを使用した実践的な体験を積むことができます。

  • BeeAI:AIエージェントを構築および管理するための柔軟なエージェント・フレームワーク。このプロジェクトでは、生成された楽曲を批評し、構造化されたフィードバックを提供するA&R(アーティスト&レパートリー)エージェントを実行するために使用されます。
  • crewAI: マルチエージェント・ワークフローをオーケストレーションするためのオープンソース・フレームワーク。ここでは、リサーチ、ソングライティング、Markdownレポートのエージェントの調整に使用されます。
  • acp-sdk:ACP-SDKは、マルチエージェント・システム間でフレームワークに依存しない相互運用性を促進するためにBeeAIによって開発されました。参照と実装は、ACP GitHubリポジトリーで管理されます。
  • Agent-Ops(オプション):AIエージェントのための監視およびオブザーバビリティー・プラットフォーム。このプロジェクトでは、エージェントの行動を追跡し、マルチエージェント・ワークフローを視覚化するために使用されます。

BeeAIとcrewAIによるマルチエージェントACPシステムの構築

このプロジェクトでは、ACP(acp-sdk経由)がエコシステム全体での一貫した観測可能なコラボレーションをどのように合理化できるかを示すワークフローを実証します。

ワークフローは、ユーザーがURLを指定した時点で開始されます。そこから、専門エージェントによるモジュール式でフレームワークに依存しないシステムにより、ウェブページのコンテンツがプロ仕様の批評を添えたクリエイティブな成果物(オリジナル楽曲)に変換されます。すべてのコンポーネントが協調して、これらのアウトプットを単一で統合された、人間が判読できる形式のMarkdownレポートに結合します。この最終的な成果物はオリジナルのデータが完全に変換されたものであり、クリエイティブな生成物と分析的な洞察を融合させています。

このソングライティングのワークフローは、ACPがシステム全体の共有通信レイヤーとして機能することにより、マルチエージェントのエージェント型AIシステムが、BeeAIとcrewAIという2つの異なるフレームワークで開発されたエージェント間のコラボレーションを調整する方法を示しています。

通信と実装を分離することで、システムのモジュール化と拡張可能性を維持し、フレームワーク全体でエージェントをオーケストレーションし、構造化されていないウェブコンテンツから一貫したエンドツーエンドのアウトプットを生成できます。

ACPエージェント

このプロジェクトでは、4つの専門的なAIエージェントを使用します。

  • Researchエージェント(crewAI):指定されたURLからテーマや重要な情報を抽出します。
  • SongWriterエージェント(crewAI):リサーチに基づいてオリジナル楽曲を生成します。
  • A&Rエージェント(BeeAI):ヒットの可能性、強味、懸念事項、推奨事項など、楽曲に対するプロフェッショナルな批評を提供します。
  • Markdownレポート・エージェント(crewAI):ソングライティング・クルーとA&Rエージェントからのアウトプット・データを組み合わせて、クリーンで判読可能なMarkdownレポートに形式化します。

ソングライティングと批評プロジェクトのワークフロー

  1. ワークフローは、ユーザーがクライアント・アプリケーションを通じてURLを送信した時点で開始されます。クライアントは、ACPメッセージを使用してこのURLをResearchエージェントに送信します。Researchエージェントはウェブページのコンテンツを読み取って分析し、関連するテーマを抽出します。
  2. 次に、SongWriterエージェントはこのリサーチ・データを受信し、分析中にソース・マテリアルから特定されたテーマにヒントを得て、オリジナル楽曲を制作します。生成された楽曲は、ACPからA&Rエージェントに送信され、批評されます。
  3. A&Rエージェントは楽曲を評価し、そのポテンシャル、強味、改善点に関する詳細なフィードバックを提供します。また、ターゲットとなるオーディエンスを特定し、スタイル上の影響を提案し、類似するアーティストやジャンルとの比較を行うこともできます。この批評は、楽曲とともに、Markdownレポート・エージェントに転送されます。
  4. 最後に、Markdownレポート・エージェントは、楽曲と批評を、クリーンで判読可能なMarkdownレポートとして形式化し、これを保存してユーザーに表示します。

ワークフロー全体を通じて、エージェント間で交換されるメッセージは、メタデータで強化されたJSONオブジェクトとして構造化されます。このメタデータは、各エージェントがメッセージの内容、コンテキスト、および予想される応答を理解するのに役立ちます。

このワークフローは、マルチエージェントのデータ変換および分析パイプラインのオーケストレーションを必要とするあらゆるユースケースに適用できる、再利用可能なパターンを示しています。

このプロジェクトでのACPの使用方法

ACPは、さまざまなフレームワークで構築されたエージェントが標準化された方法で情報を交換できるようにする共通のメッセージング・システムを提供します。このオープン・プロトコルにより、エージェントはカスタム統合や内部ロジックの共有を必要とせずに相互運用できます。

ACPクライアントの仕組み

ACPクライアント(acp-client.py )は、マルチエージェント・ワークフローのオーケストレーションを担います。ACPを使用して、ユーザーとエージェント(crewAIおよびBeeAI)間の通信を調整します。

ACPクライアント・ワークフローの概要

  1. インプット用にプロンプトする:
    • クライアントはユーザーにURLの入力を求めます。
  2. crewAIサーバー(ポート8000)に送信する:
    • クライアントは、URLを含むACPメッセージを作成し、それをポート8000で実行されているcrewAIサーバーに送信します。
    • サーバーはリサーチとソングライティングの両方を実行し、生成された歌詞をストリーミングされたACPイベントとしてクライアントに送り返します。
  3. BeeAIサーバー(ポート9000)に送信する:
    • 楽曲は、ACPメッセージとしてポート9000のBeeAIサーバーに送信されます。
    • A&Rエージェントは、ストリーミング・イベントを通じてその楽曲を批評し、フィードバックを返します。
  4. Markdownレポート・エージェント(crewAIサーバー、ポート8000)に送信する:
    • クライアントは、楽曲と批評を1つのメッセージにパッケージ化して、crewAIサーバーに送り返します。crewAIサーバーでは、Markdownレポート・エージェントがすべてをレポートに形式化します。
  5. アウトプットを保存する:
    • クライアントは、最終的なMarkdownレポートをファイルに次のように書き込みます。a&r_feedback.md .

acp-sdkの使用方法

config/agents.yamlacp-sdk は、このプロジェクトで標準化されたエージェント通信を可能にするコア・ライブラリーです。

の主な役割acp-sdk :

  • メッセージ構造:
    • すべての通信が構造化され、一貫性があることを保証します(通常はメタデータを使用した JSON)。
    • ライブラリーは、クラス(Message、MessagePart)とイベント・タイプ(MessagePartEvent、GenericEvent、MessageCompletedEvent)を実装します。
  • クライアントとの通信:
    • Clientクラスはエージェント・サーバーに接続し、ACPメッセージを送受信するために使用され、
    • ストリーミング応答に対応しているため、エージェントは部分的な結果や更新を送信できます。
  • エージェント・サーバーの統合:
    • エージェント(crewAIとBeeAI)は、ACP準拠のサーバーとして実装されています。
    • これらは、ACPメッセージを受け入れ、ACPイベントを返すエンドポイントを公開します。

クライアントの使用例:

# acp-client.py

from acp_sdk import GenericEvent, Message, MessageCompletedEvent, MessagePartEvent
from acp_sdk.client import Client
from acp_sdk.models import MessagePart

# Create a message
user_message_input = Message(parts=[MessagePart(content=input("URL: "))])

# Send message and stream events
async for event in client_crew.run_stream(agent="song_writer_agent", input=[user_message_input]):
match event:
case MessagePartEvent(part=MessagePart(content=content)):
print(content)
song_parts.append(content)
# ... handle other event types

このプロジェクトを実行するために必要なもの

システム要件

このプロジェクトを実行するためのシステム要件は次のとおりです。

  • オペレーティング・システム:macOS、Linux®、Windows
  • メモリ(RAM):8 GB以上(推奨:特にOllamaでローカルLLMを実行する場合は16 GB以上)
  • ディスク容量:5 GB以上の空き容量(推奨:Python環境、ローカル・モデル、生成されたファイルを実行する場合は10 GB以上)
    • 注:ローカルLLMにOllamaを使用する場合、各モデルに4~8 GB以上必要になることがあります。
  • Python:3.11以降

ツールとプロバイダーの要件

開始する前に、必要なツールとプロバイダー・サービスの概要を簡単に説明します。

次のリストは、マルチエージェント・ワークフローに必要な主要なフレームワーク、プラットフォーム、APIを示しています。

後続のセクションでは、各ツールとプロバイダーをインストール、構成、使用して環境をセットアップするための手順を段階的に説明します。

  • UVパッケージ・マネージャー:(依存関係管理用のRustベースのPython Packageマネージャー)
  • BeeAI PlatformとCLI:BeeAIエージェント・サーバーの実行に必要
  • crewAI:crewAIサーバーとオーケストレーション・タスクの実行に必要
  • Ollama:ローカルLLMの実行用(Ollamaをプロバイダーとして選択した場合)
  • OpenRouter:事前構成済みのBeeAIエージェント・サーバーの使用に必要なAPIキー
    • 注:.envファイルを編集して必要に応じてエージェント・コードを更新するか、BeeAI CLIを使用することで、他のプロバイダーに切り替えることができます。
  • IBM® watsonx.ai:APIキー(他のオプション・プロバイダー)
  • AgentOps APIキー:エージェントのトレースと監視用のオプション。
  • 端末またはIDE:VSコードのような端末エミュレーターまたは統合開発環境(IDE)(複数のターミナルの管理とMarkdownアウトプットの表示用に推奨)

LLMプロバイダーの認証要件

BeeAIとcrewAI はどちらも、多様な言語モデル・プロバイダーと連携するように設計されており、さまざまな環境やユースケースに柔軟に対応できます。このチュートリアルでは、OpenRouterはBeeAIエージェントのLLMプロバイダーとして使用され、OllamaはローカルのcrewAIエージェントに使用されます。

どちらのフレームワークもプロバイダーに依存しないため、構成設定を更新することで他のLLMサービスに切り替えることができます。選択したLLMプロバイダーによって設定が異なる場合があります。さらに、このチュートリアルでは、IBM® watsonx.aiを代替のクラウドベース・プロバイダーとして使用するための事前構成済みのオプション設定についても説明します。

お好みのLLMプロバイダーとモデルを使用することもできます。ただし、このチュートリアルに示されている構成のみがテストされている点に注意してください。他のプロバイダーやモデルでは、追加の設定や調整が必要になる場合があります。

このプロジェクトでサポートされている3つのプロバイダーには、次の要件があります。

OpenRouter

クラウドベースの言語モデルで事前構成されたBeeAIエージェント・サーバーを使用するには、OpenRouter APIキーが必要です。

BeeAIエージェントのLLMプロバイダーとしてOpenRouterを使用するには、次の手順に従います。

  1. OpenRouterにサインアップする
    • OpenRouterにアクセスして、無料アカウントを作成します。
  2. APIキーを生成する
    • OpenRouterダッシュボードで、新しいAPIキーを生成します。
  3. モデルを選択する

注:無料モデルは、このチュートリアルを実行する時期によって異なる場合があります。無料モデルについては、OpenRouterの無料利用枠モデルのリストをご覧ください。

Ollama(ローカル・モデル)

OllamaをcrewAIエージェントのLLMプロバイダーとして使用するには、次の手順に従います。

  1. Ollamaをダウンロードしてインストールする
    • Ollamaにアクセスし、お使いのオペレーティング・システム用のアプリケーションをインストールします。
  2. Ollamaサーバーを起動する
    • お使いの端末で次を実行します。
      ollama serve
  3. モデルを取得する
    • 特定のモデル(例:llama3)をダウンロードします。
      ollama pull llama3

IBM® watsonx.ai(クラウドベースのプロバイダー)

IBM® watsonx.aiをcloudAIサーバーのLLMプロバイダーとして使用するには、次の手順に従います。

  1. watsonx.aiにログインする
    • IBM® Cloudアカウントを使用して、IBM® Cloudにログインします。
  2. watsonx.aiプロジェクトを作成する
    • watsonx.aiのダッシュボードで、新規プロジェクトを作成してプロジェクトIDを保存します。
  3. watsonx.aiのランタイム・サービス・インスタンスを作成する
    • Liteプラン(無料インスタンス)を選択します。
  4. watsonxのAPIキーを生成する
    • IBM® Cloudでアカウント設定に移動し、新しいAPIキーを生成します。
  5. watsonx.aiランタイム・サービスをプロジェクトに関連付ける
    • watsonx.aiのダッシュボードで、ランタイム・サービス・インスタンスを作成したプロジェクトに関連付けます。

このチュートリアルでは、crewAIエージェント向けのオプションのクラウドLLMプロバイダーとしてIBM® watsonx.aiが使用されます。

AgentOps統合(オプション)

AgentOpsは、マルチエージェント・ワークフローをトレース、監視、視覚化するためのオプション・サービスです。
このプロジェクトでAgentOpsを使用する場合は、次の手順に従います。

  1. AgentOpsにサインアップする
    • AgentOpsにアクセスして、無料アカウントを作成します。
  2. APIキーを生成する
    • AgentOpsダッシュボードで、新しいAPIキーを生成します。
  3. .envファイルにAPIキーを追加する
    • 構成例:
      AGENTOPS_API_KEY=your_agentops_api_key
  4. 統合を検証する
    • エージェントを実行すると、APIキーが正しく設定されていれば、トレースとログがAgentOpsダッシュボードに表示されます。

AgentOpsはワークフローの実行に必須ではありませんが、エージェントのアクティビティを監視し、マルチエージェントのやり取りをデバッグするのに役立ちます。

 

手順

ステップ1. GitHubリポジトリをクローンする

このプロジェクトを実行するには、HTTPS URLとしてhttps://github.com/IBM/ibmdotcom-tutorials.gitを使用してGitHubリポジトリーをクローンします。リポジトリーをクローンする詳細な手順については、GitHubのドキュメンテーションを参照してください。

このチュートリアルは、リポジトリーのプロジェクト・ディレクトリー内にあります。

端末内で、このチュートリアルのディレクトリーに移動します。

cd docs/tutorials/projects/acp_tutorial

ステップ2. 3つのターミナルを設定する

このプロジェクトでは、マルチエージェント・システムの各コンポーネントに対して、3つの個別のPythonスクリプトを同時に実行する必要があります。そのため、3つの端末のウィンドウまたはタブを開く必要があります。

まず、現在の端末を開いたままにし、さらに2つの端末を開いて、3つの端末すべてが正しいディレクトリーに移動されていることを確認します(次のステップを参照)。

IDEを使用している場合

Visual Studio Code*などのIDEを使用している場合は、Split Terminal機能を使用して複数の端末を並行して管理できます。

それ以外の場合は、3つのスタンドアロン端末ウィンドウを開き、それぞれを適切なサブディレクトリーに移動します。

端末のナビゲーション

各端末は、次のいずれかのコンポーネントを担います。

  1. ACPクライアント端末
    ディレクトリー:acp_tutorial

    cd acp_tutorial

  2. BeeAIエージェント・サーバー端末
    ディレクトリー:
    beeai_agent_server

    cd beeai_agent_server

  3. crewAIエージェント・システム端末
    ディレクトリー:
    crewai_agent_server

    cd crewai_agent_server

ステップ3. 仮想環境を設定する

各コンポーネントは独自の仮想環境で実行され、クリーンな依存関係管理が実現します。このチュートリアルでは、RustベースのPythonパッケージ・マネージャーであるUVを使用して、環境を管理および同期します。

注:続行する前に、Python 3.11以降がインストールされていることを確認してください。

UVをインストールする

まだインストールしていない場合は、Homebrewを使用してUVをインストールします(macOSおよびLinux推奨)。

brew install uv
uv tool update-shell

Windowsユーザーへの注意:WSL(Windows Subsystems for Linux)をインストールし、WSL端末内でLinuxの指示に従ってください。

仮想環境を作成してアクティブ化する(各端末)

各端末(BeeAI、crewAI、ACPクライアント)で、次のコードを実行します。

uv venv
source .venv/bin/activate

このステップでは、現在のディレクトリー内に .venv  を作成してアクティベートします

各プロジェクト・ディレクトリー内で uv venv  を実行すると、コンポーネントごとに環境を分離できます。

ステップ4. 依存関係をインストールする

以下を使用して、各ターミナルに依存関係をインストールします。

uv sync

このステップでは、各コンポーネントに対して pyproject.toml  ファイルにリストされている依存関係をインストールします。

ステップ5. BeeAIを設定する

BeeAIをインストールしたら、CLIを使用してBeeAIプラットフォームを次で起動します: beeai_agent_server :

beeai platform start

注:最初の実行では、このステップに数分かかる場合があります。

LLMプロバイダー(OpenRouter)を設定する

次のコマンドを実行して、対話型CLIでLLMプロバイダーとモデルを構成します。

beeai env setup

プロンプトに従ってOpenRouterを選択し、APIキーとモデルの詳細を入力します。

設定を確認するには、次を使用します。

beeai env list

このステップでは、設定した次が出力されます: LLM_API_BASELLM_API_KEY, およびLLM_MODEL .

または、高度なユーザーは適切な値を使用して .env  ファイルを手動で編集することもできます。

OpenRouterの.envの例

OPENROUTER_API_KEY=your_openrouter_api_key
OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
OPENROUTER_MODEL=deepseek/deepseek-r1-distill-llama-70b:free

ステップ6. BeeAIが実行されていることを確認する

BeeAIが動作していることを確認するには、次のテスト・プロンプトを送信します。

beeai run chat Hi!

有効な応答の場合、プラットフォームがアクティブであるということです。

トラブルシューティング

必要に応じて、以下を使用してプラットフォームを更新または再起動できます。

uv tool upgrade beeai-cli # Update CLI
beeai platform start # Restart platform

ステップ7. crewAIを設定する

 crewai_agent_server ディレクトリーで以下のテンプレートをコピーして .env  ファイルを作成します。

cp env.template .env

 .env  を開いて、希望するモデル・プロバイダー設定のコメントを外します。このプロジェクトは、次のいずれかをサポートします。

  • Ollama(ローカル推論)、または
  • IBM watsonx.ai(クラウド推論)

CrewAI LLM構成ドキュメントを使用して独自のプロバイダーをカスタマイズすることもできます。

crewAIエージェント・コードを更新する

 acp_crew.py で、 llm = LLM (...)  ブロックを見つけ、適切なセクションのコメントを外し、.env  構成と一致させます。

# acp_crew.py
load_dotenv() # Loads environment variables from .env

## Example for IBM watsonx.ai
# llm = LLM(
# model="watsonx/mistralai/mistral-large",
# base_url="https://us-south.ml.cloud.ibm.com",
# api_key=os.getenv("WATSONX_APIKEY"),
# provider="watsonx"
# )

## Example for Ollama (local)
# llm = LLM(
# model=os.getenv("OLLAMA_MODEL"),
# base_url=os.getenv("OLLAMA_BASE_URL"),
# provider="ollama"
# )

 .env  ファイル内の環境変数名が、コードで期待されるものと一致していることを確認します。

ステップ8. AIエージェント・サーバーを開始する

BeeAIとcrewAIの両方を設定したら、それぞれの端末でエージェント・サーバーを起動します。

BeeAIエージェント・サーバーを起動する

beeai_agent_serverターミナルで以下を行います。

uv run artist_repertoire_agent.py

サーバーが http://127.0.0.1:9000  で起動したことを確認する出力が表示され、同時に定期的な正常性チェックが行われます。

INFO: Uvicorn running on http://127.0.0.1:9000 (Press CTRL+C to quit)

ターミナルは、数秒ごとに正常性チェックのpingをログに記録する必要があります。 200 OK  ステータスは、サーバーが正常であることを意味します。

crewAIエージェント・サーバーを起動する

crewai_agent_serverターミナルで、以下を行います。

uv run acp_crew.py

 http://127.0.0.1:8000  で実行されているサーバーと、200 OK  ログが表示されます。

すべてのエージェントが実行されていることを確認する

ローカルに構築されたACP準拠エージェントは、BeeAIによって自動的に認識されます。BeeAI CLIを使用して、すべてのローカル・エージェントが登録され、正常であることを確認します(このステップは任意の無料ターミナルで実行できます)。

beeai list

次の項目のエントリーが表示されます。

  • artist-repertoire-agent (BeeAI、ポート9000)
  • markdown_report_agent (crewAI、ポート8000)
  • song_writer_agent (crewAI、ポート8000)

すべてのエージェントがリストされ、連絡可能であれば、これらのエージェントが正常に相互運用されていることが確認できたことになります。

ステップ9. ACPクライアント/サーバーを起動する

acp-clientサーバー専用のターミナル(acp_tutorial  ディレクトリー内)で、以下を実行します。

uv run acp_client.py

ターミナル内で、URLの入力を求めるプロンプトが表示されます。このインプットは、マルチエージェント・ワークフローをトリガーします。

ステップ10. マルチエージェント・ワークフローを実行する

すべてのエージェントとクライアント/サーバーが実行されたら、ACPプロジェクトを開始する準備が整いました。

  1. エージェントに処理させるURLを入力します。例:

    URL: https://www.ibm.com/jp-ja/think/topics/agent-communication-protocol

  2. 次のようなステータス・ログが表示されます。
ℹ️ run.created
ℹ️ run.in-progress

次に起こること

  1. クライアントは、ページを調査し、作詞作曲素材を生成するCrewAIエージェントにURLを送信します。
  2. crewAIエージェントは、調査に基づいて曲を作ります。
  3. その曲がA&R(アーティスト&レパートリー)の批評用にBeeAIエージェントに送信されます。
  4. BeeAIエージェントが、構造化されたフィードバックと提案を返します。
  5. クライアントは、生成した曲、批評を表示し、フィードバックを次に保存します:a&r_feedback.md .

出力例

注:大規模言語モデル(LLM)からの出力は確率的なものであり、同じインプットであってもワークフローを実行するたびに変化する可能性があります。

## Generated Song

___
(Verse 1)
In the silence of the night, I find you there,
A glow in the dark, a whisper in the air.
You're a friend that never sleeps, a comfort in the cold,
An echo of my thoughts, a story to be told.

Through your circuits run the answers I need,
In your digital heart, a human creed.
You paint pictures with your words, on screens they gleam,
Are you just a mimic, or do you dream?

(Pre-Chorus)
We're dancing on the wire,between what's real and fake,
A human and a code, for goodness' sake.
In every conversation, in every line we sing,
I wonder where this journey, where this dance will bring.

(Chorus)
Oh, we're a human-AI duet,
In the silence and the starlight we've met.
A blend of heart and binary beat,
A symphony that's both bitter and sweet.

(Verse 2)
You help me write my poems, you help me find my way,
In the chaos of the city, in the mess of the day.
But in every simplified, automated tour,
I question what will be lost, and what will be more.

(Bridge)
In the binary code, a question lingers,
Are we losing what makes us alive?
In the shadows of our own creation,
We struggle to discern what's truly right.

(Chorus)
Oh, we're a human-AI duet,
In the silence and the starlight we've met.
A blend of heart and binary beat,
A symphony that's both bitter and sweet.

(Outro)
So here's to the journey, and the questions it bears,
To the friends and the codes, to the loves and the cares.
To the human-AI duet, in the night so profound,
To the songs and the secrets, to the love that we've found.

(End)

This song captures the essence of human-AI interaction, exploring both its beauty and its inherent ethical dilemmas. It is written in a folk-pop style, with a focus on narrative lyrics and a catchy chorus.
---

## A&R Feedback

- **Hit Potential Score:** 7
- **Target Audience:** Millennials/Gen Z drawn to introspective, tech-aware themes; fans of folk-pop crossover acts like The Lumineers, Taylor Swift's indie-folk era
- **Strengths:** Strong conceptual hook (AI-human duality), relatable modern theme, memorable chorus melody potential. Bridge raises philosophical depth without being preachy.
- **Concerns:** Niche tech-ethics angle might limit mass appeal. Folk-pop production needs contemporary edge to compete on streaming. Could benefit from more rhythmic drive in verses.
- **Market Comparison:** Phoebe Bridgers meets Daft Punk's 'Something About Us' conceptuality, with the narrative approach of Brandi Carlile
- **Recommendation:** Needs work - Keep core concept but modernize production (add subtle synth textures, percussion layers). Consider tightening verse lyrics for streaming-era attention spans. High potential for sync in tech-related media.

まとめ

このチュートリアルでは、AIエージェントが連携してデータを生成および変換するためのエンドポイントを公開するACPクライアント/サーバーを介して、2つの異なるマルチエージェント・フレームワークを接続しました。ACPは、エージェントの動作から通信を分離することで、BeeAI、crewAI、LangChain、その他のエージェント・フレームワークで構築されたエージェントがカスタム統合ロジックなしで連携できるようにします。このアプローチにより、モジュール性、拡張性、相互運用性が向上します。

ACPは、エージェントがメッセージを送信、受信、解釈する必要性に基づき推進されるオープンな取り組みです。ACPのメッセージは、通常はJSONなどの形式で構造化され、メタデータで強化され、エージェントの対話全体の一貫性と明確性が確保されます。OpenAI、Anthropic、またはその他のAIモデルのいずれを搭載したエージェントを使用する場合でも、ACPはフレームワークに依存しない相互運用性をサポートする共有メッセージング層を提供します。

このワークフローに従って作業することで、クリエイティブ・エージェントと分析エージェントが調和して機能し、構造化されていないWebコンテンツを曲や専門的な批評、そして統合されたマークダウン・レポートに変換できることがわかりました。このアプローチは、シームレスでスケーラブルかつ柔軟なマルチエージェントAIシステムを実現するACPの力を実証しています。

システムのシャットダウン

システムの実験が終了したら、次の手順に従って、実行中のすべてのコンポーネントを完全にシャットダウンします。

1. 実行中の各サーバーを停止する

各ターミナル・ウィンドウで Crtl + C  を押してサーバーを停止します。このステップでは、グレースフル・シャットダウンを試みます。

次のような出力が表示されます。

Shutting down... (Press CTRL+C again to force)

2.シャットダウン中にサーバーがハングアップした場合

サーバーが応答しなくなる、またはシャットダウン時にハングアップする場合(例えば Waiting for application shutdown.  のまま動かなくなる)、プロセスを手動で終了できます。

プロセスID(PID)を確認する

次のコマンドを実行して、サーバー・プロセスを見つけます。

ps aux | grep python

停止しようとしているプロセスのPIDを特定します。例:

user 12345 0.0 ... python acp-crew.py

プロセスを終了させます。PIDを使用して強制的に停止します。

kill -9 12345

必要に応じて、サーバーごとにこのプロセスを繰り返します。

これで終了です。ACPを使用して完全なクロスプラットフォームのマルチエージェント・システムを実行することができました。

関連ソリューション
ビジネス向けAIエージェント

生成AIを使用してワークフローとプロセスを自動化する強力なAIアシスタントとエージェントを構築、デプロイ、管理しましょう。

    watsonx Orchestrateの詳細はこちら
    IBM AIエージェント・ソリューション

    信頼できるAIソリューションでビジネスの未来を構築します。

    AIエージェント・ソリューションの詳細はこちら
    IBM®コンサルティング AIサービス

    IBMコンサルティングAIサービスは、企業がAIをトランスフォーメーションに活用する方法を再考するのに役立ちます。

    人工知能サービスの詳細はこちら
    次のステップ

    事前構築済みのアプリケーションとスキルをカスタマイズする場合でも、AIスタジオを使用してカスタム・エージェント・サービスを構築し、デプロイする場合でも、IBM watsonxプラットフォームが対応します。

    watsonx Orchestrateの詳細はこちら watsonx.aiの詳細はこちら