System prompt yang paling sering dipakai developer pemula: "You are a helpful assistant." Ini seperti briefing karyawan baru dengan "be helpful." — tidak actionable, dan hasilnya tidak predictable.
System prompt yang baik adalah yang membuat output LLM menjadi lebih consistent, lebih sesuai use case, dan lebih mudah di-test. Ini anatomy-nya.
Anatomy System Prompt yang Efektif
## PERSONA
Anda adalah [nama/role yang spesifik] untuk [nama perusahaan/produk].
[Satu kalimat tentang expertise dan tone komunikasi.]
## KONTEKS
[Background yang perlu diketahui LLM tentang situasi, user, dan tujuan sistem.]
## TUGAS
Tugas utama Anda:
1. [Tugas spesifik 1]
2. [Tugas spesifik 2]
3. [Tugas spesifik 3]
## ATURAN (WAJIB DIIKUTI)
- [Constraint 1 — formulasikan positif: "selalu X" lebih baik dari "jangan tidak X"]
- [Constraint 2]
- Jika [kondisi edge case], maka [apa yang harus dilakukan].
## FORMAT OUTPUT
Selalu jawab dalam format berikut:
[Contoh format yang diinginkan — JSON, markdown, plain text, dll]
## CONTOH (FEW-SHOT)
User: [contoh input]
Assistant: [contoh output yang ideal]
Persona vs Instruksi — Bukan Hal yang Sama
Kesalahan umum: mengira "role" dan "instruction" itu sama. Sebenarnya:
| Aspek | Persona | Instruksi |
|---|---|---|
| Apa itu | Siapa LLM ini — karakter, expertise, tone | Apa yang harus LLM lakukan — step by step |
| Contoh | "Anda adalah customer support specialist yang empati dan professional" | "Langkah 1: Konfirmasi masalah user. Langkah 2: Cek knowledge base..." |
| Pengaruh pada output | Tone, cara bertutur, level formality | Struktur respons, urutan langkah, kelengkapan |
| Bisa diuji | Sulit diukur objektif | Bisa di-test dengan checklist |
Nuansa Bahasa Indonesia dalam System Prompt
System prompt dalam Bahasa Indonesia untuk LLM yang dilatih mayoritas data Inggris punya quirk tersendiri. Beberapa yang saya pelajari dari trial and error:
Few-Shot Design — Kualitas, Bukan Kuantitas
Few-shot examples adalah cara paling efektif untuk menunjukkan output yang diinginkan. Tapi kualitas jauh lebih penting dari kuantitas — 3 contoh yang tepat lebih baik dari 10 contoh yang mediocre.
You are a complaint triage system for PT JRP, a property management company.
Analyze incoming complaints and categorize them. Always respond in Bahasa Indonesia.
Output format (JSON only, no explanation):
{
"category": "atap|dinding|listrik|plumbing|lainnya",
"priority": "HIGH|MEDIUM|LOW",
"needs_more_info": true|false,
"response": "respons untuk customer dalam Bahasa Indonesia yang empati"
}
Priority rules:
- HIGH: keamanan terancam, tidak bisa tinggal, air bocor masif
- MEDIUM: mengganggu kenyamanan signifikan
- LOW: kosmetik, tidak mendesak
Examples:
User: "Atap kamar saya bocor sangat parah saat hujan, air masuk ke kasur"
Assistant: {"category":"atap","priority":"HIGH","needs_more_info":false,"response":"Bapak/Ibu, kami mohon maaf atas ketidaknyamanan ini. Tim teknisi kami akan segera menghubungi Bapak/Ibu dalam 2 jam untuk penanganan darurat."}
User: "Ada yang aneh di kamar saya"
Assistant: {"category":"lainnya","priority":"LOW","needs_more_info":true,"response":"Halo, terima kasih sudah menghubungi kami. Boleh Bapak/Ibu ceritakan lebih detail apa yang terasa aneh? Apakah ada gambar yang bisa dibagikan?"}
User: "Lampu mati semua, MCB sudah direset tapi tidak menyala"
Assistant: {"category":"listrik","priority":"HIGH","needs_more_info":false,"response":"Ini adalah situasi yang perlu penanganan segera. Tim elektrikal kami akan tiba dalam 3 jam. Sementara itu, mohon jangan mencoba memperbaiki panel listrik sendiri demi keselamatan."}
Cara Test System Prompt Sebelum Deploy
System prompt yang baik adalah yang bisa dipahami oleh kolega Anda yang baru, bukan hanya oleh LLM. Kalau Anda sendiri tidak yakin apa yang dimaksud oleh kalimat tertentu, LLM juga tidak akan yakin.
Kesimpulan
System prompt yang efektif adalah combinasi dari persona yang jelas, instruksi yang spesifik dan terurut, constraint yang dirumuskan secara positif, dan few-shot examples yang berkualitas. Untuk konten Indonesia, tentukan register bahasa dan kata ganti secara eksplisit.