Bumalik sa blog

AI para sa mga baguhanGabay

Few-shot prompting: ipakita sa modelo ang 3–5 halimbawa para makuha ang iyong format

Paano ginagawang sumagot ang isang modelo sa iyong mga label o JSON gamit ang 3–5 naka-tag na halimbawa, kasama ang isang Python request at ang karagdagang gastos sa input bawat request.

Ni CheapTokens TeamNai-publish noong 7 min na pagbabasa

Cover: isang few-shot prompt na may halimbawang ticket at ang label nito
Sa pahinang ito
  1. Ano ang ibig sabihin ng “few-shot”
  2. Tatlong tuntunin para sa mga halimbawang gumagana
  3. Ipadala ito sa pamamagitan ng API
  4. Ano ang idinadagdag ng limang halimbawa sa bill
  5. JSON, tono, at pagsuri ng iyong mga halimbawa

Dapat sumagot ang iyong ticket bot ng isang salita: billing, bug o other. Karamihan sa mga sagot ay eksaktong ganoon. Tapos may darating na “Label: billing — mukhang galit ang customer tungkol sa refund”, at ang code na nagbabasa ng label ay nabibigo.

Ang karaniwang solusyon ay hindi mas mahabang instruksyon. Ito ay ilang halimbawa: ilagay ang 3–5 tapos na ticket kasama ang kanilang mga label sa prompt, at kokopyahin ng modelo ang pattern. Iyon ay few-shot prompting. Tinatawag ng prompting guide ng Anthropic (seksyon “Use examples effectively”, sinuri noong 3 Nobyembre 2026) ang mga halimbawa na isa sa pinakamaaasahang paraan upang gabayan ang format, tono at istruktura, at inirerekomenda ang 3–5 sa mga ito. Ang problema: bawat halimbawa ay input na binabayaran mo muli sa bawat request. Binibilang ito ng seksyon ng gastos sa ibaba para sa isang bot na humahawak ng 2,000 ticket bawat araw.

Ano ang ibig sabihin ng “few-shot”#

Isipin ang isang bagong kasamahan sa kanilang unang araw sa support desk. Sasabihin mo “i-tag ang bawat ticket na billing, bug o other” at lalayo ka. May mga tag na tutugma sa iyong ideya, may hindi. Ngayon mag-iwan ka ng tatlong ticket na naka-tag na at sabihin “tulad ng mga ito”. Parehong kasamahan, mas kaunting sorpresa.

Ganoon din ang kilos ng mga modelo. Ang instruksyon lamang ay tinatawag na zero-shot. Ang instruksyon kasama ang ilang halimbawang may sagot ay few-shot (sinasabi rin ng pahina ng Anthropic na multishot). Ang “shot” ay isang halimbawa lamang.

Ihambing

Parehong gawain, dalawang prompt

Instruksyon lamang

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

Instruksyon kasama ang mga halimbawa

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

Hindi kailanman ipinapaliwanag ng pangalawang prompt kung ano ang ibig sabihin ng billing. Ginagawa ito ng mga halimbawa sa pamamagitan ng pagpapakita, at dinadala nila ang format kasama ang kahulugan. Hindi pa rin masama ang isang tahasang linya ng instruksyon, kaya pinapanatili ito ng bersyon sa ibaba.

Tatlong tuntunin para sa mga halimbawang gumagana#

Binubuod ng pahina ng Anthropic ang magagandang halimbawa sa tatlong salita:

  • Relevant: malapit sa mga ticket na talagang natatanggap mo, hindi sa ibang gawain.
  • Diverse: saklaw nila ang mga edge case at magkaiba sa isa't isa, para hindi kumapit ang modelo sa aksidenteng pattern.
  • Structured: nakabalot sa mga tag (<example>, at ilan sa loob ng <examples>) para makilala ng modelo ang mga halimbawa mula sa mga instruksyon. Sinasabi rin ng parehong pahina na panatilihing pare-pareho ang mga pangalan ng tag.

Narito ang isang buong prompt na ginawa sa ganoong paraan. I-save ito bilang 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>

Tingnan ang ikaapat na halimbawa: isang kahilingan ng refund na nagbabanggit din ng crash. Hindi kayang ayusin ng isang instruksyon ang magkahalong ticket, kaya ang halimbawa ang makakagawa. Dito nananalo ang pera, kaya ang label ay billing. Anuman ang tuntuning piliin mo, ipakita ito nang isang beses.

Itugma ang mga pares

Aling tuntunin ang nilabag?

  • Ang iyong mga halimbawa ay isang linyang pagbati sa chat, ngunit ang totoong ticket ay mahahabang emailHindi relevant: dapat malapit ang mga halimbawa sa totoong gawain
  • Lahat ng iyong halimbawa ay may parehong labelHindi diverse: maaaring makakuha ang modelo ng aksidenteng pattern
  • Ang mga halimbawa ay nakadikit bilang maluwag na teksto sa pagitan ng mga instruksyonHindi structured: balutin ang mga ito sa mga tag para hindi mapagkamalang instruksyon

Ipadala ito sa pamamagitan ng API#

Ang prompt ay parehong teksto sa bawat request, at ang bagong ticket lang ang nagbabago. Dumadaan ang bawat ticket sa parehong maikling paglalakbay:

Instruksyon, mga halimbawa at ang bagong ticket ay pumapasok sa isang request; isang label ang bumabalik
Isang request bawat ticket: nananatili ang mga instruksyon at halimbawa, nagbabago ang ticket

Narito ito sa Python gamit ang openai package. Ang address ay ang CheapTokens API, ang key ay nasa environment variable (tingnan ang paano mag-imbak ng key nang ligtas), at ang model id ay ang buo mula sa docs:

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."))

Kapag gumana, makikita mo ang dalawang bilang ng token sa isang linya at pagkatapos ang label mismo, isang salita tulad ng bug. Kung isang pangungusap ang makuha mo, hindi pa nagagawa ng mga halimbawa ang trabaho nila: suriin ang mga tag at tiyaking lumilitaw ang bawat label mula sa iyong scheme nang hindi bababa sa isang beses.

Ang unang numero ang dapat bantayan. Ito ang buong prompt, mga instruksyon kasama ang mga halimbawa at ang ticket, at lumalaki ito sa bawat halimbawang idaragdag mo. Patakbuhin ang script nang isang beses gamit ang buong prompt.txt at isang beses gamit lamang ang <instructions> na bahagi: ang agwat sa pagitan ng dalawang unang numero ay ang halaga ng iyong mga halimbawa sa bawat request.

Ang DeepSeek-V4-Flash ay angkop para sa ganitong uri ng mass labeling: isang presyo sa anumang oras ng araw, 380K-token na context (kaya madaling kasya ang mahabang bloke ng mga halimbawa) at hanggang 32,768 token bawat sagot. Ang GLM-5.3-Flash, na may 390K na context, ay gumagana rin para sa maiikling gawain ng labeling. Pareho silang nasa models page, sa likod ng isang balanse.

Ano ang idinadagdag ng limang halimbawa sa bill#

Sabihin nating humahawak ang bot ng 2,000 ticket bawat araw. Ipagpalagay na ang isang ticket ay mga 120 token at ang instruksyon ay mga 80, kaya ang isang request na walang halimbawa ay 80 + 120 = 200 input token. Ang limang halimbawa na mga 60 token bawat isa ay nagdadagdag ng 5 × 60 = 300, kaya ang isang request na may mga ito ay 200 + 300 = 500. Ang sagot ay isang salita, sabihing 3 output token sa alinmang paraan. Mga pagpapalagay lamang ito: palitan ng prompt_tokens na inilabas ng iyong script.

Sa loob ng isang araw, ang 200 × 2,000 = 400,000 input token ay magiging 500 × 2,000 = 1,000,000, habang ang output ay nananatiling 3 × 2,000 = 6,000 token. Sa DeepSeek-V4-Flash iyon ay $0.0066 bawat araw na walang halimbawa at $0.0156 na may mga ito. Ang mga halimbawa ay ang agwat sa pagitan ng dalawang numerong iyon, at ayon sa Anthropic, binibili nito ang mas pare-parehong output.

Pareho sa bawat request: mga instruksyon at limang halimbawa. Bago sa bawat pagkakataon: ang ticket
Ang ticket lang ang nagbabago sa pagitan ng mga request

May nakatagong kapaki-pakinabang na detalye ang larawang iyon. Ang bloke ng mga halimbawa ay magkapareho sa bawat request, na eksaktong uri ng paulit-ulit na simula na pinag-uusapan ng prompt caching; ipinapaliwanag ng ano ang prompt caching kung paano ito gumagana.

Narito ang parehong load, 500 input at 3 output token bawat request, 2,000 request, sa iba't ibang modelo. Kinakalkula muli ng talahanayan mula sa kasalukuyang mga presyo:

Modelo Bawat kahilingan 2,000 mga kahilingan OpenRouter, 2,000 mga kahilingan
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 input at 3 output na token bawat kahilingan. Ang mga presyo kada 1M token ay kasalukuyan at nagbabago kasabay ng aming mga taripa; ang column ng OpenRouter ay nagpapakita ng reference na presyo para sa parehong workload.

Kapag pinagsama ang input at output, ang DeepSeek-V4-Flash at GLM-5.3-Flash ay mas mura kaysa OpenRouter sa load na ito. Ang buong listahan ng presyo ay nasa pricing page.

JSON, tono, at pagsuri ng iyong mga halimbawa#

Saklaw ng parehong trick ang dalawa pang kaso na makakaharap mo. Kailangan mo ng parehong mga field ng JSON sa bawat pagkakataon? Gawing ang halimbawang sagot ay ang JSON mismo:

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

Para sa response_format at kung ano ang gagawin kapag hindi pa rin valid ang isang sagot, tingnan ang get valid JSON from an LLM API. Gusto mong isulat muli ang teksto sa isang tono? Malabo ang mga pang-uri tulad ng “friendly but brief”; mas mahusay itong ipakita ng dalawang pares ng bago-at-pagkatapos.

Bago mo pagkatiwalaan ang anumang set ng mga halimbawa, kumuha ng 20 ticket na mano-mano mong na-label na, patakbuhin ang mga ito, at ihambing. Ang isang pagsubok ay nagsasabi ng higit pa kaysa sa anumang tuntunin. Nagdadagdag ang pahina ng Anthropic ng shortcut: hilingin sa modelo na i-rate ang iyong mga halimbawa para sa relevance at diversity, o magsulat ng mas marami mula sa mayroon ka na.

Listahan ng dapat gawin

Bago mo pagkatiwalaan ang iyong mga halimbawa

Kapag gumana na ang mga halimbawa, ang susunod na tanong ay kung paano pigilan ang ilang dokumento na maghalo-halo sa isang prompt. Saklaw ito ng Label every document in a prompt.