Langsung ke konten
KamusNgoding
Pemula Prompt-engineering 4 menit baca

Tutorial Menulis Prompt Efektif untuk Pemula

#prompting #tutorial #ai #beginner

Pendahuluan

Halo teman-teman developer! Senang sekali bisa bertemu kembali di seri pengembangan chatbot berbasis LLM ini. Pada artikel sebelumnya (#3), kita sudah berhasil melakukan langkah fundamental, yaitu memanggil API LLM menggunakan Python. Kita sudah tahu cara mengirimkan sebuah pesan dan menerima balasan dari model bahasa besar.

Namun, ada satu masalah nyata yang mungkin sudah kalian rasakan: “Kok jawabannya tidak sesuai keinginan ya?” atau “Kok jawabannya terlalu panjang dan tidak nyambung?”. Jika kalian hanya mengirimkan instruksi singkat seperti “Buatlah resep makanan”, LLM akan memberikan jawaban yang sangat umum. Hasilnya mungkin tidak sesuai dengan kebutuhan spesifik aplikasi yang sedang kita bangun.

Di sinilah peran Prompt Engineering menjadi sangat krusial. Prompt Engineering bukan sekadar “cara bertanya”, melainkan sebuah disiplin ilmu dalam merancang, mengoptimasi, dan menyempurnakan input (prompt) agar model AI memberikan output yang paling akurat, relevan, dan berkualitas tinggi. Dalam artikel ini, kita akan mempelajari teknik-teknik dasar Prompt Engineering untuk mengubah chatbot sederhana kita menjadi asisten yang cerdas dan profesional.

Anatomi Prompt yang Efektif

Sebuah prompt yang berkualitas tidak dibuat secara acak. Ada struktur yang bisa kita ikuti agar LLM memahami maksud kita dengan presisi tinggi. Secara umum, sebuah prompt yang kuat terdiri dari empat komponen utama:

  1. Instruction (Instruksi): Tugas spesifik yang ingin kamu berikan kepada model.
  2. Context (Konteks): Latar belakang atau informasi tambahan yang membantu model memahami situasi.
  3. Input Data: Data atau teks yang ingin diproses oleh instruksi tersebut.
  4. Output Indicator: Format atau gaya jawaban yang diinginkan (misalnya: JSON, Markdown, atau bullet points).

Mari kita lihat perbandingannya dalam contoh berikut:

# Contoh 1: Prompt Buruk (Terlalu ambigu)
prompt_buruk = "Buat menu makan siang."

# Contoh 2: Prompt Bagus (Menggunakan anatomi lengkap)
# Instruksi: Buat menu makan siang
# Konteks: Untuk Budi yang sedang diet rendah karbohidrat dengan budget Rp 50.000
# Output Indicator: Dalam bentuk daftar list yang rapi
prompt_bagus = """
Kamu adalah seorang ahli gizi profesional. 
Buatlah menu makan siang yang sehat untuk Budi. 
Budi sedang menjalani diet rendah karbohidrat dan memiliki budget maksimal Rp 50.000 untuk satu kali makan.
Berikan jawaban dalam bentuk list poin-poin yang mencakup nama makanan dan estimasi harganya.
"""

print("--- Prompt Buruk ---")
print(prompt_buruk)
print("\n--- Prompt Bagus ---")
print(prompt_bagus)

Dengan memberikan konteks mengenai budget (Rp 50.000) dan kondisi kesehatan (diet rendah karbohidrat), LLM tidak akan menyarankan menu steak mahal atau nasi goreng porsi besar, melainkan menu yang lebih masuk akal seperti gado-gado tanpa lontong atau ayam bakar tanpa nasi.

Teknik Few-Shot Prompting

Salah satu teknik paling ampuh dalam Prompt Engineering adalah Few-Shot Prompting. Istilah “Zero-shot” digunakan ketika kita memberikan instruksi tanpa contoh sama sekali. Sedangkan “Few-shot” adalah teknik di mana kita memberikan satu atau beberapa contoh (shots) pola jawaban yang kita inginkan sebelum memberikan instruksi utama.

Teknik ini sangat berguna jika kamu ingin LLM mengikuti format klasifikasi atau ekstraksi data yang sangat spesifik, seperti menganalisis sentimen ulasan pelanggan di platform seperti Tokopedia atau Shopee.

# Contoh Few-Shot Prompting untuk klasifikasi sentimen ulasan
prompt_few_shot = """
Klasifikasikan sentimen ulasan berikut menjadi: POSITIF, NEGATIF, atau NETRAL.

Ulasan: "Barangnya sampai dengan cepat, packing aman banget!"
Sentimen: POSITIF

Ulasan: "Kecewa banget, barang yang datang tidak sesuai foto. Seller tidak responsif."
Sentimen: NEGATIF

Ulasan: "Barang standar, harga murah, pengiriman lumayan."
Sentimen: NETRAL

Ulasan: "Barangnya rusak saat sampai, padahal sudah bayar mahal pakai GoPay."
Sentimen:
"""

# LLM akan secara otomatis melengkapi bagian akhir dengan "NEGATIF"
# karena sudah melihat pola sebelumnya.
print(prompt_few_shot)

Dengan memberikan contoh, kita mengurangi risiko LLM memberikan penjelasan panjang lebar yang tidak perlu. Kita memaksa model untuk mengikuti format Sentimen: [LABEL].

Role Prompting (Memberikan Persona)

LLM adalah model yang sangat luas pengetahuannya. Jika kita tidak memberikan batasan, ia akan menjawab sebagai “AI umum”. Role Prompting adalah teknik memberikan “peran” atau “identitas” kepada AI. Ini membantu mengatur nada bicara (tone of voice), tingkat keahlian, dan gaya bahasa.

Bayangkan kamu ingin membangun chatbot untuk layanan pelanggan sebuah bank digital. Kita tidak ingin chatbot menjawab seperti teman nongkrong, melainkan seperti staf profesional. Contoh berikut bisa langsung dijalankan:

# Contoh Role Prompting untuk Customer Service
# Jalankan: python role_prompting.py

def buat_prompt_cs(pertanyaan_nasabah):
    """Membuat prompt lengkap dengan persona Customer Service."""
    role_instruction = """Kamu adalah Customer Service resmi dari Bank Digital 'Artha'. 
Tugasmu adalah menjawab pertanyaan nasabah dengan sopan, profesional, dan membantu. 
Gunakan bahasa Indonesia yang baku namun tetap ramah. 
Jika pertanyaan berkaitan dengan transfer antar bank, ingatkan untuk selalu 
mengecek nomor rekening tujuan sebelum mengirim."""

    full_prompt = f"{role_instruction}\n\nNasabah bertanya: {pertanyaan_nasabah}\nCS Artha menjawab:"
    return full_prompt

# Simulasi tanpa API — cetak prompt yang akan dikirim ke LLM
pertanyaan = "Gimana cara transfer dari akun saya ke rekening bank lain?"
prompt_siap = buat_prompt_cs(pertanyaan)

print("=== Prompt yang akan dikirim ke LLM ===")
print(prompt_siap)
print("\n=== Contoh jawaban yang diharapkan ===")
contoh_jawaban = (
    "Selamat siang, Bapak/Ibu. Terima kasih sudah menghubungi Bank Artha. "
    "Untuk melakukan transfer antar bank, Anda bisa menggunakan menu 'Transfer' "
    "di aplikasi kami, lalu pilih 'Bank Lain'. Pastikan kode bank dan nomor rekening "
    "tujuan sudah benar sebelum mengkonfirmasi transaksi. Ada yang bisa kami bantu lagi?"
)
print(contoh_jawaban)

Dengan teknik ini, chatbot tidak hanya memberikan instruksi teknis, tetapi juga membawa “karakter” yang sesuai dengan citra layanan yang diinginkan.

Implementasi dalam Proyek Chatbot Sederhana

Sekarang, mari kita terapkan semua ilmu ini ke dalam proyek Chatbot Sederhana kita. Kita akan memperbarui fungsi chat_with_bot agar tidak hanya sekadar meneruskan pesan, tetapi juga menyisipkan System Prompt yang berisi instruksi, persona, dan aturan main.

Berikut adalah kode final yang telah dioptimasi:

# chatbot.py — Jalankan: python chatbot.py
import openai

# Inisialisasi Client (Ganti dengan API Key Anda)
client = openai.OpenAI(api_key="YOUR_API_KEY_DISINI")

def chat_with_bot(user_input):
    """Mengirim pesan ke LLM dengan system prompt yang sudah dikonfigurasi."""
    system_prompt = """
    Kamu adalah 'Budi-Bot', asisten pribadi pintar milik Budi.
    Tugasmu adalah membantu Budi mengelola jadwal dan menjawab pertanyaan umum.
    Gaya bahasamu santai, menggunakan panggilan 'Bos' atau 'Kakak', 
    dan sering menggunakan emoji agar terasa akrab.
    Jika ditanya soal uang, selalu gunakan format Rupiah (Rp).
    """

    try:
        response = client.chat.completions.create(
            model="gpt-3.5-turbo",
            messages=[
                {"role": "system", "content": system_prompt},
                {"role": "user", "content": user_input}
            ],
            temperature=0.7  # Mengatur kreativitas (0.0 = kaku, 1.0 = sangat kreatif)
        )
        return response.choices[0].message.content
    except Exception as e:
        return f"Waduh, ada error nih, Bos: {str(e)}"

# Loop Chat Interaktif
print("--- Chatbot Budi-Bot Dimulai ---")
print("(Ketik 'keluar' untuk berhenti)\n")

while True:
    user_msg = input("Kamu: ")
    if user_msg.lower() == 'keluar':
        print("Budi-Bot: Sampai jumpa lagi, Bos! 👋")
        break

    jawaban = chat_with_bot(user_msg)
    print(f"Budi-Bot: {jawaban}\n")

Dalam kode di atas, kita menggunakan parameter system dalam API OpenAI untuk menanamkan instruksi permanen. Ini jauh lebih efektif daripada menggabungkan instruksi di dalam pesan user.

Pertanyaan yang Sering Diajukan

Berapa panjang prompt yang ideal?

Tidak ada angka pasti, namun prompt yang efektif cukup panjang untuk memberikan konteks yang diperlukan tanpa membuang token secara sia-sia. Sebagai panduan, prompt sistem biasanya berkisar antara 50–300 kata. Jika prompt terlalu pendek, AI kekurangan konteks; jika terlalu panjang, model bisa “kehilangan fokus” pada instruksi yang paling penting.

Apakah Role Prompting dan Few-Shot Prompting bisa digabungkan?

Ya, keduanya sangat sering digunakan bersama dan hasilnya biasanya lebih baik. Kamu bisa mulai dengan mendefinisikan peran (Role Prompting) di awal prompt, lalu berikan beberapa contoh format jawaban yang diinginkan (Few-Shot). Kombinasi ini memberikan model dua lapisan panduan sekaligus: siapa dia dan bagaimana dia harus menjawab.

Kenapa output LLM saya masih tidak konsisten meskipun sudah pakai prompt yang bagus?

Ketidakkonsistenan biasanya disebabkan oleh nilai temperature yang terlalu tinggi (di atas 0.8). Coba turunkan nilai temperature ke 0.2–0.5 untuk jawaban yang lebih deterministik dan konsisten. Selain itu, pastikan instruksi dalam prompt tidak ambigu — kata-kata seperti “sedikit” atau “cukup” bisa diinterpretasikan berbeda oleh model di setiap percobaan.

Kesimpulan

Menguasai teknik prompting adalah kunci utama dalam membangun aplikasi berbasis AI. Dengan memahami Anatomi Prompt (Instruksi, Konteks, Input, dan Output) serta teknik seperti Few-Shot Prompting (memberikan contoh) dan Role Prompting (memberikan peran), Anda dapat mengubah chatbot sederhana menjadi asisten cerdas yang sangat spesifik dan berguna.

Jangan takut untuk bereksperimen! Prompting adalah proses iteratif. Jika jawaban AI belum sesuai, coba tambahkan batasan atau contoh yang lebih jelas pada prompt Anda.

Artikel Terkait