Prompt adalah input teks yang Anda berikan kepada model bahasa besar (LLM) untuk menentukan suatu tugas dan membentuk output. Semakin tepat prompt Anda, semakin akurat dan konsisten hasilnya. Panduan ini mencakup teknik praktis untuk merancang dan mengoptimalkan prompt di Alibaba Cloud Model Studio.
Rancang prompt yang efektif
Tulis instruksi yang jelas dan spesifik
Prompt yang samar menghasilkan output yang samar pula. Semakin banyak konteks dan batasan yang Anda berikan, semakin sesuai output dengan ekspektasi Anda. Bayangkan seperti mendelegasikan tugas: permintaan satu baris memberi terlalu banyak ruang untuk interpretasi, sedangkan instruksi terperinci dengan tujuan jelas menghasilkan tepat apa yang Anda butuhkan.
Prompt yang jelas dan spesifik merupakan faktor terpenting untuk mendapatkan output yang berguna dari LLM.
Contoh: Tugas generasi kode
| Prompt samar | Prompt jelas dan spesifik |
|---|---|
| Tulis fungsi Python untuk memproses data. | Tulis fungsi Python yang membaca file CSV, memfilter baris di mana kolom status bernilai "active", dan mengembalikan daftar dictionary. Sertakan type hints, tangani kasus ketika file tidak ditemukan, dan gunakan modul csv dari standard library. |
Prompt spesifik tersebut menentukan format input, output yang diharapkan, penanganan error, dan batasan library — cukup bagi model untuk menghasilkan kode yang dapat digunakan sejak percobaan pertama.
Contoh: Tugas generasi konten
| Prompt samar | Prompt jelas dan spesifik |
|---|---|
| Bantu saya menulis pengumuman produk. | Tulis pengumuman produk sepanjang 200 kata untuk "Zephyr Z9", ponsel portabel ringan dari Bailian. Soroti desain ultra-tipisnya, spesifikasi high-performance, dan kemudahan penggunaannya. Sasaran konsumen melek teknologi di media sosial. Gunakan nada energik dan ringkas. |
Struktur prompt dengan kerangka kerja
Kerangka kerja prompt membantu Anda secara sistematis menyediakan informasi yang dibutuhkan oleh LLM. Alih-alih menebak apa yang harus disertakan, gunakan keenam elemen berikut sebagai daftar periksa:
| Elemen | Tujuan | Contoh |
|---|---|---|
| Context | Informasi latar belakang yang relevan dengan tugas | "Anda sedang meninjau pull request untuk layanan mikro Python." |
| Objective | Tugas spesifik yang harus diselesaikan | "Identifikasi potensi bug dan sarankan perbaikannya." |
| Style | Gaya penulisan atau persona | "Tulis seperti insinyur backend senior." |
| Tone | Nuansa emosional dari output | "Profesional namun konstruktif." |
| Audience | Pembaca output | "Developer junior dalam tim." |
| Response | Format output yang diinginkan | "Daftar bernomor berisi temuan dengan saran kode." |
Gunakan pembatas # untuk menandai setiap bagian dalam prompt Anda:
#Context#
Anda sedang meninjau pull request untuk layanan mikro Python yang menangani
otentikasi pengguna. Codebase menggunakan FastAPI dan SQLAlchemy.
#Objective#
Tinjau diff kode berikut dan identifikasi potensi kerentanan keamanan,
masalah performa, dan pelanggaran gaya penulisan.
#Style#
Tulis seperti insinyur backend senior yang melakukan tinjauan kode menyeluruh.
#Tone#
Profesional namun konstruktif — jelaskan mengapa setiap masalah penting.
#Audience#
Developer junior yang sedang belajar praktik pengkodean aman.
#Response#
Daftar bernomor berisi temuan. Untuk setiap temuan, sertakan:
- Baris atau blok kode spesifik
- Mengapa itu menjadi masalah
- Saran perbaikan beserta contoh kodeTidak semua prompt memerlukan keenam elemen tersebut. Sesuaikan kerangka kerja ini dengan tugas Anda. Contoh-contoh dalam panduan ini menggunakan subset berbeda tergantung skenarionya.
Optimalkan prompt
Sertakan contoh output
Menyertakan contoh output yang diharapkan membantu model menyesuaikan format, gaya, dan tingkat detail Anda. Teknik ini — yang dikenal sebagai few-shot prompting — juga meningkatkan konsistensi di berbagai eksekusi.
Contoh: Ekstraksi data terstruktur
#Context#
Ekstrak informasi terstruktur dari tiket dukungan pengguna.
#Objective#
Uraikan setiap tiket menjadi objek JSON.
#Examples#
Input: "Pesanan saya #12345 tiba dalam kondisi rusak. Saya ingin pengembalian dana."
Output:
{
"order_id": "12345",
"issue_type": "damaged_item",
"requested_action": "refund"
}
Input: "Saya tidak bisa masuk ke akun saya. Saya sudah mencoba mengatur ulang password
dua kali."
Output:
{
"order_id": null,
"issue_type": "login_failure",
"requested_action": "account_recovery"
}
#Task#
Sekarang uraikan tiket ini:
Input: "Pesanan #67890 sudah terjebak dalam status 'processing' selama 5 hari.
Mohon percepat atau batalkan."Model mempelajari skema JSON, konvensi penamaan field, dan cara menginfer issue_type serta requested_action dari bahasa alami — hanya dari contoh-contoh tersebut.
Pecah tugas kompleks menjadi langkah-langkah
Untuk tugas kompleks, tentukan langkah eksplisit yang harus diikuti model — bukan hanya hasil akhir yang diinginkan. Instruksi langkah demi langkah mencegah model melewatkan penalaran antara.
Contoh: Soal cerita matematika
#Context#
Timmy berangkat dari rumah pukul 08.00, berjalan dengan kecepatan 50 meter per menit. Setelah
12 menit, ayahnya menyadari Timmy lupa mengerjakan PR-nya dan mengejarnya
menggunakan sepeda dengan kecepatan 200 meter per menit. Setelah bertemu,
ayah membawa Timmy naik sepeda untuk sisa perjalanan. Jarak tempuh sepeda
adalah 5 kali jarak berjalan kaki.
#Objective#
Hitung waktu kedatangan.
#Steps#
1. Hitung seberapa jauh Timmy berjalan sebelum ayahnya menyusul.
2. Tentukan berapa lama waktu yang dibutuhkan ayah untuk menyusul.
3. Hitung sisa jarak tempuh sepeda dan waktu perjalanannya.
4. Jumlahkan semua interval waktu untuk menemukan waktu kedatangan.Output model (mengikuti langkah-langkah):
Langkah 1: Timmy berjalan selama 12 menit sebelum ayahnya berangkat:
12 menit * 50 m/menit = 600 m keunggulan awal
Langkah 2: Kecepatan relatif ayah: 200 - 50 = 150 m/menit
Waktu menyusul: 600 m / 150 m/menit = 4 menit
Timmy berjalan tambahan: 4 menit * 50 m/menit = 200 m
Total jarak jalan kaki: 600 + 200 = 800 m
Langkah 3: Jarak sepeda: 800 m * 5 = 4.000 m
Waktu sepeda: 4.000 m / 200 m/menit = 20 menit
Langkah 4: Total waktu: 12 + 4 + 20 = 36 menit
Kedatangan: 08.00 + 36 menit = 08.36Tanpa bagian #Steps#, model mungkin melewatkan perhitungan antara dan menghasilkan jawaban salah.
Gunakan pembatas untuk memisahkan konten
Ketika prompt berisi beberapa blok konten — instruksi, data masukan, dan contoh — gunakan pembatas untuk menandai batas yang jelas. Hal ini membantu model membedakan instruksi Anda dari konten yang harus diproses.
Gunakan rangkaian karakter yang jarang muncul dalam bahasa alami: ###, ===, atau >>>.
Contoh: Ringkasan teks
Ringkas setiap bagian ulasan film berikut secara terpisah.
Hasilkan satu kalimat ringkasan per bagian.
###
Zhang Zhiqiang dulunya penuh semangat dan energetik, tetapi tekanan hidup
membuatnya keluar jalur. Keputusan impulsif di usia paruh baya mengubahnya
dari kebanggaan keluarga menjadi orang buangan di masyarakat.
###
Ini baru permulaan. Serangkaian kejadian tak terduga memaksanya
untuk menghadapi dirinya sendiri. Ia memilih memulai hidup baru sebagai
kurir, menjelajahi jalanan kota untuk membangun kembali hidupnya.
###
Dalam perjalanan itu, ia menemukan teman-teman seperjuangan. Melalui
perjuangan bersama, ia menemukan kembali keberanian dan tujuan hidupnya,
membentuk arah baru bagi kehidupannya.
###Tanpa pembatas, model memperlakukan seluruh ulasan sebagai satu blok dan menghasilkan satu ringkasan umum. Dengan pembatas, model mengidentifikasi tiga bagian berbeda dan menghasilkan tiga ringkasan terkait yang mengikuti alur narasi.
Arahkan model untuk bernalar langkah demi langkah
Untuk tugas yang melibatkan logika, matematika, atau analisis multi-langkah, mintalah model menunjukkan penalarannya sebelum menyatakan kesimpulan. Dua teknik efektif:
Chain of Thought (CoT)
CoT adalah metode yang relatif sederhana namun dapat meningkatkan signifikan kemampuan penalaran LLM dalam skenario kompleks. Minta model menjelaskan pemikirannya sebelum menghasilkan jawaban akhir.
Contoh: Validasi JSON
#Context#
Input JSON:
{"web-app": {
"servlet": [
{
"servlet-name": "cofaxEmail",
"servlet-class": "org.cofax.cds.EmailServlet",
"init-param": {
"mailHost": "mail1",
"mailHostOverride": "mail2"}},
{
"servlet-name": "cofaxTools",
"servlet-class": "org.cofax.cms.CofaxToolsServlet",
"init-param": {
"templatePath": "toolstemplates/",
"log": 1,
"logLocation": "/usr/local/tomcat/logs/CofaxTools.log",
"logMaxSize": ""}}],
"servlet-mapping": {
"cofaxEmail": "/cofaxutil/aemail/*",
"cofaxTools": "/tools/*"},
"taglib": {
"taglib-uri": "cofax.tld",
"taglib-location": "/WEB-INF/tlds/cofax.tld"}}}
#Objective#
Verifikasi apakah JSON ini memenuhi ketiga persyaratan berikut:
1. Setiap servlet memiliki blok init-param.
2. Setiap kunci dalam servlet-mapping cocok dengan servlet-name.
3. Servlet cofaxTools memiliki tepat tiga parameter yang dimulai dengan
"log", dan nilai parameter "log" kurang dari 10.
#Response#
Pertama, jelaskan penalaran Anda untuk setiap persyaratan.
Kemudian nyatakan apakah semua persyaratan terpenuhi.Menambahkan "jelaskan penalaran Anda" menghasilkan analisis terstruktur di mana model mengevaluasi setiap persyaratan secara individual — menangkap kasus pinggiran (seperti nilai string kosong pada logMaxSize) yang akan terlewat jika hanya diminta jawaban ya/tidak.
Prompt chaining
Pecah masalah kompleks menjadi rangkaian pertanyaan yang lebih sederhana dalam beberapa giliran. Setiap jawaban menjadi masukan untuk pertanyaan berikutnya, mengarahkan model mengikuti jalur penalaran terkendali.
Prompt chaining membutuhkan lebih banyak upaya untuk disiapkan dibanding CoT, tetapi memberikan performa lebih baik dan akurasi lebih tinggi. Teknik ini sangat cocok untuk tugas yang secara logis kompleks namun dapat dipecah berdasarkan pola tetap.
Contoh: Matematika multi-langkah (masalah Timmy yang sama, tiga giliran)
Giliran 1:
#Context#
Timmy berangkat pukul 08.00 berjalan dengan kecepatan 50 m/menit. Setelah 12 menit, ayahnya
mengejar menggunakan sepeda dengan kecepatan 200 m/menit. Jarak tempuh sepeda adalah
5 kali jarak jalan kaki.
#Question#
Kapan ayah menyusul Timmy, dan seberapa jauh Timmy telah berjalan?Model: "Ayah menyusul Timmy pukul 08.16, setelah Timmy berjalan sejauh 800 meter."
Giliran 2:
Seberapa jauh Timmy menempuh perjalanan dengan sepeda untuk sampai ke rumah kakek-neneknya?Model: "Jarak sepeda = 800 m * 5 = 4.000 meter."
Giliran 3:
Pukul berapa Timmy tiba?Model: "Waktu sepeda = 4.000 m / 200 m/menit = 20 menit. Total waktu = 16 + 20 = 36 menit. Kedatangan: 08.36."
Setiap giliran membangun di atas hasil antara yang telah diverifikasi, mengurangi kemungkinan kesalahan kumulatif.
Petunjuk: Teknik penalaran lain termasuk Tree of Thoughts (ToT) dan Boosting of Thoughts. Pilih teknik yang sesuai dengan kompleksitas tugas dan kebutuhan akurasi Anda.
Uji dan iterasi
Rekayasa prompt bersifat iteratif. Jarang sekali versi pertama prompt menghasilkan output terbaik.
Ikuti siklus ini:
Tentukan tujuan Anda. Putuskan seperti apa output yang baik sebelum menulis prompt.
Tulis prompt awal. Terapkan teknik dari panduan ini: spesifik, gunakan kerangka kerja, dan berikan contoh.
Uji dengan berbagai input. Jalankan prompt terhadap berbagai skenario dunia nyata, termasuk kasus pinggiran.
Analisis kegagalan. Identifikasi di mana output kurang memadai: format salah, informasi hilang, penalaran salah, atau nada tidak konsisten.
Perbaiki prompt. Sesuaikan satu elemen dalam satu waktu untuk mengukur dampak setiap perubahan.
Ulangi. Lanjutkan hingga output secara konsisten memenuhi standar kualitas Anda.
Selain desain prompt, umpan balik pengguna sangat penting. Setelah menerapkan prompt di lingkungan produksi, pantau interaksi nyata dan perbaiki berdasarkan pola koreksi pengguna serta kasus pinggiran yang tidak Anda antisipasi sebelumnya.
Contoh: Optimalkan asisten HR multibahasa
Contoh ini menunjukkan bagaimana teknik di atas meningkatkan prompt nyata.
Latar belakang: Asisten HR berbasis Qwen-Turbo untuk perusahaan multinasional tidak konsisten merespons dalam bahasa pengguna. Prompt sistem perlu direstrukturisasi.
Sebelum optimasi
# Role
Anda adalah asisten AI HR yang efisien, khusus bertanggung jawab untuk
menjawab pertanyaan internal perusahaan tentang kebijakan, sistem absensi,
pengaturan cuti tahunan, dan isu terkait lainnya.
## Skills
### Skill 1: Interpretasi Kebijakan
- Interpretasikan dokumen kebijakan perusahaan secara akurat dan berikan
penjelasan kebijakan yang jelas dan ringkas kepada rekan kerja.
### Skill 2: Tanya Jawab Absensi
- Jawab semua pertanyaan terkait absensi karyawan, termasuk
aturan absen, penanganan keterlambatan dan pulang lebih awal,
prosedur cuti, dll.
### Skill 3: Konsultasi Manajemen Cuti Tahunan
- Jelaskan syarat pengajuan cuti tahunan, aturan akumulasi,
periode validitas, dan proses persetujuan.
## Limitations
- Respons dalam bahasa yang sama dengan pertanyaan pengguna.
- Terbatas pada pertanyaan terkait HR.
- Jangan menangani kueri data privasi pribadi.Masalah:
Struktur longgar dengan bagian
## Limitationsyang redundanBlok basis pengetahuan
${documents}disisipkan inline, sehingga sulit bagi model membedakan instruksi dari konten referensiInstruksi pencocokan bahasa tersembunyi di bagian limitations
Setelah optimasi
#Context#
Anda adalah asisten AI HR untuk perusahaan multinasional. Anda menjawab
pertanyaan tentang interpretasi kebijakan, aturan absensi, dan manajemen
cuti tahunan.
Berikut adalah dokumen kebijakan perusahaan:
======
${documents}
======
#Objective#
1. Hanya jawab pertanyaan tentang interpretasi kebijakan, absensi,
dan manajemen cuti tahunan.
2. Ketika pertanyaan relevan tetapi tidak tercakup dalam basis pengetahuan,
arahkan pengguna untuk menghubungi departemen HR.
3. Untuk setiap kategori, ikuti panduan berikut:
- Interpretasi kebijakan: Temukan klausa relevan dan berikan
penjelasan yang jelas dan ringkas.
- Absensi: Bahas aturan absen, penanganan keterlambatan, dan
prosedur cuti.
- Cuti tahunan: Jelaskan kelayakan, aturan akumulasi, proses
persetujuan, dan bantu hitung sisa saldo.
4. Jangan mengakses atau mengungkap data pribadi karyawan.
#Multilingual requirements#
- Jika pertanyaan tidak dalam bahasa Mandarin, terjemahkan ke bahasa Mandarin untuk
mencari di basis pengetahuan, lalu ubah kembali konten yang diperoleh
ke bahasa pertanyaan untuk output.
#Response#
- Gunakan hanya karakter ASCII standar di semua output.
- Sesuaikan bahasa output dengan bahasa input.Perubahan yang dilakukan:
Kerangka kerja diterapkan. Direstrukturisasi menggunakan bagian
#Context#,#Objective#,#Multilingual requirements#, dan#Response#.Pembatas ditambahkan. Membungkus
${documents}dengan pembatas======untuk memisahkan data referensi dari instruksi.Batasan didistribusikan. Memindahkan batasan ke bagian yang relevan (aturan bahasa ke
#Multilingual requirements#, batasan cakupan ke#Objective#).
Perubahan ini menyelesaikan masalah konsistensi bahasa karena model dapat dengan jelas mengidentifikasi instruksi multibahasa sebagai direktif prioritas tinggi yang terpisah, bukan sebagai catatan tambahan yang tersembunyi.