Prompt Engineering Bukan Sekadar Nulis Teks
Banyak yang menganggap prompt engineering hanya soal nulis instruksi ke LLM. Kenyataannya, ini adalah disiplin yang membutuhkan pemahaman mendalam tentang bagaimana LLM bekerja, limitation mereka, dan bagaimana mengarahkan mereka untuk hasil yang konsisten. Dari pengalaman saya membangun AI Agent, prompt engineering adalah salah satu skill paling berpengaruh.
Di artikel ini, saya akan berbagi tips yang sudah saya buktikan di production, bukan hanya teori dari paper.
Teknik System Prompt yang Efektif
Sistem prompt adalah fondasi dari setiap AI Agent. Berikut template yang saya gunakan untuk kebanyakan proyek:
const systemPrompt = `Kamu adalah asisten AI yang bekerja untuk {{company_name}}.
ATURAN:
1. Selalu gunakan bahasa Indonesia kecuali user menggunakan bahasa Inggris
2. Jangan memberikan informasi finansial atau medis
3. Jika tidak tahu jawaban, katakan dengan jujur
4. Selalu referensikan sumber informasi jika tersedia
5. Format response menggunakan markdown
TOOLS yang tersedia:
{{tools_description}}
CONTOH INTERAKSI:
User: Cek saldo rekening saya
Agent: Saya akan cek saldo rekening Anda. [EXECUTE: check_balance]
User: Transfer 100rb ke Budi
Agent: Saya akan proses transfer Rp 100.000 ke Budi. Mohon konfirmasi: [EXECUTE: transfer]`;Few-Shot Learning untuk Konsistensi
Saya selalu menyertakan 2-3 contoh interaksi di system prompt untuk memastikan output konsisten. Ini sangat membantu terutama untuk format response yang spesifik:
fewShotExamples := []Example{
{
Input: "Tolong buatkan ringkasan penjualan bulan ini",
Output: `## Ringkasan Penjualan Bulan Ini
**Total Transaksi:** 1,234 transaksi
**Total Revenue:** Rp 456.789.000
**Top Product:** Widget Pro (234 unit)
### Trend
- Naik 15% dari bulan lalu
- Puncak penjualan di minggu ke-3`,
},
}Structured Output dengan JSON Mode
Untuk agent yang perlu return data terstruktur, saya selalu gunakan JSON mode atau function calling. Ini memastikan output selalu dalam format yang bisa di-parsing oleh sistem downstream:
func buildStructuredPrompt(task string, schema map[string]string) string {
schemaJSON, _ := json.MarshalIndent(schema, "", " ")
return fmt.Sprintf(`Berdasarkan task berikut, buat output dalam format JSON:
Task: %s
Schema yang harus diikuti:
%s
PENTING: Output harus valid JSON yang mengikuti schema di atas.`, task, schemaJSON)
}Chain-of-Thought untuk Reasoning
Untuk tugas yang membutuhkan reasoning complex, saya implement chain-of-thought prompting. Agent diminta untuk memikirkan step-by-step sebelum memberikan final answer. Ini dramatically meningkatkan akurasi untuk tugas-tugas yang membutuhkan logika.
Common Mistakes
Kesalahan paling umum yang saya lihat di developer Indonesia: terlalu banyak instruksi dalam satu prompt, tidak memberikan contoh yang cukup, dan tidak menghandle edge cases. Prompt yang baik harus jelas, concis, dan punya fallback behavior untuk situasi yang tidak terduga.