Belajar AI Engineer - Prompt Engineering Dasar
Episode 4 of 28

Belajar AI Engineer - Prompt Engineering Dasar

Menguasai keterampilan paling sering dipakai AI engineer: menulis prompt yang konsisten. Dibahas system/user/assistant roles, teknik zero-shot dan few-shot, prinsip iterasi, hingga cara mengoptimasi prompt agar hemat token dan stabil di produksitype: text

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Setelah di episode 3 kalian memanggil LLM API dengan benar, episode ini mengasah keterampilan yang menentukan kualitas produk AI: prompt engineering. Banyak yang menganggapnya "menulis kalimat", padahal di produksi prompt adalah kode — ia harus deterministik, bisa diuji, dan bisa diiterasi.

Mengapa episode ini penting? Karena prompt adalah antarmuka utama antara kalian dan model. Satu perbedaan kecil — penempatan instruksi, format contoh, atau kata yang ambigu — bisa mengubah kualitas jawaban secara drastis. Dan karena prompt dikirim berulang kali, prompt yang boros token adalah biaya yang membayar berulang kali.

Tiga Peran: System, User, Assistant

Struktur messages di API memungkinkan kalian menempatkan konteks di lapisan yang tepat:

  • system: instruksi global tentang bagaimana model berperilaku. Ditetapkan sekali, tidak berubah per percakapan.
  • user: permintaan nyata dari pengguna.
  • assistant: jawaban model — bisa disuntikkan manual untuk few-shot (memberi contoh).
PythonMenempatkan peran dengan benar
messages = [
    {"role": "system", "content": "Kamu adalah analis keuangan. Jawab ringkas, "
     "sertakan angka, dan sebutkan asumsi jika datanya kurang."},
    {"role": "user", "content": "Analisis pertumbuhan pendapatan kuartal ini."},
]

Prinsipnya: konteks yang tetap masuk system, permintaan yang berubah masuk user. Ini membuat prompt mudah dikelola dan diuji per komponen.

Zero-Shot vs Few-Shot

  • Zero-shot: meminta model langsung menjawab tanpa contoh. Cepat, murah, tapi hasilnya bisa bervariasi untuk format yang spesifik.
  • Few-shot: memberi 2-5 contoh di dalam prompt. Lebih banyak token, tapi hasil jauh lebih konsisten — terutama untuk ekstraksi, klasifikasi, dan format output.
PythonFew-shot untuk ekstraksi data
import json
from openai import OpenAI
 
client = OpenAI()
 
examples = [
    {"user": "Beli kopi 25 ribu di kedai sebelah.",
     "assistant": json.dumps({"jenis": "belanja", "nominal": 25000})},
    {"user": "Gaji bulanan masuk 8 juta.",
     "assistant": json.dumps({"jenis": "pemasukan", "nominal": 8000000})},
]
 
messages = [{"role": "system", "content": "Ekstrak transaksi ke JSON. "
            "Hanya balas JSON, tanpa penjelasan."}]
for ex in examples:
    messages.append({"role": "user", "content": ex["user"]})
    messages.append({"role": "assistant", "content": ex["assistant"]})
messages.append({"role": "user", "content": "Transfer ke teman 150 ribu."})
 
r = client.chat.completions.create(model="gpt-4o-mini", messages=messages)
print(r.choices[0].message.content)

Contoh di atas adalah pola yang sangat umum di produksi: ekstraksi terstruktur dengan few-shot. Di episode 5 kita ganti pendekatan ini dengan structured output yang lebih andal.

Prinsip Menulis Prompt yang Bagus

Empat prinsip yang berlaku di semua model:

  1. Spesifik dan terukur: "ringkas dalam maksimal 3 kalimat" lebih baik daripada "jawab singkat".
  2. Beri peran dan batasan: "kamu adalah reviewer kode senior" memberi arah, tapi sertakan juga aturan eksplisit.
  3. Tentukan format output: sebutkan struktur, panjang, dan bahasa jawaban.
  4. Satu instruksi per kalimat: instruksi campur-campur membuat model kehilangan fokus.
text
System: Kamu adalah asisten pencarian. Tugasmu menjawab dari fakta yang
diberikan dalam <context> saja.
 
Aturan:
- Jika fakta tidak ada di context, jawab "Tidak diketahui".
- Maksimal 3 kalimat.
- Selalu sebutkan sumber dari context.

Catatan: di series ini kita menghindari penanda yang ditulis dengan karakter kurung sudut — gunakan penanda yang aman seperti [context] dan [end] agar tidak bentrok dengan markup.

Iterasi: Prompt Adalah Proses

Prompt yang bagus tidak lahir sekali jadi. Alur iterasi yang benar:

  1. Tulis versi pertama, uji dengan 5-10 variasi input.
  2. Catat di mana ia gagal — bukan di mana ia berhasil.
  3. Ubah satu variabel saja per iterasi.
  4. Simpan versi prompt di version control (prompt = kode).
  5. Setelah stabil, kunci dengan test otomatis (episode 9).
PythonUji prompt dengan beberapa kasus
def test_prompt(question: str) -> str:
    messages = [{"role": "system", "content": PROMPT}, {"role": "user", "content": question}]
    r = client.chat.completions.create(model="gpt-4o-mini", messages=messages, temperature=0)
    return r.choices[0].message.content
 
cases = [
    "Fakta yang tidak ada di context.",
    "Apa isi context nomor satu?",
    "Jawab dengan format salah, tolak.",
]
for c in cases:
    print(f"Q: {c}\nA: {test_prompt(c)}\n")

Tip

Gunakan temperature=0 saat menguji prompt — ini menghilangkan faktor acak sehingga perbedaan hasil benar-benar berasal dari perubahan prompt, bukan dari keacakan sampling.

Optimasi Token: Prompt yang Hemat

Token adalah uang. Cara menghemat tanpa menurunkan kualitas:

  • Shorten system prompt: hanya instruksi yang benar-benar berfungsi. Hapus basa-basi.
  • Gunakan few-shot secukupnya: 2 contoh sering cukup; 5 contoh mungkin berlebihan.
  • Ringkas konteks di luar prompt: simpan detail panjang di retrieval (RAG), bukan di prompt.
  • Cache: jika system prompt statis, beberapa penyedia menawarkan prompt caching — kita bahas di episode 8.

Common Pitfalls

  • Prompt dihardcode di seluruh kode: simpan sebagai konstanta atau file terpisah agar mudah diiterasi dan diuji.
  • Mengandalkan satu model: prompt yang bagus di GPT belum tentu bagus di Claude. Uji lintas model.
  • Tanpa versi: tim produksi tidak bisa rollback prompt yang tidak punya versi.
  • Menggunakan prompt untuk fakta: jangan minta model "mengingat" fakta dari training; berikan via retrieval.

Penutup

Inti yang harus dibawa pulang:

  • Konteks tetap → system; permintaan berubah → user; contoh → assistant.
  • Few-shot meningkatkan konsistensi format, dengan biaya token lebih besar.
  • Prompt adalah kode: spesifik, berversi, dan diuji dengan temperature=0.
  • Hemat token sejak awal: singkat, relevan, dan cache.

Di episode 5 selanjutnya kita membahas langkah berikutnya yang membuat prompt jadi bisa dipakai mesin: structured output & tool use — JSON mode, function calling, dan membangun agent sederhana yang bisa memanggil tools. Sampai jumpa di episode 5!

Belajar AI Engineer - Prompt Engineering Dasar | Belajar AI Engineer