Menggunakan protokol A2A untuk komunikasi agen AI

Penyusun

Vanna Winland

AI Advocate & Technology Writer

Protokol A2A, atau Agent2Agent, adalah standar terbuka yang memungkinkan komunikasi terstruktur antara agen AI, klien, dan alat. Dalam tutorial ini, Anda dapat membangun sistem agen di mana klien obrolan memproses kueri pengguna dan mengirimkannya ke agen AI yang berjalan di server yang sesuai dengan A2A.

Sebagian besar aplikasi AI agen menerapkan komunikasi khusus antar komponen (misalnya ChatChain ChatDev), sehingga sulit untuk menggunakan kembali agen yang sama di berbagai aplikasi atau mengintegrasikan alat eksternal. Kurangnya standardisasi ini mencegah interoperabilitas dan membatasi pengembangan ekosistem agen yang lebih luas.

A2A memecahkan keterbatasan ini dengan memisahkan lapisan komunikasi dari logika agen melalui protokol standar yang dibangun di atas HTTP, JSON-RPC 2.0, dan Server-Sent Events (SSE). Pemisahan ini memungkinkan agen berkolaborasi dengan agen lain, melayani permintaan klien, dan mengakses alat bantu eksternal tanpa kode integrasi khusus.

A2A mendukung arsitektur terdesentralisasi yang memungkinkan tim untuk mengembangkan sistem AI mereka secara bertahap tanpa merusak kode klien. Tim dapat memperbarui alat, menukar model, atau memodifikasi perilaku agen sekaligus mempertahankan antarmuka yang konsisten di seluruh alur kerja yang kompleks.

Agen bertukar informasi dalam pesan yang terstruktur dalam format JSON-RPC yang menyertakan metadata yang memperkaya interaksi agen dengan kejelasan dan konsistensi. Setiap server A2A mengekspos AgentCard di titik akhir yang dikenal (.well-known/agent-card.json) yang menggambarkan kemampuan agen sebagai data JSON terstruktur. Dengan demikian, ini memungkinkan klien untuk secara dinamis menemukan apa yang dapat dilakukan oleh agen, mirip dengan bagaimana dokumentasi API menjelaskan titik akhir yang tersedia.

Ikuti langkah-langkahnya untuk membangun dan menjalankan sistem agen A2A dan dapatkan pengalaman langsung dengan:

  • BeeAI: Kerangka kerja agen sumber terbuka untuk membangun agen AI.
  • Protokol A2A: Protokol komunikasi standar untuk interoperabilitas agen.
  • Ollama: Alat untuk menjalankan model bahasa besar (LLM) setempat.
  • Alat bantu agen: Kemampuan khusus termasuk pencarian web (DuckDuckGo), data cuaca (OpenMeteo), akses Wikipedia (WikipediaTool), dan penalaran (ThinkTool)

Catatan: Jika Anda pernah bekerja dengan ACP (Agent Communication Protocol), Anda dapat mengenali kesamaannya. ACP, awalnya dikembangkan oleh BeeAI dari IBM, telah bergabung dengan Google A2A di bawah Linux Foundation. BeeAI sekarang menggunakan adaptor A2A (A2AServer dan A2AAgent) untuk menyediakan komunikasi yang sesuai dengan A2A. A2A juga bekerja bersama MCP (Model Context Protocol) untuk memungkinkan agen berinteraksi dengan sumber data dan alat, sehingga menciptakan ekosistem agen yang dapat dioperasikan.

Cara kerja sistem obrolan A2A

Proyek ini menunjukkan bagaimana A2A memungkinkan pemisahan penuh antara antarmuka klien dan logika agen.

Alur kerja mengikuti urutan ini:

  1. Input pengguna: Klien menangkap input melalui antarmuka terminal.
  2. Permintaan A2A: Klien memformat input sebagai muatan pesan JSON-RPC dan mengirimkannya ke server agen.
  3. Pemrosesan agen: Server meneruskan permintaan keRequirementAgent , yang menganalisis tugas dan menjalankan alat yang tepat sesuai kebutuhan.
  4. Respons A2A: Server mengembalikan respons agen sebagai data terstruktur dalam format JSON-RPC, menampilkan hasil secara real-time saat dihasilkan.
  5. Tampilan: Klien mengekstrak dan menampilkan teks respons di terminal.

Alur kerja ini menunjukkan pola yang dapat digunakan kembali yang berlaku untuk contoh penggunaan yang membutuhkan komunikasi klien-agen terstruktur seperti chatbot, sistem otomatisasi tugas, agen dukungan pelanggan, dan asisten peneliti dengan orkestrasi alat.

Agen A2A

Proyek ini menggunakan agen AI tunggal dengan beberapa kemampuan alat. Dalam sistem yang lebih kompleks, Anda dapat menerapkan beberapa agen khusus, masing-masing berfokus pada domain atau tugas tertentu.

RequirementAgent (BeeAI): Agen deklaratif yang secara dinamis memilih dan mengoordinasikan beberapa alat berdasarkan permintaan pengguna. Agen ini menggunakan:

  • ThinkTool untuk penalaran dan operasi logis
  • DuckDuckGoSearchTool untuk pencarian web
  • OpenMeteoTool  untuk data cuaca
  • WikipediaTool untuk pengambilan informasi

Server A2A

Server A2A (beeai-a2a-server/beeai_chat_server.py ) mengekspos fungsionalitas agen melalui API HTTP. Menangani tiga tanggung jawab utama:

  1. Inisialisasi LLM: Memuat model bahasa lokal melalui Ollama
llm = ChatModel.from_name(os.environ.get(“BEEAI_MODEL”, “ollama:granite3.3:8b”))

 

2. Penyiapan agen: Membuat RequirementAgent dengan alat dan memori untuk menangani siklus proses agen

    agent = RequirementAgent(
        llm=llm,
        tools=[ThinkTool(), DuckDuckGoSearchTool(), OpenMeteoTool(), WikipediaTool()],
        memory=UnconstrainedMemory(),
        description=”An agent that can search the web, check the weather, and think through problems step-by-step.”,

 

3. Konfigurasi server: Mengekspos agen melalui titik akhir HTTP yang sesuai dengan A2A

A2AServer(
    config=A2AServerConfig(port=int(os.environ.get(“A2A_PORT”, 9999))),
    memory_manager=LRUMemoryManager(maxsize=100)
).register(agent).serve()

 

Server secara otomatis mengekspos AgentCard di /.well-known/agent-card.json yang menguraikan kemampuan agen dan membantu memvalidasi konfigurasi agen.

Klien A2A

Klien A2A (beeai-a2a-client/beeai_chat_client.py ) menyediakan antarmuka pengguna dan menangani komunikasi dengan server menggunakan A2A SDK dan pustaka asyncio Python untuk penanganan pesan asinkron.

Pengaturan koneksi: Membuat adaptor klien A2A

agent = A2AAgent(
    url=os.environ.get(“BEEAI_AGENT_URL”, “http://127.0.0.1:9999”),
    memory=UnconstrainedMemory()
)

Kemampuanurl parameter menentukan titik akhir dari server yang sesuai dengan A2A (default:http://127.0.0.1:9999 ).  memory parameter menyimpan riwayat percakapan secara setempat, sehingga klien dapat mempertahankan konteks selama interaksi dan mendukung tugas-tugas yang sudah berjalan lama.

Pertukaran pesan: Mengirim prompt asinkron dan memproses respons:

for prompt in reader:
    response = await agent.run(prompt)
    # Extract and display response text

KemampuanA2AAgent adalah adaptor dari sisi klien yang mengekstrak detail komunikasi JSON-RPC. Ini bukan agen otonom—ia hanya mengubah input pengguna menjadi pesan yang sesuai dengan A2A dan menangani respons server, memungkinkan pertukaran data tanpa batas dan observabilitas.

Prasyarat untuk menjalankan proyek ini

Persyaratan sistem

Berikut adalah persyaratan sistem untuk menjalankan proyek ini:

  • Sistem operasi: macOS, Linux, atau Windows
  • Memori (RAM): >= 8GB (Disarankan: 16GB atau lebih untuk menjalankan LLM lokal)
  • Ruang disk: >= ruang kosong 5GB(Disarankan: 10GB atau lebih untuk mengakomodasi lingkungan Python dan model lokal)
  • Versi Python: > = 3.11

Persyaratan alat dan penyedia layanan

Sebelum Anda memulai, berikut adalah ikhtisar alat yang diperlukan untuk proyek ini:

  • BeeAI: Kit pengembangan agen sumber terbuka untuk membangun agen AI. BeeAI mendukung beberapa penyedia LLM termasuk Ollama (digunakan dalam tutorial ini), OpenAI, dan Anthropic.
  • Ollama: Untuk menjalankan LLM lokal yang mendukung agen AI.
  • Protokol A2A: Terintegrasi ke kerangka kerja BeeAI untuk memungkinkan komunikasi terstruktur antara klien dan server.
  • Terminal atau IDE: Terminal atau IDE seperti Visual Studio Code (disarankan untuk mengelola beberapa terminal dan melihat log).
  • Lingkungan virtual Python: Untuk mengisolasi dependensi untuk klien dan server.

Persyaratan penyedia LLM

Proyek ini menggunakan Ollama sebagai penyedia model untuk agen AI. Ikuti langkah-langkah berikut untuk mengatur Ollama:

  1. Unduh dan instal Ollama:
    -     Kunjungi Ollama dan instal aplikasi untuk sistem operasi Anda
  2. Jalankan server Ollama 
    -   Buka terminal dan jalankan:
    ollama serve
  3. Ambil model default (membutuhkan ruang disk berukuran sekitar 5GB):

    ollama pull granite3.3:8b

Catatan: Anda dapat menggunakan model yang kompatibel dengan Ollama dengan mengaturBEEAI_MODEL sebagai variabel lingkungan. Periksa pustaka model Ollama untuk model yang tersedia dan ukurannya.

Langkah-langkah

Langkah 1. Kloning repositori GitHub

Untuk menjalankan proyek ini, kloning repositori GitHub dengan menggunakan https://github.com/IBM/ibmdotcom-tutorials.git sebagai URL HTTPS. Untuk langkah-langkah terperinci tentang cara membuat kloning repositori, lihat dokumentasi GitHub.

Tutorial ini dapat ditemukan di dalam direktori proyek repo.

Di dalam terminal, arahkan ke direktori tutorial ini:

cd docs/tutorials/projects/a2a_tutorial

Langkah 2. Siapkan lingkungan pengembangan

Proyek ini membutuhkan dua skrip Python terpisah untuk dijalankan secara bersamaan, satu untuk server dan yang lainnya untuk klien. Anda perlu membuka dua jendela terminal atau tab.

Biarkan terminal Anda saat ini tetap terbuka, lalu buka terminal kedua dan pastikan keduanya diarahkan ke direktori proyek yang benar (a2a_tutorial direktori root).

Menggunakan IDE?

Jika menggunakan IDE seperti Visual Studio Code, Anda dapat menggunakan fitur Split Terminal untuk mengelola beberapa terminal secara berdampingan.

Jika tidak, buka dua jendela terminal yang berdiri sendiri dan arahkan masing-masing ke direktori proyek.

Langkah 3. Buat dan aktifkan lingkungan virtual

Lingkungan virtual membantu menjaga ketergantungan tetap terpisah dan dipelihara. Untuk memisahkan dependensi server dan klien, buat lingkungan virtual untuk setiap komponen.

Untuk server:

Arahkan kebeeai-a2a-server direktori:

cd beeai-a2a-server

Buat lingkungan virtual dengan Python 3.11:

python3.11 -m venv venv

Aktifkan lingkungan virtual:

source venv/bin/activate

Catatan untuk pengguna Windows: Gunakan venv\Scripts\activate untuk mengaktifkan lingkungan virtual.

Untuk klien:

Arahkan kebeeai-a2a-client direktori:

cd beeai-a2a-client

Buat dan aktifkan lingkungan virtual:

python3.11 -m venv venv
source venv/bin/activate

Langkah 4. Instal dependensi

Instal dependensi yang diperlukan untuk setiap komponen dengan menjalankan kode ini di setiap terminal:

pip install -r requirements.txt

Anda bisa menjalankanpip freeze di terminal untuk memverifikasi bahwa dependensi di lingkungan sudah diperbarui.

Langkah 5. Mulai server agen A2A

Di terminal pertama, jalankan server agen A2A:

python beeai_chat_server.py

Anda akan melihat:

INFO:     Started server process [88159]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:9999 (Press CTRL+C to quit)

Server sekarang mendengarkan permintaan yang masuk dari aplikasi klien, siap untuk mendukung komunikasi antar agen.

Langkah 6. Mulai klien A2A

Di terminal lain, jalankan klien A2A:  

python beeai_chat_client.py

Klien ini akan meminta Anda untuk memasukkan:

Type your message (Ctrl+C to exit):
You:

Langkah 7. Berinteraksi dengan agen

Ketik pesan di terminal klien dan tekanEnter . Agen memproses permintaan Anda dan merespons:

You: What is the capital of France?
Agent 🤖 : The capital of France is Paris.

Di terminal server, Anda dapat melihat log protokol A2A yang menunjukkan komunikasi dengan pemberitahuan push:

INFO:     127.0.0.1:49292 - “GET /.well-known/agent-card.json HTTP/1.1” 200 OK
INFO:     127.0.0.1:49294 - “POST / HTTP/1.1” 200 OK

Permintaan pertama mengambil AgentCard yang menguraikan kemampuan agen. Permintaan kedua mengirimkan pesan Anda sebagaiTextPart (unit konten teks dalam pesan A2A) dan menerima respons.

Catatan: Output dari LLM bersifat probabilistik dan dapat bervariasi setiap kali Anda menjalankan alur kerja, bahkan dengan input yang sama.

Coba kueri berbeda

Bereksperimenlah dengan berbagai jenis kueri untuk menguji berbagai alat agen:

  • Pencarian web: "Cari berita terbaru tentang kecerdasan buatan"
  • Data cuaca: “Seperti apa cuaca di Tokyo?”
  • Wikipedia: “Ceritakan tentang komputasi quantum”
  • Penalaran: "Apa tiga alasan mengapa langit berwarna biru?"

Lihat AgentCard

Arahkan ke https://0.0.0.0:9999/.well-known/agent-card.json di browser Anda untuk melihatRequirementAgent AgentCard.

{
    “capabilities”: {
        “streaming”: true
    },
    “defaultInputModes”: [
        “text”
    ],
    “defaultOutputModes”: [
        “text”
    ],
    “description”: “An agent that can search the web, check the weather, and think through problems step-by-step.”,
    “name”: “RequirementAgent”,
    “preferredTransport”: “JSONRPC”,
    “protocolVersion”: “0.3.0”,
    “skills”: [
        {
            “description”: “An agent that can search the web, check the weather, and think through problems step-by-step.”,
            “id”: “RequirementAgent”,
            “name”: “RequirementAgent”,
            “tags”: []
        }
    ],
    “url”: “http://localhost:9999”,
    “version”: “1.0.0”
}

Dokumen JSON ini menjelaskan:

  • Nama agen (RequirementAgent) dan deskripsi singkat tentang kemampuannya.
  • Protokol komunikasi yang didukung dan format pesan
  • Persyaratan atau kendala apa pun

AgentCard ini memungkinkan setiap klien yang memenuhi syarat A2A untuk menemukan dan berinteraksi dengan agen tanpa mengetahui detail implementasinya.

Kesimpulan

Dalam tutorial ini, Anda telah membangun sistem obrolan dengan menggunakan server keluhan A2A yang mengekspos antarmuka terstruktur untuk komunikasi klien-agen. Dengan memisahkan lapisan pesan dari logika internal, protokol Agent2Agent memungkinkan tim untuk memperbarui kemampuan agen, menukar model, atau memodifikasi konfigurasi alat tanpa mengubah kode klien. Fleksibilitas ini sangat berharga ketika mengoordinasikan tugas yang diperlukan input, melacak status tugas, atau memperlakukan setiap operasi sebagai unit kerja terpisah.

A2A bekerja dengan mendefinisikan format pesan umum yang dapat dipahami oleh setiap komponen yang sesuai, sehingga memungkinkan agen otonom berkolaborasi dengan agen lain. Spesifikasi protokol mendefinisikan bagaimana pesan disusun dalam format JSON-RPC dan diperkaya dengan metadata untuk memastikan konsistensi dan kejelasan di seluruh interaksi.

Tutorial ini dibangun di atas contoh dasar yang disediakan oleh repositori sampel A2A. Untuk informasi lebih lanjut tentang implementasi asli, lihat file readme di repositori yang menyediakan lebih banyak konteks dan contoh untuk membangun sistem yang sesuai dengan A2A.

Untuk penerapan dunia nyata, server A2A dapat menerapkan mekanisme otentikasi untuk mengamankan titik akhir agen, menggunakan peristiwa yang dikirim server untuk respons streaming, dan skala untuk menangani alur kerja produksi. Dengan mengikuti alur kerja ini, Anda melihat bagaimana klien baris perintah dapat berinteraksi dengan agen AI melalui protokol standar, memungkinkan agen untuk mengoordinasikan beberapa alat dan memberikan respons kontekstual. Pendekatan ini menunjukkan kekuatan A2A untuk memungkinkan sistem AI yang dapat dipelihara, dapat diskalakan, dan fleksibel.

Memadamkan sistem

Setelah selesai bereksperimen dengan sistem, ikuti langkah-langkah berikut untuk mematikan semua komponen yang sedang berjalan dengan bersih:

Hentikan setiap server yang sedang berjalan

Di setiap jendela terminal, tekan Ctrl+C untuk menghentikan proses yang sedang berjalan.

Anda akan melihat output seperti:

INFO:     Shutting down
INFO:     Finished server process

Jika server macet selama pemadaman

Jika server menjadi tidak responsif atau macet saat pemadaman, Anda dapat menghentikannya dengan paksa:

Temukan ID proses (PID):

ps aux | grep python

Identifikasi PID dari proses yang Anda coba hentikan.

Akhiri prosesnya:

kill -9 <PID>

Ulangi proses ini untuk setiap server jika diperlukan.

Itu saja. Anda telah berhasil menjalankan sistem obrolan lengkap yang sesuai dengan A2A.

Solusi terkait
Agen AI untuk bisnis

Bangun, terapkan, dan kelola asisten dan agen AI yang kuat yang mengotomatiskan alur kerja dan proses dengan AI generatif.

    Menjelajahi watsonx Orchestrate
    Solusi agen AI IBM

    Bangun masa depan bisnis Anda dengan solusi AI yang dapat Anda percaya.

    Jelajahi solusi agen AI
    Layanan AI IBM Consulting

    Layanan IBM Consulting AI membantu merancang ulang cara kerja bisnis dengan AI untuk transformasi.

    Jelajahi layanan kecerdasan buatan
    Ambil langkah selanjutnya

    Baik Anda memilih untuk menyesuaikan aplikasi dan keterampilan yang dibangun sebelumnya atau membangun dan menerapkan layanan agen khusus menggunakan studio AI, platform IBM watsonx siap membantu Anda.

    Menjelajahi watsonx Orchestrate Jelajahi watsonx.ai