Masterclass Prompt Engineering
Daftar Isi
Pendahuluan
Prompt engineering adalah disiplin ilmu dalam merancang input yang efektif untuk model bahasa besar (LLM) agar menghasilkan respons yang akurat, relevan, dan bermanfaat. Seiring LLM menjadi bagian integral dari sistem produksi, menguasai prompt engineering bukan lagi pilihan -- melainkan keterampilan inti bagi insinyur AI, data scientist, dan pengembang perangkat lunak.
Tutorial ini menyediakan panduan komprehensif dan praktis mengenai teknik-teknik prompting tingkat lanjut. Anda akan mempelajari cara menerapkan strategi zero-shot, few-shot, chain-of-thought, self-consistency, dan tree-of-thought. Anda juga akan belajar cara memaksa output terstruktur, merancang template prompt yang dapat digunakan ulang, mengevaluasi kualitas prompt, dan menghindari kesalahan umum.
Semua contoh menggunakan Python dengan API OpenAI, namun prinsip-prinsipnya berlaku untuk penyedia LLM mana pun.
Prasyarat
- Python 3.9 atau lebih tinggi
- API key OpenAI (atau API LLM yang kompatibel)
- Pemahaman dasar tentang LLM dan pemanggilan API
- Paket yang harus diinstal:
pip install openai langchain pydantic
Atur API key sebagai variabel lingkungan:
export OPENAIAPIKEY="sk-kunci-anda-di-sini"
Memahami Dasar-Dasar Prompt Engineering
Prompt adalah input tekstual yang diberikan kepada LLM. Kualitas output berbanding lurus dengan kejelasan, spesifisitas, dan struktur dari prompt. Ada beberapa dimensi yang perlu dipertimbangkan:
- Kejelasan instruksi: Jelaskan secara eksplisit apa yang Anda inginkan.
- Konteks: Berikan informasi latar belakang yang relevan.
- Format input/output: Tentukan format yang diinginkan.
- Batasan: Definisikan batas-batas (panjang, gaya, bahasa).
- Penetapan peran: Beritahu model siapa yang harus ia perankan.
import openai
client = openai.OpenAI()
def panggilllm(prompt: str, system: str = "", model: str = "gpt-4o", temperature: float = 0.7) -> str:
"""Fungsi utilitas untuk memanggil LLM dengan prompt tertentu."""
messages = []
if system:
messages.append({"role": "system", "content": system})
messages.append({"role": "user", "content": prompt})
response = client.chat.completions.create(
model=model,
messages=messages,
temperature=temperature,
)
return response.choices[0].message.content
Zero-Shot Prompting
Zero-shot prompting berarti meminta model untuk menjalankan tugas tanpa memberikan contoh sama sekali. Model sepenuhnya mengandalkan pengetahuan yang diperoleh selama pelatihan.
Kapan Menggunakan
- Tugas yang sederhana dan umum dikenal (misalnya ringkasan, terjemahan).
- Anda ingin meminimalkan panjang prompt dan biaya.
- Model memiliki pengetahuan domain yang kuat.
Contoh: Analisis Sentimen
prompt = """Klasifikasikan sentimen ulasan berikut sebagai 'positif', 'negatif', atau 'netral'.
Ulasan: "Produk tiba tepat waktu dan berfungsi persis seperti yang dijelaskan. Sangat puas dengan pembelian saya."
Sentimen:"""
hasil = panggilllm(prompt, temperature=0.0)
print(hasil) # Diharapkan: positif