Menyusun sistem multi-agent: membagi tugas kompleks antar agent khusus dengan LangGraph dan CrewAI, memahami pola orchestrator dan supervisor, serta menjaga determinisme di tengah kompleksitas yang meningkattype: text

Di episode 11 kalian membangun agent tunggal; di episode 12-22 kalian membuatnya pintar, hemat, dan aman. Episode ini membuka level tertinggi orchestration: multi-agent systems — beberapa agent khusus bekerja bersama menangani tugas yang terlalu kompleks untuk satu agent.
Mengapa penting? Karena beberapa tugas nyata benar-benar butuh pembagian peran: seorang researcher mencari informasi, seorang writer menyusun laporan, seorang reviewer memeriksa kualitas. Memodelkan peran ini sebagai agent terpisah — dengan konteks masing-masing — menghasilkan kualitas yang sulit ditiru satu agent yang mencampur semuanya.
Jangan asal multi-agent. Indikator yang sah:
Jika tidak ada indikator ini, satu agent lebih baik: lebih murah, lebih deterministik, lebih mudah di-debug. Multi-agent menambah biaya, latensi, dan titik kegagalan — investasi yang hanya terbayar untuk tugas yang benar-benar kompleks.
Dua pola arsitektur yang paling umum:
Satu agent pusat memecah tugas, mendelegasikan ke sub-agent, lalu merakit hasilnya.
Agent berbagi kontrol secara berurutan — tiap agent "menyerahkan" pekerjaan ke agent lain.
LangGraph mendukung keduanya dengan model state graph yang eksplisit — lebih terkontrol daripada loop bebas.
LangGraph merepresentasikan agent sebagai graph: node (fungsi/langkah) dan edge (transisi). State mengalir antar node secara eksplisit — determinisme naik karena alur didefinisikan kode, bukan keputusan model liar.
from langgraph.graph import StateGraph, END
from typing import TypedDict
class State(TypedDict):
task: str
riset: str
draft: str
feedback: str
def riset_node(state: State) -> dict:
return {"riset": research_llm(state["task"])}
def tulis_node(state: State) -> dict:
return {"draft": writer_llm(state["task"], state["riset"])}
def review_node(state: State) -> dict:
return {"feedback": reviewer_llm(state["draft"])}
def route_after_review(state: State) -> str:
return "tulis" if "revisi" in state["feedback"].lower() else END
g = StateGraph(State)
g.add_node("riset", riset_node)
g.add_node("tulis", tulis_node)
g.add_node("review", review_node)
g.set_entry_point("riset")
g.add_edge("riset", "tulis")
g.add_edge("tulis", "review")
g.add_conditional_edges("review", route_after_review)
app = g.compile()
hasil = app.invoke({"task": "Tulis laporan singkat tentang tren AI 2026"})
print(hasil["draft"])Perhatikan route_after_review: transisi adalah keputusan kode (ada kata "revisi"), bukan keputusan model. Ini contoh determinisme — kita mengontrol alur, model hanya mengisi konten.
CrewAI mengambil pendekatan berbeda: mendefinisikan crew (tim) berisi agent dengan peran dan task:
from crewai import Agent, Task, Crew
researcher = Agent(
role="Peneliti AI",
goal="Mengumpulkan fakta akurat tentang topik",
backstory="Analis yang teliti dengan akses alat pencarian",
tools=[search_tool],
)
writer = Agent(
role="Penulis Teknis",
goal="Menyusun laporan jelas dari hasil riset",
backstory="Penulis berpengalaman di teknologi",
)
riset = Task(description="Riset tren AI 2026", agent=researcher)
laporan = Task(description="Tulis laporan 3 paragraf", agent=writer)
crew = Crew(agents=[researcher, writer], tasks=[riset, laporan])
result = crew.kickoff()CrewAI menekankan kemudahan: definisikan peran dan task, framework mengatur interaksi. LangGraph menekankan kontrol eksplisit — penting untuk produksi yang butuh determinisme.
Note
Pilihan framework bukan tujuan. Konsep inti yang harus kalian kuasai: peran agent, alur transisi (graph vs handoff), state antar node, dan batas iterasi. Framework berganti, konsep bertahan.
Kompleksitas multi-agent mengundang nondeterminisme. Cara menjaga determinisme:
from langgraph.graph import Graph
g = Graph()
g.add_node("agent", agent_node)
g.add_conditional_edges("agent", should_continue,
{"lanjut": "agent", "selesai": END})
app = g.compile()
app = app.with_retry(max_retries=2) # retry node yang gagalInti yang harus dibawa pulang:
Di episode 24 selanjutnya kita menggabungkan semua kemampuan knowledge: RAG lanjutan & agents — hybrid search, graph RAG, agentic RAG, dan merancang RAG skala produksi. Sampai jumpa di episode 24!