Protokol Komunikasi (Bus Pesan)
Pisahkan agen dengan bus pesan (Redis, NATS, Kafka) agar agen dapat diskalakan dan mengalami kegagalan secara independen.
Protokol Komunikasi (Bus Pesan) adalah pelajaran AI Agents gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AI Agents, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Agents mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
Di Luar Percakapan Dalam Proses
Untuk sistem kecil, agen saling memanggil di dalam proses. Untuk sistem yang lebih besar, pisahkan agen melalui bus pesan—Redis, NATS, atau Kafka.
Mengapa Memisahkan?
- Agen dapat diskalakan secara independen
- Kegagalan terisolasi pada setiap agen
- Alur kerja asinkron (tidak perlu menunggu agen yang lambat saat dipanggil langsung)
- Putar ulang pesan untuk penelusuran kesalahan
- Lintas bahasa: agen Python dan agen Go dapat sama-sama melakukan subscribe
Simple Bus: Redis Pub/Sub
import redis
r = redis.Redis()
# Publisher
r.publish('agent.research.task', json.dumps({'task_id': 'abc', 'query': '...'}))
# Subscriber
p = r.pubsub()
p.subscribe('agent.research.task')
for msg in p.listen():
if msg['type'] == 'message':
handle_task(json.loads(msg['data']))Publikasi/Berlangganan untuk Penyiaran
Gunakan saat banyak agen mungkin ingin mengetahui suatu peristiwa (misalnya "user-question-received").
Antrean untuk Distribusi Pekerjaan
Gunakan antrean (Redis BLPOP, RabbitMQ) saat tepat satu pekerja harus menangani setiap tugas:
import json, queue
r = queue.Queue()
# Producer
r.put(json.dumps({'task_id': 'abc', 'kind': 'research'}))
def process(task):
print('processing', task)
# Worker
while not r.empty():
raw = r.get()
task = json.loads(raw)
process(task)
NATS untuk Kecepatan
NATS adalah perantara pesan ringan yang dirancang untuk layanan mikro. Latensi submilidetik dan permintaan/balasan sudah tersedia:
import nats
nc = await nats.connect('nats://localhost:4222')
await nc.publish('agent.research', json.dumps(task).encode())
# Request/reply
response = await nc.request('agent.research', payload, timeout=10)Kafka untuk Daya Tahan
Kafka menambahkan catatan yang tahan lama dan dapat diputar ulang. Sangat cocok untuk audit dan pemutaran ulang:
from confluent_kafka import Producer, Consumer
producer.produce('agent-events', key=task_id, value=json.dumps(task))
producer.flush()Skema Peristiwa
Tentukan bentuk setiap pesan dengan Pydantic atau Protobuf. Tanpa skema, bus Anda akan menjadi berantakan:
class ResearchTask(BaseModel):
task_id: str
user_id: str
query: str
deadline: datetime
class ResearchResult(BaseModel):
task_id: str
findings: list[str]
duration_ms: intID Korelasi
Setiap pesan yang terkait membawa correlation_id yang sama sehingga Anda dapat melacak tugas di seluruh layanan:
record = {'correlation_id': 'abc', 'task_id': 'def', 'span': 'llm_call'}
print(record)
Penangan Idempoten
Pesan dapat dikirimkan lebih dari sekali (semantik minimal sekali). Jadikan penangan bersifat idempoten—task_id diproses satu kali.
Antrean Surat Mati (Queue)
Saat penangan gagal berulang kali, pindahkan pesan ke DLQ untuk ditinjau manusia, bukan mengulanginya tanpa akhir:
if attempts > MAX_RETRIES:
r.rpush('queue:research:dlq', raw)
log.error('Sent to DLQ', extra={'task_id': task_id})Keteramatan
Lacak setiap pesan:
- ID pelacakan mengalir melalui bus
- Catatan mencakup task_id dan correlation_id
- Metrik: laju pemrosesan, latensi, dan tingkat kesalahan per topik
Kapan Mengadopsinya
Mulai sederhana—gunakan agen dalam proses. Beralih ke bus hanya jika Anda memiliki:
- 5+ agen di produksi
- Kebutuhan untuk menskalakan agen secara independen
- Alur kerja yang mencakup beberapa layanan
Minimal Sekali?
Apa yang dituntut oleh "pengiriman minimal sekali" dari penangan Anda?
Rangkuman
Pisahkan sistem dengan Redis untuk kasus sederhana, NATS untuk latensi, dan Kafka untuk daya tahan. Gunakan skema, ID korelasi, penangan idempoten, dan DLQ.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Protokol Komunikasi (Bus Pesan)” gratis?
Ya — teks lengkap “Protokol Komunikasi (Bus Pesan)” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Agents, upgrade ke CoddyKit PRO. Kursus AI Agents mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Protokol Komunikasi (Bus Pesan)”?
Pisahkan agen dengan bus pesan (Redis, NATS, Kafka) agar agen dapat diskalakan dan mengalami kegagalan secara independen. Kamu berlatih AI Agents dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai AI Agents?
Tidak diperlukan pengalaman sebelumnya. AI Agents di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Protokol Komunikasi (Bus Pesan)” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran AI Agents ini?
Ya. Setiap pelajaran AI Agents menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Multi-Agen Berbasis Percakapan (AutoGen)
- Pengawas Hierarkis (Orkestrator + Pekerja)
- Peran dan Spesialisasi Agen
- Protokol Komunikasi (Bus Pesan)