Langsung ke konten
KamusNgoding
Pemula Prompt-engineering 5 menit baca

Apa itu Model Peran dalam Prompt? Penjelasan Lengkap untuk Pemula

#role prompting #ai #llm #teknik prompt

Pendahuluan

Pernahkah kamu meminta bantuan kepada seseorang, lalu hasilnya terasa kurang tepat karena orang tersebut tidak paham konteks pekerjaanmu? Hal yang sama terjadi saat kamu berinteraksi dengan AI seperti ChatGPT atau Claude. Tanpa konteks yang jelas, AI akan memberikan jawaban yang generik dan kurang berguna.

Di sinilah Model Peran (Role Prompting atau Persona Prompting) hadir sebagai solusi. Dengan teknik ini, kamu memberitahu AI “kamu adalah seorang ahli X” sebelum mengajukan pertanyaan — dan hasilnya akan jauh lebih tajam, relevan, dan profesional.

Artikel ini akan menjelaskan konsep Model Peran dari nol, lengkap dengan contoh kode yang bisa langsung kamu jalankan dan perbandingan output nyata. Jika kamu belum familiar dengan dasar-dasar prompting, kamu bisa mulai dari Menguasai Zero-shot dan Few-shot Prompting untuk LLM sebelum melanjutkan.


Apa Itu Model Peran dalam Prompt?

Model Peran adalah teknik prompting di mana kamu menetapkan identitas, keahlian, atau karakter tertentu kepada AI sebelum memulai percakapan. Dengan kata lain, kamu sedang “memakaikan kostum” kepada AI.

Analoginya sederhana: bayangkan kamu sedang syuting film. Sebelum aktor tampil di depan kamera, sutradara memberi tahu mereka: “Kamu berperan sebagai detektif berpengalaman yang keras kepala tapi jenius.” Dengan arahan itu, aktor akan berbicara, bergerak, dan bereaksi sesuai karakter tersebut.

Begitu pula AI. Ketika kamu mengatakan “Kamu adalah seorang senior backend engineer dengan pengalaman 10 tahun di Python”, AI akan:

  • Menggunakan terminologi teknis yang tepat
  • Memberikan jawaban dari sudut pandang praktisi
  • Menghindari penjelasan yang terlalu dasar (atau terlalu tinggi)
  • Mempertimbangkan trade-off seperti yang dilakukan engineer sungguhan

Struktur Dasar: [PERAN] + [KONTEKS] + [TUGAS]

Rumus Model Peran yang efektif terdiri dari tiga komponen:

[PERAN] + [KONTEKS] + [TUGAS]
KomponenFungsiContoh
PERANMendefinisikan siapa AI dalam percakapan ini”Kamu adalah seorang dokter umum…”
KONTEKSMemberikan latar belakang situasi”…yang sedang menangani pasien awam tanpa latar belakang medis.”
TUGASInstruksi spesifik yang harus dikerjakan”Jelaskan apa itu tekanan darah tinggi dengan bahasa sederhana.”

Perhatikan contoh perbandingan berikut — ini bisa langsung kamu jalankan:

# perbandingan_model_peran.py
# Jalankan: python perbandingan_model_peran.py

def tampilkan_perbandingan():
    """Menampilkan perbedaan prompt tanpa dan dengan Model Peran."""

    pertanyaan = "Apa itu tekanan darah tinggi dan apa bahayanya?"

    # ---- TANPA Model Peran ----
    prompt_tanpa_peran = pertanyaan

    # Output tipikal AI (generik, ensiklopedis):
    output_tanpa_peran = (
        "Tekanan darah tinggi atau hipertensi adalah kondisi di mana tekanan "
        "darah dalam arteri secara konsisten berada di atas 130/80 mmHg. "
        "Hal ini dapat menyebabkan penyakit jantung, stroke, dan kerusakan ginjal."
    )

    # ---- DENGAN Model Peran ----
    # [PERAN]   : dokter umum berpengalaman
    # [KONTEKS] : berbicara kepada pasien awam berusia 50 tahun
    # [TUGAS]   : jelaskan dengan bahasa sederhana dan berikan 2 tips praktis
    prompt_dengan_peran = (
        "Kamu adalah dokter umum berpengalaman 15 tahun yang terbiasa "
        "menjelaskan kondisi medis kepada pasien awam. "
        "Pasienmu adalah Pak Hendra, 50 tahun, tidak berlatar belakang medis "
        "dan baru pertama kali didiagnosis hipertensi. "
        "Jelaskan apa itu tekanan darah tinggi dan bahayanya dengan bahasa "
        "sehari-hari, lalu berikan 2 tips praktis yang bisa langsung ia lakukan."
    )

    # Output tipikal AI (personal, actionable, menggunakan analogi):
    output_dengan_peran = (
        "Pak Hendra, saya mau jelaskan dengan sederhana ya. Bayangkan pembuluh "
        "darah Bapak seperti selang air. Jika airnya mengalir terlalu kencang "
        "terus-menerus, lama-lama selangnya bisa bocor atau pecah — nah, itulah "
        "yang terjadi pada hipertensi. Jika dibiarkan, risiko stroke dan serangan "
        "jantung meningkat signifikan.\n\n"
        "Dua hal yang bisa Bapak lakukan mulai besok:\n"
        "1. Kurangi garam — ganti kecap asin dengan perasan jeruk nipis.\n"
        "2. Jalan kaki 20 menit setiap pagi sebelum sarapan.\n"
        "Kedua langkah kecil ini sudah terbukti menurunkan tekanan darah 5-10 poin."
    )

    # Tampilkan perbandingan
    separator = "=" * 55

    print(separator)
    print("TANPA MODEL PERAN")
    print(separator)
    print(f"Prompt : {prompt_tanpa_peran}")
    print(f"\nOutput :\n{output_tanpa_peran}")

    print(f"\n{separator}")
    print("DENGAN MODEL PERAN")
    print(separator)
    print(f"Prompt :\n{prompt_dengan_peran}")
    print(f"\nOutput :\n{output_dengan_peran}")


if __name__ == "__main__":
    tampilkan_perbandingan()

Jalankan script di atas dan perhatikan perbedaannya:

=======================================================
TANPA MODEL PERAN
=======================================================
Prompt : Apa itu tekanan darah tinggi dan apa bahayanya?

Output :
Tekanan darah tinggi atau hipertensi adalah kondisi di mana tekanan
darah dalam arteri secara konsisten berada di atas 130/80 mmHg.
Hal ini dapat menyebabkan penyakit jantung, stroke, dan kerusakan ginjal.

=======================================================
DENGAN MODEL PERAN
=======================================================
Prompt :
Kamu adalah dokter umum berpengalaman 15 tahun yang terbiasa
menjelaskan kondisi medis kepada pasien awam. Pasienmu adalah Pak
Hendra, 50 tahun, tidak berlatar belakang medis dan baru pertama
kali didiagnosis hipertensi. Jelaskan apa itu tekanan darah tinggi
dan bahayanya dengan bahasa sehari-hari, lalu berikan 2 tips
praktis yang bisa langsung ia lakukan.

Output :
Pak Hendra, saya mau jelaskan dengan sederhana ya. Bayangkan
pembuluh darah Bapak seperti selang air. Jika airnya mengalir
terlalu kencang terus-menerus, lama-lama selangnya bisa bocor
atau pecah — nah, itulah yang terjadi pada hipertensi. Jika
dibiarkan, risiko stroke dan serangan jantung meningkat signifikan.

Dua hal yang bisa Bapak lakukan mulai besok:
1. Kurangi garam — ganti kecap asin dengan perasan jeruk nipis.
2. Jalan kaki 20 menit setiap pagi sebelum sarapan.
Kedua langkah kecil ini sudah terbukti menurunkan tekanan darah 5-10 poin.

Perbedaannya terasa jelas: output pertama terasa seperti kutipan ensiklopedia, sementara output kedua terasa seperti berbicara langsung dengan dokter sungguhan.


Contoh Konkret di Berbagai Bidang

Berikut tiga contoh siap pakai yang menerapkan rumus [PERAN] + [KONTEKS] + [TUGAS] secara lengkap:

# contoh_model_peran_lengkap.py
# Jalankan: python contoh_model_peran_lengkap.py

CONTOH_PERAN = {

    # --- Contoh 1: Developer Review Code ---
    "code_reviewer": {
        "peran":   "Kamu adalah senior software engineer dengan 8 tahun pengalaman Python",
        "konteks": "yang sedang melakukan code review untuk junior developer baru bergabung",
        "tugas":   (
            "Review kode berikut dan berikan feedback yang konstruktif. "
            "Fokus pada: keterbacaan, potensi bug, dan best practice.\n\n"
            "```python\n"
            "def hitung(a,b):\n"
            "    x = a+b\n"
            "    return x\n"
            "```"
        ),
    },

    # --- Contoh 2: Guru Bahasa ---
    "guru_bahasa": {
        "peran":   "Kamu adalah guru Bahasa Indonesia berpengalaman untuk tingkat SMP",
        "konteks": (
            "yang mengajar siswa berusia 13 tahun yang kesulitan memahami "
            "perbedaan kata baku dan tidak baku"
        ),
        "tugas":   (
            "Jelaskan perbedaan antara 'aktifitas' dan 'aktivitas' "
            "dengan contoh kalimat yang relevan untuk anak SMP."
        ),
    },

    # --- Contoh 3: Analis Bisnis ---
    "analis_bisnis": {
        "peran":   "Kamu adalah analis bisnis e-commerce berpengalaman",
        "konteks": (
            "yang membantu UMKM Indonesia baru membuka toko online pertama mereka "
            "dengan modal terbatas di bawah Rp 5 juta"
        ),
        "tugas":   (
            "Berikan 3 strategi prioritas untuk meningkatkan penjualan "
            "di bulan pertama berjualan online."
        ),
    },
}


def buat_prompt_lengkap(nama_contoh: str) -> str:
    """Menggabungkan PERAN + KONTEKS + TUGAS menjadi satu prompt utuh."""
    data = CONTOH_PERAN[nama_contoh]
    return f"{data['peran']} {data['konteks']}. {data['tugas']}"


def tampilkan_semua_contoh():
    for nama, data in CONTOH_PERAN.items():
        print(f"\n{'='*55}")
        print(f"CONTOH: {nama.upper().replace('_', ' ')}")
        print(f"{'='*55}")
        print(f"[PERAN]   : {data['peran']}")
        print(f"[KONTEKS] : {data['konteks']}")
        print(f"[TUGAS]   : {data['tugas']}")
        print(f"\n>>> Prompt Gabungan:\n{buat_prompt_lengkap(nama)}")


if __name__ == "__main__":
    tampilkan_semua_contoh()

Integrasi dengan API LLM

Setelah memahami strukturnya, kamu bisa langsung menghubungkan Model Peran ke API LLM sungguhan. Contoh berikut menggunakan OpenAI API — ganti YOUR_API_KEY dengan kunci milikmu:

# model_peran_api.py
# Prasyarat: pip install openai
# Jalankan  : python model_peran_api.py

import openai

client = openai.OpenAI(api_key="YOUR_API_KEY")


def tanya_dengan_peran(peran: str, konteks: str, tugas: str) -> str:
    """
    Mengirim prompt dengan struktur [PERAN] + [KONTEKS] + [TUGAS]
    ke OpenAI API dan mengembalikan jawaban.
    """
    system_message = f"{peran} {konteks}."
    user_message = tugas

    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[
            {"role": "system", "content": system_message},
            {"role": "user",   "content": user_message},
        ],
        temperature=0.4,  # Lebih rendah = lebih konsisten dan faktual
    )
    return response.choices[0].message.content


def demo_perbandingan_api():
    tugas = "Jelaskan cara kerja algoritma binary search."

    print("=" * 55)
    print("TANPA MODEL PERAN (pertanyaan langsung)")
    print("=" * 55)
    jawaban_biasa = tanya_dengan_peran(
        peran="Kamu adalah asisten AI.",
        konteks="",
        tugas=tugas,
    )
    print(jawaban_biasa)

    print("\n" + "=" * 55)
    print("DENGAN MODEL PERAN (instruktur coding untuk pemula)")
    print("=" * 55)
    jawaban_peran = tanya_dengan_peran(
        peran="Kamu adalah instruktur coding berpengalaman",
        konteks=(
            "yang mengajar siswa SMA yang baru belajar pemrograman. "
            "Gunakan analogi kehidupan sehari-hari dan hindari jargon teknis"
        ),
        tugas=tugas,
    )
    print(jawaban_peran)


if __name__ == "__main__":
    demo_perbandingan_api()

Catatan: Jika belum punya API key, kamu tetap bisa menjalankan perbandingan_model_peran.py dan contoh_model_peran_lengkap.py di atas tanpa koneksi API — keduanya menggunakan output simulasi untuk mendemonstrasikan konsepnya.


Tips Menulis Model Peran yang Efektif

TipsBurukBagus
Spesifik soal pengalaman”Kamu adalah dokter""Kamu adalah dokter spesialis jantung dengan 10 tahun pengalaman klinis”
Definisikan audiens(tidak ada)“yang berbicara kepada pasien awam berusia 50 tahun”
Sebutkan batasan(tidak ada)“Hindari istilah Latin, gunakan analogi sehari-hari”
Tambahkan tujuan”Jelaskan X""Jelaskan X agar pasien bisa langsung mengambil tindakan”

Pertanyaan yang Sering Diajukan

Apakah Model Peran hanya untuk chatbot?

Tidak. Model Peran bisa digunakan di semua jenis task: penulisan konten, analisis data, debugging kode, terjemahan, dan lainnya. Intinya adalah memberikan AI “sudut pandang” yang relevan sebelum ia mengerjakan tugas. Bayangkan seperti memberikan briefing singkat kepada seorang freelancer sebelum ia mulai bekerja — hasilnya jauh lebih terarah dibanding langsung menyuruh tanpa konteks.

Apakah Model Peran bisa digabung dengan Few-Shot Prompting?

Ya, dan kombinasi keduanya sering menghasilkan output terbaik. Caranya: definisikan peran lebih dulu di bagian system, lalu berikan contoh pola jawaban (few-shot examples) di bagian user. Dengan begitu, AI tahu siapa dirinya sekaligus bagaimana format jawaban yang diinginkan — dua lapisan panduan sekaligus.

Kenapa output masih terasa generik meskipun sudah pakai Model Peran?

Ada tiga penyebab paling umum. Pertama, perannya terlalu umum — “kamu adalah ahli” lebih lemah dari “kamu adalah senior data engineer di perusahaan fintech dengan fokus fraud detection”. Kedua, konteks audiens tidak disebutkan sehingga AI tidak tahu tingkat kedalaman yang tepat. Ketiga, nilai temperature terlalu tinggi (di atas 0.8) membuat model lebih “kreatif” dan kurang konsisten — coba turunkan ke 0.2–0.5 untuk output yang lebih deterministik.

Apakah ada batasan berapa panjang instruksi peran yang efektif?

Tidak ada aturan baku, tetapi instruksi peran yang terlalu panjang (lebih dari 500 kata) berisiko membuat model “kehilangan fokus” pada instruksi paling penting. Sebagai panduan praktis, targetkan 2–5 kalimat untuk bagian peran: satu kalimat identitas, satu kalimat konteks audiens, dan satu kalimat batasan atau gaya. Itulah yang cukup untuk membuat perbedaan signifikan pada output.


Kesimpulan

Model Peran adalah salah satu teknik prompting paling mudah dipelajari namun paling berdampak. Dengan rumus sederhana [PERAN] + [KONTEKS] + [TUGAS], kamu bisa mengubah jawaban AI yang generik menjadi output yang terasa seperti dibuat oleh pakar sungguhan.

Mulai dari kasus sederhana — seperti meminta penjelasan teknis dalam bahasa awam — hingga kasus kompleks seperti bayangkan membangun sistem customer service otomatis untuk ribuan pengguna, teknik ini selalu relevan. Coba jalankan contoh kode di atas, modifikasi perannya, dan perhatikan sendiri perbedaannya.

Langkah selanjutnya: pelajari cara menggabungkan Model Peran dengan teknik Chain-of-Thought untuk tugas yang membutuhkan penalaran bertahap.

Artikel Terkait