Menu

Few-shot prompting: esempi e quando usarlo

Il few-shot prompting mette nel prompt alcuni esempi svolti, ognuno un input con la risposta che vuoi, così il modello copia lo schema. È il modo più rapido per insegnare un formato, un insieme di etichette o uno stile interno che il modello non indovinerebbe.

Ogni prompt qui sotto è modificabile: cambialo, poi aprilo in ChatGPT, Claude o un'altra app di AI.

Il few-shot prompting significa mostrare al modello alcuni esempi svolti di un compito, ognuno un input abbinato alla risposta che vuoi, prima di dargli l'input vero. Il modello legge lo schema e lo continua. Gli esempi sono il modo più rapido per fissare cose difficili da dire a parole: dove passa il confine tra due categorie, la forma esatta dell'output o il tono con cui scrive il tuo team.

Come funziona il few-shot prompting

Brown et al. 2020, "Language Models are Few-Shot Learners", hanno mostrato che GPT-3 poteva imparare un compito nuovo da una manciata di dimostrazioni messe nel prompt, senza riaddestramento. Si chiama apprendimento in contesto (in-context learning): nel modello non cambia nulla, e gli esempi influenzano solo la risposta a quel prompt. La volta successiva, gli esempi devono esserci di nuovo.

Il nome segue il numero di esempi. Un prompt zero-shot non ne ha, un prompt one-shot ne ha uno e un prompt few-shot ne ha diversi, di solito tra due e una manciata.

Zero-shot e few-shot a confronto

Le due schede qui sotto chiedono la stessa cosa con la stessa istruzione. L'unica differenza è che la seconda aggiunge quattro esempi etichettati prima del ticket vero.

Classifica il ticket di assistenza come bug, billing, account o feature_request. Ticket: Ho reimpostato la password ma quella nuova non funziona, continua a dire credenziali non valide.
Try it
Example replyReplies vary between models and runs.

Categoria: bug

L'utente ha reimpostato la password, ma quella nuova viene rifiutata all'accesso. Questo indica un problema nel flusso di reimpostazione della password, quindi molto probabilmente si tratta di un bug nel sistema di autenticazione.

Gli esempi hanno cambiato due cose. La prima è il formato: la risposta zero-shot ha aggiunto un titolo in grassetto e una spiegazione, mentre quella few-shot ha seguito gli esempi e ha dato una sola parola, che uno script può leggere direttamente. La seconda è la decisione. "Bug" è una lettura ragionevole del ticket, e la maggior parte delle persone la sceglierebbe. Ma questo team archivia i problemi di accesso sotto account, e il terzo esempio lo dice senza una sola parola di spiegazione. Nessuna istruzione menzionava quella regola; la portavano gli esempi.

Quanti esempi usare

Comincia con due a cinque. Bastano per la maggior parte dei compiti di formattazione e classificazione, e il prompt resta corto.

  • Un esempio mostra un formato, ma il modello tende a copiarlo troppo. Se l'unico esempio è un riassunto di 30 parole su un cambio di prezzi, il riassunto successivo potrebbe uscire di 30 parole e stranamente concentrato sui soldi.
  • Due o tre esempi diversi permettono al modello di vedere cosa hanno in comune (lo schema) e cosa varia (i dettagli).
  • Per la classificazione, includi almeno un esempio per ogni etichetta, poi aggiungi i casi limite che andavano male senza esempi.
  • Oltre una manciata, i miglioramenti di solito si riducono mentre ogni richiesta si allunga, e questo costa token e tempo. Se ti servono decine di esempi per ottenere il risultato giusto, forse il compito ha bisogno di un'istruzione più chiara o di un approccio del tutto diverso.

Scegliere buoni esempi

Il modello impara da tutto ciò che i tuoi esempi hanno in comune, non solo da quello che volevi insegnare.

  • Copri i casi difficili. Gli esempi facili insegnano poco. I più utili stanno sul confine, come il ticket di accesso qui sopra.
  • Varia la superficie. Mescola input brevi e lunghi, argomenti diversi e formulazioni diverse. Se tutte le recensioni positive nei tuoi esempi sono brevi, il modello potrebbe considerare la lunghezza come il segnale.
  • Bilancia le etichette e mescola l'ordine. I modelli tendono a sbilanciarsi verso l'etichetta che compare più spesso negli esempi e verso quella che compare per ultima.
  • Controlla ogni esempio. Un errore in un esempio è un'istruzione a commettere quell'errore.
  • Usa input reali. Gli esempi presi dai tuoi dati reali somigliano a ciò che vedrà il modello molto più di quelli inventati.

Mantieni il formato identico

Tutti gli esempi devono usare le stesse etichette, gli stessi separatori e le stesse maiuscole, e l'input vero deve apparire esattamente come gli input di esempio. Nel prompt dei ticket, ogni esempio è "Ticket:" e poi "Etichetta:", e il prompt finisce con una riga "Etichetta:" aperta, che lascia una sola cosa naturale da scrivere dopo.

Per esempi più lunghi, racchiudi ciascuno tra segnali chiari come i tag <example>, così il modello capisce dove finisce uno e inizia il successivo; vedi delimitatori e tag XML. Nell'API puoi anche fornire gli esempi come turni precedenti della conversazione: un messaggio dell'utente con l'input di esempio, poi un messaggio dell'assistente con la risposta, ripetuto per ogni esempio.

I prompt few-shot diventano ottimi template di prompt riutilizzabili: l'istruzione e gli esempi restano fissi e cambia solo l'input. Il blocco qui sotto riscrive un messaggio di commit nello stile di un team. Scrivi il tuo messaggio nel campo e disattiva la parte degli esempi per vedere quanta parte dello stile portano loro.

Messaggi di commit nello stile del team
Fill in
Parts
Riscrivi il messaggio di commit nello stile del nostro team. Rispondi solo con il messaggio riscritto.
Prima: aggiunta la cosa dell'export csv nella pagina dei report Dopo: feat(reports): aggiungi esportazione CSV Prima: aggiorno lodash per l'avviso di sicurezza Dopo: chore(deps): aggiorna lodash per un avviso di sicurezza Prima: Sistemato il crash quando il carrello è vuoto!! Dopo: fix(cart): evita il crash quando il carrello è vuoto Prima: refuso nel readme Dopo: docs(readme): correggi un refuso
Prima: fatto in modo che la casella di ricerca ignori maiuscole e minuscole Dopo:
Try it
Example replyReplies vary between models and runs.

feat(search): rendi la ricerca insensibile a maiuscole e minuscole

Nessuna delle regole è scritta: un tipo in minuscolo, un ambito tra parentesi, il verbo all'imperativo, nessun punto finale. Gli esempi le mostrano tutte e quattro, e la risposta le segue. Con gli esempi disattivati, il modello migliora comunque il messaggio, ma deve indovinare uno stile, e niente fa sì che la sua ipotesi coincida con il tuo.

Gli esempi few-shot possono mostrare anche un ragionamento, non solo risposte. Gli esempi svolti che mostrano i loro passaggi sono il modo in cui è stato presentato per la prima volta il chain of thought prompting. Con i modelli che ragionano internamente prima di rispondere, limita gli esempi a input, risposte e formato: passaggi di ragionamento già scritti possono allontanarli da una strada migliore, e alcuni fornitori consigliano di provare prima lo zero-shot con quei modelli.

Domande frequenti

Cos'è il few-shot prompting?

Il few-shot prompting consiste nell'includere nel prompt alcuni esempi di un compito, ognuno un input abbinato all'output corretto, prima dell'input vero. Il modello continua lo schema stabilito dagli esempi. È più utile per categorie personalizzate, formati insoliti e stili interni che è più facile mostrare che descrivere.

Quanti esempi deve avere un prompt few-shot?

Da due a cinque è un buon punto di partenza per la maggior parte dei compiti. Per la classificazione, includi almeno un esempio per etichetta, più i casi limite che il modello sbagliava senza esempi. Oltre una manciata, ogni esempio in più di solito aiuta meno e rende ogni richiesta più lunga.

Cos'è il one-shot prompting?

Il one-shot prompting dà al modello esattamente un esempio. Basta per mostrare un formato, ma il modello tende a copiare quell'unico esempio troppo da vicino, compresi lunghezza, formulazione e perfino argomento. Un secondo esempio diverso dice al modello quali caratteristiche sono lo schema e quali sono casuali.

Il modello impara dai miei esempi?

Solo per la richiesta attuale. Gli esempi influenzano la risposta perché sono nel contesto; i pesi del modello non cambiano e nella conversazione successiva non resta nulla. Si chiama apprendimento in contesto (in-context learning), ed è per questo che un prompt few-shot deve portarsi dietro i suoi esempi ogni volta che lo usi.

Esempi sbagliati possono peggiorare l'output?

Sì. Il modello copia tutto ciò che gli esempi hanno in comune, compresi errori, lunghezza e tono che non volevi. Se la maggior parte degli esempi condivide un'etichetta, il modello tende anche a sbilanciarsi verso quell'etichetta. Controlla che i tuoi esempi siano corretti, vari ed equilibrati.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA