Prompting dasar & parameter model
Prompting bukan mantra ajaib — ia cara terstruktur memberi model instruksi, konteks, dan batasan yang jelas. Materi ini peta parameter dan pola dasar yang dipakai di hampir semua panggilan API.
Intisari
- System prompt menetapkan peran & aturan main model untuk seluruh percakapan; user prompt adalah permintaan spesifik saat itu.
- temperature (0–1) mengatur keacakan: 0 = paling deterministik/konsisten, mendekati 1 = paling variatif/kreatif.
- max_tokens membatasi panjang output — bukan input. Melebihi batas, jawaban terpotong di tengah, bukan error.
- Prompt yang baik itu spesifik: beri contoh (few-shot), format output yang diinginkan, dan batasan eksplisit — bukan sekadar 'tolong jelaskan X'.
- Prompt engineering adalah proses iteratif: tulis, uji dengan kasus nyata, ukur, revisi — bukan sekali jadi.
Anatomi satu panggilan
Hampir setiap panggilan ke LLM API punya tiga bagian yang bisa kamu atur: system prompt (instruksi peran & aturan main, berlaku sepanjang percakapan), messages (riwayat percakapan, bergantian user/assistant), dan parameter (temperature, max_tokens, dst).
import anthropic
client = anthropic.Anthropic() # baca ANTHROPIC_API_KEY dari environment
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
system="Kamu adalah asisten customer service toko online. Jawab singkat, ramah, "
"dan selalu dalam Bahasa Indonesia. Kalau tidak yakin, katakan tidak tahu.",
messages=[
{"role": "user", "content": "Berapa lama pengiriman ke Surabaya?"}
],
)
print(response.content[0].text)
| Bagian | Fungsinya | Analogi kode |
|---|---|---|
system | Aturan main yang berlaku sepanjang sesi — peran, batasan, gaya bahasa | Konfigurasi/konstruktor |
messages | Riwayat percakapan bergantian user/assistant | Argumen fungsi + state |
Parameter (temperature, dst) | Mengatur cara model memilih token, bukan isi pengetahuannya | Flag/opsi pemanggilan |
Parameter yang paling sering diatur
| Parameter | Rentang | Efeknya | Kapan dipakai |
|---|---|---|---|
temperature | 0.0 – 1.0 | 0 = selalu pilih token paling mungkin (konsisten); makin tinggi, makin sering pilih token yang kurang mungkin (variatif) | 0 untuk ekstraksi data/klasifikasi; 0.7–1.0 untuk brainstorming/penulisan kreatif |
max_tokens | angka bulat | Batas atas panjang output. Jawaban terpotong paksa kalau limitnya kena duluan | Set cukup besar untuk kasusmu; terlalu kecil = jawaban terpotong tanpa error |
top_p | 0.0 – 1.0 | Membatasi pilihan token ke kumpulan probabilitas kumulatif teratas — cara lain mengatur variasi | Biasanya cukup atur salah satu: temperature ATAU top_p, jarang dua-duanya |
stop_sequences | daftar string | Model berhenti generate begitu menghasilkan salah satu string ini | Membatasi output ke format tertentu, mis. berhenti di "\n\n" |
Jebakan paling umum untuk pemula: menaikkan temperature untuk membuat jawaban
"lebih pintar". temperature tidak memengaruhi pengetahuan atau kualitas penalaran model sama
sekali — ia cuma mengatur seberapa acak pemilihan katanya. Untuk tugas yang butuh jawaban konsisten &
bisa diulang (ekstraksi data, klasifikasi, kode), temperature=0 hampir selalu pilihan yang
benar.
Pola prompt yang benar-benar bekerja
- Beri peran & konteks di system prompt — "Kamu adalah..." lebih efektif daripada mengulang instruksi di setiap pesan user.
- Spesifik soal format output — "jawab dalam 3 poin" jauh lebih andal daripada "jawab singkat".
- Beri contoh (few-shot) saat formatnya rumit atau butuh konsistensi tinggi — satu-dua contoh input→output sering lebih efektif daripada penjelasan panjang.
- Pisahkan instruksi dari data — gunakan delimiter jelas (XML tag, misalnya) supaya model tidak bingung mana instruksi mana teks yang diproses.
system_prompt = """Kamu mengekstrak data pesanan dari email pelanggan.
Jawab HANYA dengan JSON, tanpa penjelasan tambahan, dengan skema:
{"nama": string, "produk": string, "jumlah": number}
Contoh:
Input: "Halo, saya Budi mau pesan 3 kaos ukuran L"
Output: {"nama": "Budi", "produk": "kaos ukuran L", "jumlah": 3}
"""
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=200,
temperature=0, # butuh output konsisten, bukan kreatif
system=system_prompt,
messages=[{"role": "user", "content": "Halo min, Ani pesan 2 tas ransel ya"}],
)
Prompt engineering itu iteratif, bukan sekali tulis. Prompt yang terlihat bagus untuk satu contoh bisa gagal total untuk kasus tepi (edge case) yang tidak kamu bayangkan. Kumpulkan contoh input nyata (atau realistis), jalankan, lihat mana yang gagal, revisi prompt — dan ulangi. Ini yang dibahas lebih formal sebagai evaluasi di Fase 2 dan 5.
Latihan: pasang anthropic SDK (pip install anthropic), buat API key,
lalu jalankan contoh ekstraksi JSON di atas dengan tiga kalimat pesanan yang berbeda gaya bahasanya
(formal, santai, dengan typo). Bandingkan hasilnya dengan temperature=0 vs
temperature=1 — jalankan yang temperature=1 dua kali dengan input sama dan
lihat apakah hasilnya berubah.
Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.