Mendesain Agent Chain
Sesi 9.2 · ~5 menit baca
Masalah Handoff
Agent chain pecah di titik handoff. Agent 1 menghasilkan output. Agent 2 mengonsumsinya. Kalo output Agent 1 dalam format yang ga bisa di-parse Agent 2, chain-nya gagal. Kalo Agent 1 menyertakan informasi yang ga dibutuhkan Agent 2 (noise), context window Agent 2 membuang kapasitas. Kalo Agent 1 menghilangkan informasi yang dibutuhkan Agent 2 (gap), Agent 2 berhalusinasi buat mengisi kekosongan.
Mendesain agent chain itu desain kontrak. Setiap agent berjanji memberikan deliverable ke yang berikutnya. Kontrak menentukan format persis, field yang dibutuhkan, dan kriteria kualitas deliverable itu.
Data Contract Antar Agent
Data contract adalah spesifikasi yang mendefinisikan apa yang dioutputkan satu agent dan diharapkan agent berikutnya. Fungsinya kaya API contract di software engineering: kedua pihak sepakat soal schema.
Riset"] -- "Kontrak A→B
(JSON research brief)" --> B["Agent 2
Penulis"] B -- "Kontrak B→C
(Markdown draft)" --> C["Agent 3
Editor"] style A fill:#222221,stroke:#c8a882,color:#ede9e3 style B fill:#222221,stroke:#6b8f71,color:#ede9e3 style C fill:#222221,stroke:#c47a5a,color:#ede9e3
| Handoff | Format | Field yang Dibutuhkan | Validasi |
|---|---|---|---|
| Agent Riset ke Penulis | JSON | topic_summary, key_findings[], sources[], data_points[], gaps[] | JSON valid, key_findings punya 5+ item, sources punya 3+ item |
| Penulis ke Editor | Markdown | H1 title, H2 section sesuai outline, word count 900-1100 | Berisi semua heading yang diharapkan, word count dalam range |
| Editor ke Manusia | Markdown dengan anotasi | Teks asli, inline [TAG], skor per dimensi, verdict keseluruhan | Semua 5 dimensi diskor, verdict PASS/REWORK/FAIL |
Structured Output Itu Wajib
Teks bebas antar agent itu resep kegagalan. Waktu Agent Riset mengembalikan tembok prosa, Agent Penulis harus mem-parse-nya, memutuskan mana fakta mana opini, mencari tahu klaim mana yang punya sumber, dan mengekstrak data point. Langkah parsing itu memperkenalkan error.
Structured output (JSON, YAML, atau Markdown yang well-defined dengan heading konsisten) menghilangkan ambiguitas parsing. Agent Penulis ga menginterpretasi. Dia membaca field. Field data_points[0].value itu "61%." Field data_points[0].source itu "Deloitte 2025 Survey." Ga perlu interpretasi.
Buat memaksakan structured output, sertakan schema persis di system prompt setiap agent:
Output research brief kamu sebagai JSON dengan struktur persis ini:
{
"topic_summary": "string (2-3 kalimat)",
"key_findings": ["string", "string", ...],
"sources": [
{"title": "string", "url": "string", "tier": 1|2|3}
],
"data_points": [
{"claim": "string", "value": "string", "source": "string"}
],
"gaps": ["string", ...]
}
Menangani Pelanggaran Schema
Agent kadang melanggar schema. Mereka nambah field ekstra. Mereka menghilangkan field yang wajib. Mereka mengembalikan prosa bukannya JSON. Pipeline kamu butuh langkah validasi di antara setiap handoff.
(prompt dimodifikasi)"] D --> A style A fill:#222221,stroke:#c8a882,color:#ede9e3 style B fill:#222221,stroke:#c47a5a,color:#ede9e3 style C fill:#222221,stroke:#6b8f71,color:#ede9e3 style D fill:#222221,stroke:#8a8478,color:#ede9e3
Validasi schema bisa diotomatisasi. Buat output JSON, script Python ngecek: Apakah JSON-nya valid? Apakah berisi semua key yang dibutuhkan? Apakah tipe datanya benar (string vs. array vs. number)? Buat output Markdown, script ngecek: Apakah berisi heading yang diharapkan? Apakah word count-nya dalam range?
Kalo validasi gagal, retry agent dengan prompt yang dimodifikasi yang menyertakan error spesifik: "Output sebelumnya kamu ga punya field 'gaps'. Regenerate dengan semua field yang dibutuhkan." Kebanyakan pelanggaran schema selesai dalam satu retry.
Meminimalkan Context Bloat
Setiap handoff seharusnya hanya meneruskan apa yang dibutuhkan agent berikutnya. Output Agent Riset menyertakan source URL dan tier rating. Agent Penulis ga butuh URL (dia ga bikin sitasi di tahap ini). Meneruskannya membuang context token.
Bangun filter di antara setiap handoff yang menghapus field yang ga perlu. Agent Penulis menerima: topic_summary, key_findings, data_points. Dia ga menerima: source URL, tier rating, gap analysis. Field-field itu disimpan di metadata store pipeline buat dipakai oleh Editor atau reviewer manusia, tapi ga masuk ke context window Penulis.
Setiap token di context window agent yang ga langsung relevan dengan tugasnya mengurangi kualitas output-nya. Jaga handoff tetap ramping. Teruskan yang dibutuhkan. Simpan sisanya di tempat lain.
Bacaan Lanjutan
- Content Generation With Multi-Agent AI: Guide 2026, Sight AI
- Agentic Workflows: A Complete Guide, Kernshell
- Multi-Agent Workflows: Practical Guide, Kanerika (Medium)
Tugas
Ambil 3-agent chain yang kamu desain di Sesi 9.1. Definisikan data contract persis buat setiap handoff:
- Tentukan format output (JSON schema atau struktur Markdown) buat Agent 1.
- Tentukan kebutuhan input Agent 2 (field mana dari output Agent 1 yang dibutuhkan?).
- Tentukan format output buat Agent 2.
- Tentukan kebutuhan input Agent 3.
- Definisikan satu validasi per handoff (apa yang dianggap output valid?).
Tes chain-nya secara manual: jalankan setiap agent terpisah, verifikasi output-nya cocok dengan kontrak, dan masukkan ke agent berikutnya. Di mana handoff-nya pecah? Dokumentasikan setiap titik kegagalan.