Menu

Few-Shot Prompting: Contoh dan Kapan Memakainya

Few-shot prompting memasukkan beberapa contoh yang sudah jadi, masing-masing berupa input dan jawaban yang kamu inginkan, ke dalam prompt supaya model meniru polanya. Ini cara tercepat untuk mengajarkan format, kumpulan label, atau gaya khas yang tidak akan ditebak model.

Setiap prompt di bawah bisa diedit: ubah, lalu buka di ChatGPT, Claude, atau aplikasi AI lain.

Few-shot prompting berarti menunjukkan beberapa contoh tugas yang sudah dikerjakan kepada model, masing-masing berupa input yang dipasangkan dengan jawaban yang kamu inginkan, sebelum kamu memberikan input yang sebenarnya. Model membaca polanya lalu melanjutkannya. Contoh adalah cara tercepat untuk memastikan hal-hal yang sulit diungkapkan dengan kata-kata: di mana batas antara dua kategori, bentuk persis output-nya, atau gaya bahasa yang dipakai timmu.

Cara kerja few-shot prompting

Brown dkk. 2020, "Language Models are Few-Shot Learners", menunjukkan bahwa GPT-3 bisa memahami tugas baru dari beberapa demonstrasi yang ditaruh di dalam prompt, tanpa pelatihan ulang. Ini disebut in-context learning: tidak ada yang berubah pada modelnya, dan contoh-contohnya hanya memengaruhi balasan untuk prompt itu saja. Lain kali, contoh-contohnya harus ada lagi.

Penamaannya mengikuti jumlah contoh. Prompt zero-shot tidak punya contoh, prompt one-shot punya satu, dan prompt few-shot punya beberapa, biasanya antara dua dan segelintir.

Zero-shot dan few-shot berdampingan

Kedua tab di bawah meminta hal yang sama dengan instruksi yang sama. Satu-satunya perbedaan adalah tab kedua menambahkan empat contoh berlabel sebelum tiket yang sebenarnya.

Klasifikasikan tiket dukungan ini sebagai bug, billing, account, atau feature_request. Tiket: Aku sudah reset password tapi password barunya tidak bisa dipakai, selalu muncul invalid credentials.
Try it
Example replyReplies vary between models and runs.

Kategori: bug

Pengguna sudah me-reset password-nya, tapi password baru itu ditolak saat masuk. Itu menunjukkan ada masalah di alur reset password, jadi kemungkinan besar ini bug di sistem autentikasi.

Contoh-contohnya mengubah dua hal. Yang pertama adalah format: balasan zero-shot menambahkan judul tebal dan penjelasan, sementara balasan few-shot mengikuti contoh-contohnya dan hanya memberikan satu kata, yang bisa langsung dibaca oleh skrip. Yang kedua adalah keputusannya. "Bug" adalah penafsiran yang masuk akal untuk tiket itu, dan kebanyakan orang akan memilihnya. Tapi tim ini memasukkan masalah login ke account, dan contoh ketiga menyatakannya tanpa satu kata penjelasan pun. Tidak ada instruksi yang menyebut aturan itu; contoh-contohnya yang membawanya.

Berapa banyak contoh yang dipakai

Mulailah dengan dua sampai lima. Jumlah itu cukup untuk sebagian besar tugas format dan klasifikasi, dan prompt-nya tetap pendek.

  • Satu contoh menunjukkan format, tapi model cenderung menirunya terlalu persis. Kalau satu-satunya contoh adalah ringkasan 30 kata tentang perubahan harga, ringkasan berikutnya bisa jadi juga 30 kata dan anehnya berfokus pada uang.
  • Dua atau tiga contoh yang berbeda membuat model bisa melihat apa yang sama di antara mereka (polanya) dan apa yang berbeda (detailnya).
  • Untuk klasifikasi, sertakan setidaknya satu contoh untuk setiap label, lalu tambahkan kasus-kasus perbatasan yang salah tanpa contoh.
  • Lewat dari segelintir, peningkatannya biasanya makin kecil sementara setiap permintaan makin panjang, yang memakan token dan waktu. Kalau kamu butuh puluhan contoh supaya hasilnya benar, tugas itu mungkin butuh instruksi yang lebih jelas atau pendekatan yang sama sekali berbeda.

Memilih contoh yang bagus

Model belajar dari semua hal yang sama-sama dimiliki contoh-contohmu, bukan hanya hal yang ingin kamu ajarkan.

  • Cakup kasus-kasus yang sulit. Contoh yang mudah tidak banyak mengajarkan apa-apa. Contoh yang paling berguna berada di perbatasan, seperti tiket login di atas.
  • Variasikan tampilannya. Campur input yang pendek dan panjang, topik yang berbeda, dan cara penulisan yang berbeda. Kalau setiap ulasan positif di contohmu pendek, model bisa menganggap panjang sebagai penandanya.
  • Seimbangkan labelnya dan acak urutannya. Model cenderung condong ke label yang paling sering muncul di contoh dan ke label yang muncul terakhir.
  • Periksa setiap contoh. Kesalahan di sebuah contoh adalah instruksi untuk membuat kesalahan yang sama.
  • Pakai input sungguhan. Contoh yang diambil dari datamu yang sebenarnya jauh lebih cocok dengan apa yang akan dilihat model daripada contoh karangan.

Jaga format tetap identik

Setiap contoh harus memakai label, pemisah, dan huruf besar kecil yang sama, dan input yang sebenarnya harus terlihat persis seperti input di contoh. Di prompt tiket tadi, setiap contoh berbentuk "Tiket:" lalu "Label:", dan prompt-nya diakhiri baris "Label:" yang masih kosong, sehingga hanya ada satu hal wajar yang bisa ditulis berikutnya.

Untuk contoh yang lebih panjang, bungkus masing-masing dengan penanda yang jelas seperti tag <example> supaya model tahu di mana satu contoh berakhir dan contoh berikutnya dimulai; lihat delimiter dan tag XML. Di API, kamu juga bisa memberikan contoh sebagai giliran-giliran sebelumnya dalam percakapan: satu pesan pengguna berisi input contoh, lalu satu pesan asisten berisi jawabannya, diulang untuk setiap contoh.

Prompt few-shot cocok dijadikan template prompt yang bisa dipakai ulang: instruksi dan contohnya tetap, hanya input-nya yang berubah. Blok di bawah ini menulis ulang pesan commit sesuai gaya sebuah tim. Ketik pesanmu sendiri di kolomnya lalu matikan bagian contoh untuk melihat seberapa banyak gaya yang dibawa contoh-contoh itu.

Pesan commit sesuai gaya tim
Fill in
Parts
Tulis ulang pesan commit ini sesuai gaya tim kami. Balas hanya dengan pesan yang sudah ditulis ulang.
Sebelum: nambahin fitur ekspor csv di halaman laporan Sesudah: feat(reports): tambahkan ekspor CSV Sebelum: naikin versi lodash gara-gara peringatan keamanan Sesudah: chore(deps): perbarui lodash untuk memperbaiki celah keamanan Sebelum: Benerin crash kalau keranjang kosong!! Sesudah: fix(cart): cegah crash saat keranjang kosong Sebelum: typo di readme Sesudah: docs(readme): perbaiki typo
Sebelum: bikin kotak pencarian tidak membedakan huruf besar dan kecil Sesudah:
Try it
Example replyReplies vary between models and runs.

feat(search): buat kotak pencarian tidak peka huruf besar kecil

Tidak ada aturan yang ditulis: tipe dengan huruf kecil, scope di dalam kurung, bentuk kalimat perintah, tanpa titik di akhir. Contoh-contohnya menunjukkan keempatnya, dan balasannya mengikutinya. Dengan bagian contoh dimatikan, model tetap memperbaiki pesannya, tapi model harus menebak gayanya, dan tidak ada yang membuat tebakannya cocok dengan gayamu.

Contoh few-shot juga bisa memperagakan penalaran, bukan hanya jawaban. Contoh yang dikerjakan lengkap dengan langkah-langkahnya adalah cara chain-of-thought prompting pertama kali diperkenalkan. Untuk model yang bernalar secara internal sebelum menjawab, batasi contohnya pada input, jawaban, dan format: langkah-langkah penalaran yang sudah ditulis bisa menggiring model menjauh dari jalur yang lebih baik, dan beberapa penyedia menyarankan untuk mencoba zero-shot lebih dulu dengan model-model seperti itu.

Pertanyaan yang sering diajukan

Apa itu few-shot prompting?

Few-shot prompting adalah menyertakan beberapa contoh tugas di dalam prompt, masing-masing berupa input yang dipasangkan dengan output yang benar, sebelum input yang sebenarnya. Model melanjutkan pola yang ditetapkan contoh-contoh itu. Cara ini paling berguna untuk kategori khusus, format yang tidak biasa, dan gaya khas yang lebih mudah ditunjukkan daripada dijelaskan.

Berapa banyak contoh yang sebaiknya ada di prompt few-shot?

Dua sampai lima adalah titik awal yang bagus untuk sebagian besar tugas. Untuk klasifikasi, sertakan setidaknya satu contoh per label, ditambah kasus-kasus perbatasan yang salah dijawab model tanpa contoh. Lewat dari beberapa contoh, setiap contoh tambahan biasanya makin sedikit membantu sementara setiap permintaan makin panjang.

Apa itu one-shot prompting?

One-shot prompting memberi model tepat satu contoh. Satu contoh cukup untuk menunjukkan format, tapi model cenderung meniru contoh tunggal itu terlalu persis, termasuk panjangnya, pilihan katanya, bahkan topiknya. Contoh kedua yang berbeda memberi tahu model ciri mana yang merupakan pola dan mana yang kebetulan.

Apakah model belajar dari contoh-contohku?

Hanya untuk permintaan saat itu. Contoh-contohnya membentuk balasan karena berada di dalam konteks; bobot model tidak berubah, dan tidak ada yang diingat di percakapan berikutnya. Ini disebut in-context learning, dan itulah kenapa prompt few-shot harus membawa contoh-contohnya setiap kali dipakai.

Bisakah contoh yang buruk membuat output-nya lebih jelek?

Bisa. Model meniru apa pun yang sama-sama dimiliki contoh-contohnya, termasuk kesalahan, panjang, dan nada yang tidak kamu sengaja. Kalau sebagian besar contoh punya label yang sama, model juga cenderung condong ke label itu. Pastikan contoh-contohmu benar, beragam, dan seimbang.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai