Kembali ke blog

AI untuk pemulaPanduan

Few-shot prompting: tunjukkan 3–5 contoh ke model untuk mendapatkan format Anda

Bagaimana 3–5 contoh bertag membuat model menjawab dalam label atau JSON Anda, dengan permintaan Python dan biaya input tambahan per permintaan.

Oleh CheapTokens TeamDiterbitkan 6 menit baca

Sampul: prompt few-shot dengan contoh tiket dan labelnya
Di halaman ini
  1. Apa arti “few-shot”
  2. Tiga aturan untuk contoh yang berhasil
  3. Kirim melalui API
  4. Berapa tambahan lima contoh ke tagihan
  5. JSON, nada, dan memeriksa contoh Anda

Bot tiket Anda seharusnya menjawab dengan satu kata: billing, bug atau other. Sebagian besar balasan memang persis seperti itu. Lalu datang satu balasan berbunyi “Label: billing — pelanggan tampaknya kesal soal refund”, dan kode yang membaca label itu tersedak.

Perbaikan yang biasa bukanlah instruksi yang lebih panjang. Melainkan beberapa contoh: masukkan 3–5 tiket yang sudah selesai beserta labelnya ke dalam prompt, dan model akan meniru polanya. Itulah few-shot prompting. Panduan prompting Anthropic (bagian “Use examples effectively”, diakses 3 November 2026) menyebut contoh sebagai salah satu cara paling andal untuk mengarahkan format, nada, dan struktur, dan merekomendasikan 3–5 contoh. Masalahnya: setiap contoh adalah input yang Anda bayar lagi di setiap permintaan. Bagian biaya di bawah menghitungnya untuk bot yang menangani 2.000 tiket sehari.

Apa arti “few-shot”#

Bayangkan seorang kolega baru di hari pertamanya di meja dukungan. Anda bilang “tandai setiap tiket billing, bug atau other” lalu pergi. Sebagian tag akan sesuai dengan maksud Anda, sebagian tidak. Sekarang tinggalkan tiga tiket yang sudah ditandai dan bilang “seperti ini”. Kolega yang sama, jauh lebih sedikit kejutan.

Model berperilaku sama. Instruksi saja disebut zero-shot. Instruksi plus beberapa contoh yang sudah dikerjakan adalah few-shot (halaman Anthropic juga menyebutnya multishot). Satu “shot” hanyalah satu contoh.

Bandingkan

Tugas sama, dua prompt

Instruksi saja

text
Label the support ticket as billing, bug or other.

Instruksi plus contoh

text
Label the support ticket with one word: billing, bug or other.

Ticket: I was charged twice for one top-up.
Label: billing

Ticket: The export button does nothing.
Label: bug

Ticket: Do you have a dark theme?
Label: other

Prompt kedua tidak pernah menjelaskan apa arti billing. Contoh-contohnya melakukannya dengan menunjukkan, dan mereka membawa format sekaligus maknanya. Satu baris instruksi eksplisit tetap tidak ada salahnya, jadi versi di bawah mempertahankannya.

Tiga aturan untuk contoh yang berhasil#

Halaman Anthropic merangkum contoh yang baik menjadi tiga kata:

  • Relevan: dekat dengan tiket yang benar-benar Anda terima, bukan dengan tugas lain.
  • Beragam: mencakup kasus tepi dan berbeda satu sama lain, sehingga model tidak terpaku pada pola yang tidak disengaja.
  • Terstruktur: dibungkus dalam tag (<example>, dan beberapa di dalam <examples>) agar model bisa membedakan contoh dari instruksi. Halaman yang sama menyarankan agar nama tag konsisten.

Berikut prompt lengkap yang dibangun dengan cara itu. Simpan sebagai prompt.txt:

text
<instructions>
Label the support ticket with exactly one word: billing, bug or other.
Reply with the label only.
</instructions>

<examples>
<example>
<ticket>I was charged twice for the same top-up.</ticket>
<label>billing</label>
</example>
<example>
<ticket>The export button does nothing when I click it.</ticket>
<label>bug</label>
</example>
<example>
<ticket>Do you have a dark theme?</ticket>
<label>other</label>
</example>
<example>
<ticket>Please refund me. Also, the page crashes on login.</ticket>
<label>billing</label>
</example>
<example>
<ticket>Is there an API for exporting reports?</ticket>
<label>other</label>
</example>
</examples>

Perhatikan contoh keempat: permintaan refund yang juga menyebut crash. Instruksi tidak bisa menyelesaikan tiket campuran, contoh bisa. Di sini uang menang, jadi labelnya billing. Aturan apa pun yang Anda pilih, tunjukkan sekali.

Cocokkan pasangan

Aturan mana yang dilanggar?

  • Contoh Anda adalah sapaan chat satu baris, tetapi tiket asli adalah email panjangTidak relevan: contoh harus dekat dengan tugas sebenarnya
  • Semua contoh Anda membawa label yang samaTidak beragam: model bisa menangkap pola yang tidak disengaja
  • Contoh ditempel sebagai teks lepas di antara instruksiTidak terstruktur: bungkus dalam tag agar tidak bisa disalahartikan sebagai instruksi

Kirim melalui API#

Prompt adalah teks yang sama di setiap permintaan, dan hanya tiket baru yang berubah. Setiap tiket melewati perjalanan singkat yang sama:

Instruksi, contoh, dan tiket baru masuk ke satu permintaan; satu label kembali
Satu permintaan per tiket: instruksi dan contoh tetap, tiket berubah

Berikut dalam Python dengan paket openai. Alamatnya adalah API CheapTokens, kuncinya ada di variabel lingkungan (lihat cara menyimpan kunci dengan aman), dan id modelnya adalah yang lengkap dari dokumentasi:

python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key=os.environ["CHEAPTOKENS_API_KEY"],
)

PROMPT = open("prompt.txt", encoding="utf-8").read()


def label(ticket: str) -> str:
    response = client.chat.completions.create(
        model="deepseek-ai/DeepSeek-V4-Flash-0731",
        max_tokens=64,
        messages=[
            {"role": "system", "content": PROMPT},
            {"role": "user", "content": f"<ticket>{ticket}</ticket>"},
        ],
    )
    print(response.usage.prompt_tokens, response.usage.completion_tokens)
    return response.choices[0].message.content.strip()


print(label("The app shows a blank screen after the update."))

Saat berhasil Anda melihat dua jumlah token di satu baris lalu labelnya sendiri, satu kata seperti bug. Jika Anda mendapat satu kalimat, contoh-contohnya belum menjalankan tugasnya: periksa tag dan pastikan setiap label dari skema Anda muncul setidaknya sekali.

Angka pertama adalah yang perlu diperhatikan. Itu adalah seluruh prompt, instruksi plus contoh plus tiket, dan bertambah dengan setiap contoh yang Anda tambahkan. Jalankan skrip sekali dengan prompt.txt lengkap dan sekali hanya dengan bagian <instructions>: selisih antara dua angka pertama itulah biaya contoh Anda per permintaan.

DeepSeek-V4-Flash cocok untuk pelabelan massal seperti ini: satu harga kapan pun, konteks 380K token (jadi blok contoh yang panjang muat dengan mudah) dan hingga 32.768 token per jawaban. GLM-5.3-Flash, dengan konteks 390K, juga berfungsi untuk tugas pelabelan pendek. Keduanya ada di halaman model, di balik satu saldo.

Berapa tambahan lima contoh ke tagihan#

Katakan bot menangani 2.000 tiket sehari. Asumsikan satu tiket sekitar 120 token dan instruksi sekitar 80, jadi permintaan tanpa contoh adalah 80 + 120 = 200 token input. Lima contoh sekitar 60 token masing-masing menambah 5 × 60 = 300, jadi permintaan dengan contoh adalah 200 + 300 = 500. Jawabannya satu kata, sebut saja 3 token output baik dengan maupun tanpa contoh. Ini asumsi: ganti dengan prompt_tokens yang dicetak skrip Anda.

Selama sehari, 200 × 2.000 = 400.000 token input menjadi 500 × 2.000 = 1.000.000, sementara output tetap 3 × 2.000 = 6.000 token. Pada DeepSeek-V4-Flash itu $0.0066 sehari tanpa contoh dan $0.0156 dengan contoh. Contoh-contoh itu memakan selisih antara kedua angka tersebut, dan menurut Anthropic mereka memberi Anda output yang lebih konsisten.

Sama di setiap permintaan: instruksi dan lima contoh. Baru setiap kali: tiket
Hanya tiket yang berubah antar permintaan

Gambar itu menyembunyikan detail yang berguna. Blok contoh identik di setiap permintaan, yang justru merupakan jenis awal berulang yang menjadi fokus prompt caching; apa itu prompt caching menjelaskan cara kerjanya.

Berikut beban yang sama, 500 token input dan 3 token output per permintaan, 2.000 permintaan, di berbagai model. Tabel menghitung ulang dari harga saat ini:

Model Per permintaan 2.000 permintaan OpenRouter, 2.000 permintaan
GLM-5.3-Flash $0.00001 $0.0202 $0.034
DeepSeek-V4-Flash $0.0000078 $0.0156 $0.0708
MiniMax-M2.7 $0.000025 $0.0509 $0.611

500 token input dan 3 token output per permintaan. Harga per 1 juta token adalah harga saat ini dan berubah seiring tarif kami; kolom OpenRouter menunjukkan harga referensi untuk beban kerja yang sama.

Dengan input dan output dihitung bersama, DeepSeek-V4-Flash dan GLM-5.3-Flash lebih murah daripada OpenRouter pada beban ini. Daftar harga lengkap ada di halaman harga.

JSON, nada, dan memeriksa contoh Anda#

Trik yang sama mencakup dua kasus lain yang akan Anda temui. Butuh field JSON yang sama setiap kali? Buat contohnya menjawab JSON itu sendiri:

text
<example>
<ticket>I was charged twice for the same top-up.</ticket>
<output>{"label": "billing", "urgent": true}</output>
</example>

Untuk response_format dan apa yang harus dilakukan ketika balasan masih tidak valid, lihat dapatkan JSON yang valid dari API LLM. Ingin teks ditulis ulang dalam satu nada? Kata sifat seperti “ramah tapi singkat” itu kabur; dua pasang sebelum-dan-sesudah menunjukkan lebih baik.

Sebelum Anda memercayai serangkaian contoh apa pun, ambil 20 tiket yang sudah Anda labeli secara manual, jalankan, dan bandingkan. Satu kali percobaan memberi tahu Anda lebih banyak daripada aturan apa pun. Halaman Anthropic menambahkan jalan pintas: minta model menilai contoh Anda untuk relevansi dan keragaman, atau menulis lebih banyak dari yang sudah ada.

Daftar periksa

Sebelum Anda memercayai contoh Anda

Setelah contoh-contohnya berhasil, pertanyaan berikutnya adalah bagaimana mencegah beberapa dokumen saling kabur dalam satu prompt. Beri label setiap dokumen dalam prompt membahasnya.