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:
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.
Proyek ini menunjukkan bagaimana A2A memungkinkan pemisahan penuh antara antarmuka klien dan logika agen.
Alur kerja mengikuti urutan ini:
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.
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:
Server A2A (
2. Penyiapan agen: Membuat RequirementAgent dengan alat dan memori untuk menangani siklus proses agen
3. Konfigurasi server: Mengekspos agen melalui titik akhir HTTP yang sesuai dengan A2A
Server secara otomatis mengekspos AgentCard di /.well-known/agent-card.json yang menguraikan kemampuan agen dan membantu memvalidasi konfigurasi agen.
Klien A2A (
Pengaturan koneksi: Membuat adaptor klien A2A
Kemampuan
Pertukaran pesan: Mengirim prompt asinkron dan memproses respons:
Kemampuan
Berikut adalah persyaratan sistem untuk menjalankan proyek ini:
Sebelum Anda memulai, berikut adalah ikhtisar alat yang diperlukan untuk proyek ini:
Proyek ini menggunakan Ollama sebagai penyedia model untuk agen AI. Ikuti langkah-langkah berikut untuk mengatur Ollama:
Catatan: Anda dapat menggunakan model yang kompatibel dengan Ollama dengan mengatur
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:
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 (
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.
Lingkungan virtual membantu menjaga ketergantungan tetap terpisah dan dipelihara. Untuk memisahkan dependensi server dan klien, buat lingkungan virtual untuk setiap komponen.
Untuk server:
Arahkan ke
Buat lingkungan virtual dengan Python 3.11:
Aktifkan lingkungan virtual:
Catatan untuk pengguna Windows: Gunakan venv\Scripts\activate untuk mengaktifkan lingkungan virtual.
Untuk klien:
Arahkan ke
Buat dan aktifkan lingkungan virtual:
Instal dependensi yang diperlukan untuk setiap komponen dengan menjalankan kode ini di setiap terminal:
Anda bisa menjalankan
Di terminal pertama, jalankan server agen A2A:
Anda akan melihat:
Server sekarang mendengarkan permintaan yang masuk dari aplikasi klien, siap untuk mendukung komunikasi antar agen.
Di terminal lain, jalankan klien A2A:
Klien ini akan meminta Anda untuk memasukkan:
Ketik pesan di terminal klien dan tekan
Di terminal server, Anda dapat melihat log protokol A2A yang menunjukkan komunikasi dengan pemberitahuan push:
Permintaan pertama mengambil AgentCard yang menguraikan kemampuan agen. Permintaan kedua mengirimkan pesan Anda sebagai
Catatan: Output dari LLM bersifat probabilistik dan dapat bervariasi setiap kali Anda menjalankan alur kerja, bahkan dengan input yang sama.
Bereksperimenlah dengan berbagai jenis kueri untuk menguji berbagai alat agen:
Arahkan ke https://0.0.0.0:9999/.well-known/agent-card.json di browser Anda untuk melihat
Dokumen JSON ini menjelaskan:
AgentCard ini memungkinkan setiap klien yang memenuhi syarat A2A untuk menemukan dan berinteraksi dengan agen tanpa mengetahui detail implementasinya.
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.
Setelah selesai bereksperimen dengan sistem, ikuti langkah-langkah berikut untuk mematikan semua komponen yang sedang berjalan dengan bersih:
Di setiap jendela terminal, tekan Ctrl+C untuk menghentikan proses yang sedang berjalan.
Anda akan melihat output seperti:
Jika server menjadi tidak responsif atau macet saat pemadaman, Anda dapat menghentikannya dengan paksa:
Temukan ID proses (PID):
Identifikasi PID dari proses yang Anda coba hentikan.
Akhiri prosesnya:
Ulangi proses ini untuk setiap server jika diperlukan.
Itu saja. Anda telah berhasil menjalankan sistem obrolan lengkap yang sesuai dengan A2A.
Bangun, terapkan, dan kelola asisten dan agen AI yang kuat yang mengotomatiskan alur kerja dan proses dengan AI generatif.
Bangun masa depan bisnis Anda dengan solusi AI yang dapat Anda percaya.
Layanan IBM Consulting AI membantu merancang ulang cara kerja bisnis dengan AI untuk transformasi.