Prompt Engineering Fundamentals

4 jam10 min baca
Tujuan

Paham anatomi prompt yang baik dan teknik dasar yang akan kamu pakai sepanjang karir LLM.

01 — Prompt Engineering Fundamentals

Estimasi: 4 jam Tujuan: Paham anatomi prompt yang baik dan teknik dasar yang akan kamu pakai sepanjang karir LLM.


Kenapa Materi Ini Penting?

Prompt engineering bukan skill tambahan — ini adalah cara kamu "memprogram" LLM. Di bootcamp Dicoding nanti, hampir setiap modul melibatkan interaksi dengan model AI, dan kualitas output yang kamu dapat berbanding lurus dengan kualitas prompt yang kamu tulis. Orang yang menguasai prompt engineering bisa mendapat hasil 2-3x lebih baik dari model yang sama dibanding yang asal ketik. Ini skill yang langsung applicable di dunia kerja, karena setiap perusahaan yang pakai AI butuh orang yang tahu cara "berbicara" dengan model secara efektif.


Pembukaan

Prompt engineering = seni dan sains menyusun input ke LLM untuk dapat output terbaik.

Banyak orang anggap ini sepele ("kan tinggal nanya"). Yang serius mengerjakan ini paham: prompt yang sama dengan urutan kata berbeda bisa beda akurasi 30-40%. Untuk aplikasi production, prompt = software.


Bagian 1 — Anatomi Prompt yang Baik

Prompt bagus punya struktur. Mari kita pecah komponennya:

Template Lengkap

[ROLE] - Kamu adalah ___
[CONTEXT] - Background informasi yang model perlu tahu
[TASK] - Apa yang harus dilakukan
[INPUT] - Data yang harus diproses
[CONSTRAINTS] - Aturan/batasan
[FORMAT] - Bentuk output yang diinginkan
[EXAMPLES] - Few-shot examples (kalau ada)

Contoh Penerapan

Prompt jelek:

"Buat caption Instagram"

Prompt baik:

[ROLE] Kamu adalah copywriter senior dengan spesialisasi konten skincare.

[CONTEXT] Brand kami adalah skincare lokal Indonesia, target wanita 25-35 tahun, 
urban, profesional. Brand voice: friendly, sophisticated, science-backed.

[TASK] Tulis caption Instagram untuk launching produk serum vitamin C baru.

[INPUT] Produk: Glow Serum 15% Vitamin C
- Mengurangi flek
- Mencerahkan
- 30ml, harga Rp 250.000

[CONSTRAINTS]
- Maksimal 150 kata
- Sertakan 3-5 emoji yang relevan
- Akhiri dengan call-to-action ke link bio
- Hindari kata "best", "amazing" yang generic

[FORMAT]
- 1 hook line (1 kalimat menarik perhatian)
- 1 paragraf body (manfaat + cerita)
- 1 CTA
- 5 hashtag

[EXAMPLES]
Contoh dari brand lain:
"✨ Kulit glowing tanpa drama? ..."

Bedanya: spesifik vs generic.


Bagian 2 — Prinsip Dasar

1. Spesifik Selalu Menang

❌ "Tulis tentang AI" ✅ "Tulis essay 500 kata tentang dampak AI pada pekerjaan kreatif di Indonesia, dari perspektif pekerja muda. Format akademik dengan 3 argumen utama."

2. Kasih Konteks

LLM tidak tahu yang tidak kamu kasih tahu.

❌ "Apakah pendekatan ini bagus?" ✅ "Untuk aplikasi e-commerce dengan 100k user/hari, apakah pendekatan caching dengan Redis ini bagus? [paste code]"

3. Definisikan Audience

❌ "Jelaskan blockchain" ✅ "Jelaskan blockchain untuk audiens nenek 70 tahun yang tidak tech-savvy. Pakai analogi sehari-hari."

4. Tentukan Format

❌ "Daftar fitur produk" ✅ "Daftar 10 fitur produk dalam format: nama fitur (3-5 kata) | manfaat (1 kalimat). Pakai bullet points."

5. Iterasi

Prompt pertama jarang sempurna. Iteratif:

  • Lihat output
  • Identifikasi yang kurang
  • Refine prompt
  • Coba lagi

Pro tip: simpan prompt yang berhasil di file prompts.md. Bangun library prompt sendiri.


Bagian 3 — Zero-Shot Prompting

Zero-shot = tanya tanpa kasih contoh.

Klasifikasikan sentiment review berikut sebagai POSITIVE, NEGATIVE, atau NEUTRAL.

Review: "Produk OK lah, harga sebanding kualitas."
Sentiment:

Kapan Pakai?

  • Task yang umum (klasifikasi sentiment, summarization)
  • Model besar (GPT-4, Claude) yang sudah kuat di task tersebut
  • Saat kamu ingin output cepat tanpa setup banyak

Tips Zero-Shot

  1. Definisikan kelas dengan jelas — "POSITIVE, NEGATIVE, atau NEUTRAL"
  2. Akhiri dengan label kosong ("Sentiment:") supaya model tahu apa yang harus diisi
  3. Spesifikasi output format kalau perlu

Bagian 4 — Few-Shot Prompting

Few-shot = kasih beberapa contoh dulu, baru tanya.

Klasifikasikan sentiment review berikut.

Review: "Sangat puas dengan kualitas, akan beli lagi!"
Sentiment: POSITIVE

Review: "Mengecewakan sekali, tidak sesuai gambar."
Sentiment: NEGATIVE

Review: "Lumayan, sesuai harga."
Sentiment: NEUTRAL

Review: "Produk OK lah, harga sebanding kualitas."
Sentiment:

Kenapa Few-Shot Sering Lebih Akurat?

  1. Model lihat pola yang kamu mau
  2. Format output otomatis konsisten
  3. Edge cases tertangani lebih baik
  4. Bahasa & nuansa lokal lebih tepat

Berapa Contoh?

  • 1-shot: sudah lebih baik dari zero-shot
  • 3-5 shot: sweet spot kebanyakan task
  • >10 shot: diminishing return, dan boros token

Tips Few-Shot

  1. Variasikan examples — jangan semua positive saja
  2. Edge cases wajib ada — yang ambiguous
  3. Konsistensi format — semua contoh punya format sama
  4. Order matters — kadang model recency-biased

Bagian 5 — Role Prompting

Beri model persona spesifik. Output jadi terasa lebih ahli.

Pattern

Kamu adalah [role] dengan [pengalaman/kualifikasi].
Tugasmu adalah [task].

[Input/pertanyaan]

Contoh

Kamu adalah dokter spesialis kulit dengan 20 tahun pengalaman 
di Indonesia. Bicaramu profesional tapi mudah dipahami orang awam.

Pasien tanya: "Kenapa wajah saya jerawatan terus padahal sudah pakai banyak produk?"

Berikan jawaban dengan struktur:
1. Penyebab umum (3-5)
2. Yang harus dihindari
3. Saran konkrit

Role yang Sering Dipakai

  • Profesional spesifik: dokter, lawyer, accountant, marketing manager
  • Educator: "guru SD untuk anak 7 tahun"
  • Critic: "editor majalah dengan high standard"
  • Persona lawan: "skeptical investor yang tidak mudah yakin"

Hati-hati: role tidak bikin model jadi factually correct di domain tsb. Untuk medis/legal/financial, selalu verifikasi. Role cuma bikin gaya komunikasi.


Bagian 6 — Output Structuring

LLM bisa diminta output dalam format apapun yang kamu specify.

Plain Text

Jelaskan dalam 3 paragraf...

Bullet Points

Daftarkan 5 manfaat dalam format bullet points.
- Mulai tiap point dengan emoji yang relevan
- Maksimal 1 kalimat per point

Tabel Markdown

Bandingkan 3 framework dalam tabel markdown dengan kolom:
| Framework | Pros | Cons | Best for |

JSON (Untuk Programatik)

Extract entitas dari kalimat berikut. Output JSON:
{
  "person": [...],
  "location": [...],
  "organization": [...]
}

Kalimat: "Joko Widodo bertemu dengan Elon Musk di Bali pada acara Tesla Indonesia."

Pro tip: kalau butuh JSON, TAMBAHKAN: "Output ONLY valid JSON, no markdown code blocks, no explanation." Tanpa itu, model sering tambah ```json ... ``` yang harus di-strip.

Format Konsisten dengan Schema

Berdasarkan resume berikut, ekstrak ke JSON dengan schema:

{
  "name": str,
  "email": str | null,
  "skills": [str],
  "experience_years": int
}

Resume:
[paste resume...]

Output (JSON only):

Bagian 7 — Prompt Engineering vs Conversational

Beda prompt untuk task otomatis vs chat untuk dialog.

Prompt untuk Task

Lengkap, self-contained:

[ROLE] [CONTEXT] [TASK] [INPUT] [FORMAT]

Contoh use case:

  • API integration
  • Batch processing
  • Otomasi

Conversational

Lebih ringkas, manfaatkan multi-turn:

User: Tolong jelaskan apa itu transformer
AI: ...
User: Bisa kasih analogi yang lebih sederhana?
AI: ...
User: Sekarang bandingkan dengan RNN

Insight: untuk dapat hasil bagus di chat, bangun konteks bertahap dari pertanyaan-pertanyaan, bukan satu pertanyaan raksasa.


Bagian 8 — Common Prompt Anti-Patterns

Anti-pattern 1: Prompt Negatif

❌ "JANGAN pakai kata 'best'. JANGAN tulis lebih dari 100 kata. JANGAN lupa emoji."

LLM kadang abaikan negation. Lebih baik:

✅ "Pakai kata yang spesifik dan original. Tulis 50-100 kata. Sertakan minimal 3 emoji."

Anti-pattern 2: Caps Lock & Tanda Seru

❌ "TULIS DENGAN BAGUS!!! INI PENTING!!!"

LLM tidak peduli. Spesifikasi yang membantu, bukan emosi.

Anti-pattern 3: Prompt Terlalu Panjang Tanpa Struktur

Wall of text 1000 kata tanpa pemisah → model bingung apa yang penting.

✅ Pakai heading, bullet, atau XML-like tags:

<role>...</role>
<task>...</task>
<input>...</input>

Anti-pattern 4: Asking for Opinion on Facts

❌ "Apa lebih bagus React atau Vue?" ✅ "Bandingkan React dan Vue untuk kasus spesifik: aplikasi internal company dengan 5 developer junior, perlu rapid prototyping. Berikan rekomendasi."

LLM sangat baik di comparative analysis dengan konteks, kurang baik di opini subjektif.

Anti-pattern 5: Trust LLM Buta

LLM bisa halusinasi. Untuk fakta penting:

  1. Tanya source-nya
  2. Cross-check dengan Google/dokumentasi resmi
  3. Pakai RAG dengan dokumen terpercaya

Bagian 9 — Token Awareness

Setiap prompt + output kena biaya per token. Hemat kalau bisa:

Estimasi Token

  • 1 token ≈ 4 karakter Inggris
  • 1 token ≈ 0.75 kata Inggris
  • Indonesia/Mandarin biasanya lebih banyak token per kata

Prompt yang Boros

Saya akan memberikan kepada anda sebuah teks dan saya ingin anda 
melakukan klasifikasi atas teks tersebut sebagai positif atau negatif. 
Tolong berikan jawabannya dengan singkat...

Prompt yang Hemat

Klasifikasi: POSITIVE/NEGATIVE.
Teks: ...
Label:

Sama efektif, hemat 80% token.

Hemat Output

  • Set max_tokens di API call
  • Spesifikasi panjang ("dalam 1 paragraf", "max 100 kata")
  • Stop sequence kalau perlu

Bagian 10 — Tools untuk Prompt Engineering

Free Tier untuk Eksperimen

  • Google AI Studio (aistudio.google.com) — Gemini, free tier generous, ada side-by-side compare
  • Anthropic Console — Claude, ada free credit
  • OpenAI Playground — GPT, butuh credit minimum $5
  • Hugging Face Chat — open models gratis

Tips di Playground

  • Adjust temperature (0 untuk deterministic, 0.7 default, 1.5+ kreatif)
  • Try top_p sebagai alternatif temperature
  • Lihat token count untuk estimasi cost
  • Save successful prompts ke library

Cek Pemahaman

  • Bisa sebut 7 komponen anatomi prompt?
  • Tahu beda zero-shot dan few-shot?
  • Bisa pakai role prompting dengan benar?
  • Bisa minta output dalam format JSON?
  • Tahu 5 anti-pattern yang harus dihindari?

Challenge 3.1

Challenge 1 — Prompt Battle

Untuk setiap task, bikin 3 versi prompt: zero-shot, few-shot, role-based.

Task: Klasifikasi review e-commerce ke kategori: produk, pengiriman, customer service, harga.

Test 10 review berbeda. Catat akurasi tiap versi.

Challenge 2 — Anatomi Lengkap

Bikin prompt lengkap (semua 7 komponen) untuk task: menulis email penolakan job offer dengan sopan.

Test, lihat output. Iterasi 3 kali, refine sampai output bagus.

Challenge 3 — JSON Extractor

Bikin prompt yang ekstrak info dari resume bahasa Indonesia ke JSON dengan schema:

{
  "nama": str,
  "umur": int | null,
  "pendidikan": [{"jurusan": str, "universitas": str, "tahun": int}],
  "pengalaman": [{"posisi": str, "perusahaan": str, "tahun": int}],
  "skills": [str]
}

Test dengan 3 resume berbeda (boleh fiktif).

Challenge 4 — Iterative Refinement

Mulai dengan prompt jelek:

"Buat marketing copy"

Iterasi 5x sampai dapat output yang bagus untuk launching kursus online programming. Catat tiap iterasi:

  • Versi prompt
  • Apa yang ditambahkan
  • Output kira-kira
  • Why output lebih baik

Challenge 5 — Cross-Model Compare

Pakai prompt yang sama di:

  • ChatGPT
  • Claude
  • Gemini

Catat: mana yang paling sesuai harapan? Untuk task apa?

Tujuan: develop "feel" untuk kekuatan model berbeda.

Challenge 6 — Build Prompt Library

Bikin folder prompts/ di repo GitHub kamu dengan struktur:

prompts/
├── classification/
│   ├── sentiment-id.md
│   ├── category-ecommerce.md
├── generation/
│   ├── email-template.md
│   ├── social-media-caption.md
├── extraction/
│   ├── resume-parser.md
│   └── invoice-extract.md
└── README.md

Setiap file: prompt template + 1-2 contoh hasil + tips usage.

Mulai dengan 6-8 prompt. Akan kamu kembangkan sepanjang career.


Selanjutnya: 02-prompt-techniques.md — teknik advanced: Chain-of-Thought, ReAct, prompt chaining.