Kursus → Modul 9: Multi-Agent Workflows
Sesi 2 dari 7

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.

flowchart LR A["Agent 1
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.

flowchart LR A["Output Agent 1"] --> B{"Validasi Schema"} B -- "Valid" --> C["Input Agent 2"] B -- "Ga Valid" --> D["Retry Agent 1
(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

Tugas

Ambil 3-agent chain yang kamu desain di Sesi 9.1. Definisikan data contract persis buat setiap handoff:

  1. Tentukan format output (JSON schema atau struktur Markdown) buat Agent 1.
  2. Tentukan kebutuhan input Agent 2 (field mana dari output Agent 1 yang dibutuhkan?).
  3. Tentukan format output buat Agent 2.
  4. Tentukan kebutuhan input Agent 3.
  5. 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.