Few-shot vs. zero-shot pozivi: kdaj uporabiti katerega
Praktični vodnik za izbiro pravega pristopa k pozivanju, s primeri za kopiranje in preprostim okvirjem za odločanje.
V ChatGPT prilepiš poziv. Rezultat je ... soliden. A videl si, da drugi z dodajanjem »primerov« k pozivom dobivajo bistveno boljše rezultate. Bi moral tudi ti? Koliko primerov? Je to za tvojo nalogo sploh pomembno?
Ta vprašanja se pojavljajo nenehno, izrazje pa pri tem ne pomaga. »Zero-shot«, »few-shot«, »one-shot« — zveni kot fotografski izrazi, ne pa kot praktičen napotek. Ta vodnik prereže ovinkarjenje in ti ponudi jasen okvir za odločitev, kateri pristop uporabiti, poleg tega pa še kompletne pozive, ki jih lahko prekopiraš in preizkusiš sam.
Kaj zero-shot pozivanje dejansko pomeni
Zero-shot pozivanje pomeni, da modelu zadaš nalogo, ne da bi mu pokazal kakršen koli primer želenega rezultata. Opišeš, kaj potrebuješ, model pa na podlagi svojega učenja ugotovi, kako to izvesti.
Tukaj je zero-shot poziv za povzetek sestanka:
Povzemi naslednje zapiske s sestanka v 3–5 alinej, ki zajemajo glavne sprejete odločitve.
Zapiski s sestanka:
{{meeting_notes}}
To je vse. Brez primerov »dobrih« povzetkov, brez vzorčnih vhodov in izhodov. Modelu zaupaš, da razume, kako izgleda povzetek in kaj pomenijo »glavne odločitve«. Pri številnih nalogah to deluje presenetljivo dobro.
Kaj few-shot pozivanje dejansko pomeni
Few-shot pozivanje pomeni, da v poziv vključiš 2–5 primerov, ki ponazarjajo vzorec, po katerem želiš, da model deluje. V bistvu mu rečeš: »Tako želim, da to obravnavaš,« preden mu daš dejansko nalogo.
Tukaj je ista naloga povzetka sestanka, a s primeri:
Povzemi zapiske s sestanka v 3–5 alinej, ki zajemajo glavne odločitve.
Primer 1:
Vhod: "Ekipa je razpravljala o ciljih za 3. četrtletje. Sarah je predlagala, da se prodajni cilj poveča za 15 %. Mark se ni strinjal in je predlagal, da je glede na trenutni nabor priložnosti realnejših 10 %. Ekipa je glasovala in se dogovorila za 12 %. Prav tako so prenovo spletnega mesta prestavili na 4. četrtletje."
Izhod:
- Dogovor o 12-odstotnem povečanju prodajnega cilja za 3. četrtletje (kompromis med predlogoma 15 % in 10 %)
- Prenova spletnega mesta prestavljena na 4. četrtletje
Primer 2:
Vhod: "Pregled proračuna. Trenutna poraba je 8 % nad načrtom. Direktor financ je priporočil zmanjšanje proračuna za potovanja za 50 % in 60-dnevno zamrznitev novih zaposlitev. Direktor je oba ukrepa potrdil s takojšnjo veljavnostjo."
Izhod:
- Proračun za potovanja zmanjšan za 50 % (s takojšnjo veljavnostjo)
- Potrjena 60-dnevna zamrznitev zaposlovanja
- Odziv na 8-odstotno prekoračitev proračuna
Zdaj povzemi tole:
{{meeting_notes}}
Bodi pozoren na razliko. Primeri modelu natančno pokažejo, kakšno obliko želiš (alineje s kontekstom v oklepajih), kako podrobne naj bodo informacije in kako naj obravnava več odločitev hkrati. Model se nauči tvojih preferenc v kontekstu — brez dodatnega učenja modela.
Ključne razlike na hitro
Tako se pristopa primerjata po dejavnikih, ki najbolj štejejo:
Hitrost: Zero-shot je hitrejši. Manj žetonov za obdelavo pomeni hitrejše odzive.
Cena: Zero-shot je cenejši. Plačuješ po žetonih, primeri pa se hitro seštejejo.
Začetni trud: Zero-shot ga zahteva skoraj nič. Few-shot zahteva iskanje ali pripravo dobrih primerov.
Natančnost pri preprostih nalogah: Približno enaka. Sodobni modeli pri preprostih zahtevah dobro delujejo v obeh primerih.
Natančnost pri zapletenih ali specifičnih nalogah: Few-shot običajno zmaga. Ko potrebuješ določeno obliko ali strokovno izrazje, primeri prinesejo merljivo razliko.
Kompromis je jasen: zero-shot je preprostejši in cenejši, few-shot pa ti daje več nadzora nad rezultatom. Vprašanje je, kdaj se ta dodatni nadzor splača.
Kdaj zero-shot deluje najbolje
Zero-shot pozivanje zablesti, kadar je naloga nekaj, kar model iz svojega učenja že »pozna«. To vključuje:
Splošna vprašanja: Razlage, definicije ali dejstva. Model ve, kako izgleda dobra razlaga.
Ustvarjalno iskanje idej: Generiranje idej, pisanje prvih osnutkov ali zbiranje možnosti. Tu si želiš raznolikost, ne sledenja določenemu vzorcu.
Standardno povzemanje: Krčenje člankov, e-pošte ali dokumentov, ko ne potrebuješ določene oblike.
Prevajanje: Pretvorba besedila med jeziki, na katerih je bil model učen.
Preprosta klasifikacija: Razvrščanje stvari v običajne kategorije (pozitivno/negativno, nujno/ni nujno), kadar so kategorije same po sebi razumljive.
Dobro pravilo: če lahko v običajnem jeziku opišeš, kaj želiš, in bi človek razumel tudi brez primerov, bo zero-shot najverjetneje deloval.
Diagram poteka, ki prikazuje postopek odločanja: začni z zero-shot, oceni rezultate in primere dodaj le, če je potrebno
Kdaj se few-shot splača za dodatne žetone
Few-shot pozivanje upraviči svoj prostor takrat, ko mora rezultat slediti vzorcem, ki jih model ne more izpeljati zgolj iz navodil:
Posebna oblika: Kadar potrebuješ rezultate v specifični strukturi — JSON z določenimi polji, tabele z natančnimi stolpci, alineje v določenem slogu. Primeri obliko prikažejo bolje, kot jo opisi razložijo.
Tvoje klasifikacijske kategorije: Če e-pošto strank razvrščaš v kategorije, kot so »vprašanje-o-računu«, »predlog-funkcije«, »prijava-napake« in »splošno-vprašanje«, primeri za vsako modelu pomagajo razumeti tvoje opredelitve.
Ujemanje s slogom ali tonom blagovne znamke: Bi rad, da AI piše kot že obstoječe gradivo tvojega podjetja? Pokaži mu 2–3 primere tega tona. Navodilo »piši v profesionalnem, a prijaznem tonu« je ohlapno; primeri so konkretni.
Strokovno izrazje: Če v tvoji panogi obstaja žargon ali okrajšave, ki drugod pomenijo nekaj drugega, primeri model naučijo tvojega konteksta.
Robni primeri in odtenki: Zaznavanje sarkazma, ironije ali drobnih razlik, ki zero-shot pristope spotaknejo. Raziskave kažejo, da few-shot pozivanje močno izboljša obravnavo robnih primerov pri analizi razpoloženja, kot sta zanikanje in sarkazem.
Ena študija je pokazala, da je pri klasifikaciji razpoloženja na Twitterju few-shot pozivanje z zgolj 20–50 primeri doseglo zmogljivost modelov, naučenih na 10.000+ primerih. To je moč dobro izbranih demonstracij.
Če opaziš, da si gradiš zbirko few-shot pozivov za različne naloge, ti orodje, kot je PromptNest, pomaga, da jih shraniš s spremenljivkami, kot je {{meeting_notes}}, kar omogoča, da ob kopiranju izpolniš vrzeli in je celoten poziv pripravljen za prilepitev.
Postopek »začni z zero-shot, nadgradi po potrebi«
Tukaj je praktičen pristop, ki prihrani čas in žetone:
1. korak: najprej preizkusi zero-shot. Napiši jasen poziv, ki opisuje, kaj želiš. Bodi natančen glede naloge, a ne dodajaj primerov.
2. korak: oceni rezultat. Ti da, kar potrebuješ? Če da, si končal. Če ne, ugotovi, kaj ni v redu — oblika? Ton? Manjkajoče podrobnosti? Popolno nerazumevanje naloge?
3. korak: dodaj ciljne primere. Pripravi 2–3 primere, ki natančno prikažejo tisto, kar je model napačno razumel. Če je bila težava oblika, pokaži pravilno obliko. Če je bil ton napačen, pokaži pravi ton.
Ta postopek je pomemben, ker ne ugibaš, ali primere potrebuješ — odzivaš se na resnične vrzeli. Včasih dodajanje besedne zveze »Razmislimo korak za korakom« k zero-shot pozivu odpravi težave z razmišljanjem brez primerov. Raziskave potrjujejo, da zero-shot »chain-of-thought« pri nalogah razmišljanja pogosto premaga few-shot pristop.
Koliko primerov dejansko potrebuješ?
Raziskave dosledno kažejo na sladko točko 2–5 primerov za večino nalog. Tukaj je, kaj kažejo podatki:
- Prvi 2–3 primeri prinesejo največji preskok v natančnosti
- Po 4–5 primerih donosi strmo upadejo
- Več primerov lahko zmogljivost celo poslabša, ker uvedejo nasprotujoče si vzorce
- Kakovost primera je pomembnejša od količine — trije odlični primeri premagajo deset povprečnih
Pomemben je tudi izsledek o vrstnem redu primerov: študije kažejo, da zaporedje primerov vpliva na rezultate, optimalna razporeditev pa včasih pomeni razliko med dobrim in slabim učinkom. Če tvoj few-shot poziv ne deluje dobro, najprej preuredi primere, šele nato dodajaj nove.
Ilustracija prikazuje kartice s primeri, ki se dodajajo k pozivu, z upadajočim donosom po prvih nekaj primerih
Za večino primerov uporabe začni z 2 primeroma. Če natančnost ni tam, kjer jo potrebuješ, dodaj tretjega, ki pokriva drugačno različico. Le redko boš potreboval več kot 4.
Chain-of-thought: vmesna pot za razmišljanje
Obstaja tudi tretja možnost, ki še posebej dobro deluje pri matematiki, logiki in večkoračnih problemih: chain-of-thought pozivanje. Namesto primerov vhod–izhod model prosiš, naj »razmišlja korak za korakom«.
Zero-shot chain-of-thought izgleda takole:
Trgovina ima 45 jabolk. Zjutraj jih proda 12 in prejme dobavo še 30. Popoldne nato proda še 18. Koliko jabolk imajo ob zaprtju?
Razmislimo o tem korak za korakom.
Ta preprosta poved — »Razmislimo o tem korak za korakom« — model spodbudi, da pokaže svoj miselni potek, namesto da bi skočil naravnost na odgovor. Pri zapletenem razmišljanju to pogosto premaga tako zero-shot kot few-shot pristop.
Nedavna raziskava na arXiv je pokazala, da pri močnih modelih, kot sta GPT-4 in Claude, zero-shot chain-of-thought pri nalogah razmišljanja pogosto prekaša few-shot pozivanje. Primeri lahko model dejansko utesnijo, namesto da bi mu pomagali.
Chain-of-thought uporabi, ko:
Naloga zahteva več logičnih korakov
Potrebuješ, da model razloži svoje razmišljanje (uporabno za odkrivanje napak)
Gre za matematiko, programsko logiko ali analitične probleme
Želiš preveriti modelov pristop, ne le njegov odgovor
Kompletni primeri pozivov za kopiranje
Poglejmo si tri pristope drug ob drugem na resničnih nalogah. Vsi pozivi so preizkušeni z GPT-4 in Claudom in pripravljeni za uporabo.
Naloga 1: klasifikacija tona e-pošte
Različica zero-shot:
Ton te e-pošte stranke razvrsti kot: razočaran, zadovoljen, nevtralen ali nujen.
E-pošta:
{{email_text}}
Ton:
Različica few-shot (boljša pri robnih primerih):
Ton e-pošte strank razvrsti kot: razočaran, zadovoljen, nevtralen ali nujen.
E-pošta: "Na svoje naročilo čakam že 3 tedne. To je smešno. Takoj zahtevam povračilo."
Ton: razočaran
E-pošta: "Samo da se zahvalim — izdelek je prispel predčasno in odlično deluje!"
Ton: zadovoljen
E-pošta: "Pozdravljeni, mi lahko potrdite, da je moje naročilo odposlano? Naročilo št. 12345."
Ton: nevtralen
E-pošta: "Naš sistem ne deluje in nadomestni del potrebujemo DANES, sicer izgubimo pogodbo."
Ton: nujen
E-pošta: {{email_text}}
Ton:
Različica few-shot modelu pomaga razumeti tvoje specifične opredelitve. »Nujno« in »razočarano« sta lahko dvoumna — primeri jasno postavijo tvoje meje.
Naloga 2: predelava opisa izdelka
Različica zero-shot:
Predelaj ta opis izdelka tako, da bo bolj privlačen in osredotočen na koristi. Ohrani ga pod 100 besedami.
Izvirnik: {{product_description}}
Predelana različica:
Različica few-shot (boljša za doslednost glasu blagovne znamke):
Opise izdelkov predelaj tako, da bodo privlačni in osredotočeni na koristi. Drži se tega sloga:
Izvirnik: "Steklenica iz nerjavečega jekla. Prostornina 700 ml. Pijače ohrani hladne 24 ur."
Predelano: "S svojo vitko jekleno steklenico s 700 ml prostornine ostani hidriran ves dan. Jutranja kava ostane vroča med vožnjo na delo. Popoldanska voda ostane ledeno hladna v fitnesu. Ena steklenica, neskončno možnosti."
Izvirnik: "Brezžične slušalke. 8-urna baterija. Dušenje hrupa."
Predelano: "Osem ur tvojih najljubših podkastov, brez prekinitev. Naše brezžične slušalke izrinejo hrup, da se lahko posvetiš tistemu, kar šteje — naj bo to poglobljeno delo, glasba za trening ali končno dokončanje tiste avdioknjige."
Izvirnik: {{product_description}}
Predelano:
Različica few-shot uči specifičen slog pisanja besedil — osredotočen na koristi, pogovoren, s konkretnimi primeri uporabe. Zero-shot bi ti dal neko predelavo, ne pa nujno tvojega glasu.
Naloga 3: strukturiranje prijave napake
Različica zero-shot:
To prijavo napake pretvori v strukturirano obliko z razdelki: Povzetek, Koraki za ponovitev, Pričakovano vedenje in Dejansko vedenje.
Prijava napake: {{bug_report}}
Različica few-shot (boljša za dosledno obliko):
Prijave napak pretvori v strukturirano obliko.
Vhod: "Aplikacija se zruši, ko poskušam naložiti PDF. Bil sem na nadzorni plošči, kliknil naloži, izbral 5 MB PDF in se je preprosto zaprla. Datoteka bi se morala pojaviti v mojih nalaganjih, namesto tega se sesuje cela aplikacija."
Izhod:
**Povzetek:** Aplikacija se sesuje pri nalaganju PDF-datotek
**Koraki za ponovitev:**
1. Pojdi na nadzorno ploščo
2. Klikni gumb za nalaganje
3. Izberi datoteko PDF (preizkušeno s 5 MB datoteko)
**Pričakovano:** Datoteka se prikaže v razdelku za nalaganja
**Dejansko:** Aplikacija se nepričakovano sesuje/zapre
---
Vhod: {{bug_report}}
Izhod:
Pri tehnični dokumentaciji je doslednost pomembna. Različica few-shot poskrbi, da vsaka prijava napake sledi enaki strukturi z isto stopnjo podrobnosti.
Hiter okvir za odločanje
Ko gledaš novo nalogo, si zastavi naslednja vprašanja:
1. Je naloga preprosta in dobro opredeljena? → Začni z zero-shot
2. Potrebuješ določeno obliko, ki je model morda ne bo uganil? → Uporabi few-shot
3. Naloga vključuje večstopenjsko razmišljanje? → Najprej preizkusi zero-shot chain-of-thought
4. Potrebuješ dosleden glas blagovne znamke ali strokovno izrazje? → Uporabi few-shot s primeri v tem glasu
5. Ti je zero-shot dal 80 % tega, kar potrebuješ? → Obdrži ga. Popolnost ni vredna trikratnih žetonov.
Cilj ni uporabljati najbolj sofisticirane tehnike — gre za to, da učinkovito dosežeš dobre rezultate. Zero-shot je privzeta izbira. Zapletenost dodaj samo, ko preprostejši pristopi odpovedo.
Kako to spraviti v prakso
Najboljši način, da to ponotranjiš, je eksperimentiranje. Vzemi nalogo, ki jo opravljaš redno — povzemanje poročil, pisanje e-pošte, kategoriziranje povratnih informacij — in preizkusi oba pristopa. Opazi, kje zero-shot odpove. Opazi, kje few-shot resnično prinese razliko.
Ko najdeš pozive, ki delujejo, jih shrani nekam, kjer jih boš dejansko spet našel. Če gradiš zbirko pozivov s primeri in spremenljivkami, je PromptNest domorodna aplikacija za Mac (19,99 USD enkraten nakup v Mac App Store, brez naročnine, brez računa, deluje lokalno), ki jih ohranja urejene, iskljive in dosegljive z bližnjico iz katere koli aplikacije. Konec brskanja po raztresenih zapiskih za tistim popolnim few-shot pozivom, ki si ga napisal pred tremi tedni.
Začni preprosto. Zapletenost dodaj, ko je potrebno. Shrani, kar deluje. To je celotna strategija.