Puntata 113
Puntata 113 — Few-shot prompting
Livello: ✔️✔️ Doppie Spunte Blu · Capitolo 11 · Prompt engineering decente
Tre esempi valgono più di tre pagine di spiegazioni. Il modo più sottovalutato per portare un task dal 60% al 90% di accuratezza, senza fine-tuning.
La logica fondamentale
Spiegare a parole come un task vada fatto è spesso più difficile che mostrarlo. Pensa a quando insegni a un bambino a “fare la bici” — non con un manuale, con la spinta e la dimostrazione.
Il few-shot prompting è esattamente questo: dai al modello 1-5 esempi input → output, e lui estrae il pattern per applicarlo a input nuovi.
Tecnicamente si chiama in-context learning. È una delle capacità che ha distinto GPT-3 (2020) dai modelli precedenti, ed è il motivo per cui l’LLM moderno è “programmabile in linguaggio naturale”.
Zero-shot vs few-shot vs many-shot
| Modalità | Esempi forniti | Quando |
|---|---|---|
| Zero-shot | 0 (solo istruzione) | Task semplici, ben noti |
| One-shot | 1 | Quando il formato è semplice |
| Few-shot | 2-5 | Formato/regola implicita complessa |
| Many-shot | 20-100+ | Domini specifici, modelli long-context |
Many-shot è una novità del 2024-25, resa possibile dai contesti da 200k-2M token: invece di fine-tunare un modello, gli mostri 50 esempi nel prompt. Spesso competitivo con fine-tuning costoso, vedi Anthropic 2024 “Many-Shot In-Context Learning”.
Esempi pratici
Caso 1 — Classificazione sentiment
Zero-shot (spesso impreciso):
Classifica come positivo/negativo/neutro:
"Il servizio era ok, niente di che."
Few-shot (molto più accurato):
Classifica come positivo/negativo/neutro.
Esempio 1:
Testo: "Esperienza fantastica, torneremo!"
Classe: positivo
Esempio 2:
Testo: "Cibo freddo, cameriere maleducato."
Classe: negativo
Esempio 3:
Testo: "Locale carino ma niente di indimenticabile."
Classe: neutro
Adesso classifica:
Testo: "Il servizio era ok, niente di che."
Classe:
Risultato: il modello capisce che “ok, niente di che” è neutro, non “leggermente positivo”. Il pattern degli esempi guida la decisione.
Caso 2 — Estrazione strutturata
Estrai informazioni dai messaggi clienti in formato JSON.
Esempio 1:
Input: "Vorrei spostare il mio appuntamento di mercoledì alle 15 a giovedì stessa ora."
Output: {"intento": "modifica_appuntamento", "da": "mercoledì 15:00", "a": "giovedì 15:00"}
Esempio 2:
Input: "Cancellate la mia prenotazione di domani sera."
Output: {"intento": "cancellazione", "quando": "domani sera"}
Esempio 3:
Input: "Posso avere conferma del mio appuntamento del 12 giugno?"
Output: {"intento": "conferma", "data": "2026-06-12"}
Adesso processa:
Input: "Avete posto sabato pomeriggio per un controllo veloce?"
Output:
Il modello impara non solo la struttura JSON, ma anche la normalizzazione delle date (“12 giugno” → “2026-06-12”). Senza ulteriori istruzioni.
Caso 3 — Stile di scrittura
Riscrivi le frasi in stile "Hemingway": frasi corte, niente avverbi,
verbi attivi, niente subordinate ridondanti.
Esempio:
Originale: "Il vecchio uomo che era seduto nel piccolo ed accogliente
bar di prima mattina pensava lentamente alla sua giovinezza che era
ormai lontana."
Hemingway: "Il vecchio sedeva al bar. Era mattina presto. Pensava
alla giovinezza. Era lontana."
Esempio:
Originale: "Maria, che aveva sempre amato il mare in modo profondo,
sentiva una grande malinconia ogni volta che osservava le onde."
Hemingway: "Maria amava il mare. Le onde le facevano male. Era così."
Adesso riscrivi:
Originale: "Era una giornata estremamente calda di luglio, con un sole
implacabile che bruciava le strade vuote di Roma."
Hemingway:
Lo stile imitativo arriva in un solo prompt, senza dover spiegare cos’è lo “stile Hemingway”.
Le 5 regole del few-shot che funziona
1. Esempi rappresentativi
Devono coprire la varietà del problema, non essere tutti dello stesso tipo. Per sentiment: positivo + negativo + neutro + edge case (sarcasmo, ambiguità).
2. Formato consistente
Tutti gli esempi devono avere la stessa struttura: stesse etichette (“Input/Output”, “Esempio/Risposta”, ecc.), stessi separatori. Inconsistenza confonde il modello.
3. Ordine intenzionale
L’ordine degli esempi conta. Gli ultimi esempi spesso pesano di più (recency bias). Metti un caso difficile vicino all’input se vuoi che il modello faccia attenzione a quel tipo.
4. Quantità giusta
- 2-3 esempi: 80% del beneficio.
- 5 esempi: 95% del beneficio.
- 10+ esempi: rendimenti decrescenti, costo aumenta.
Eccezione: many-shot specializzato (50-100 esempi) per domini molto particolari.
5. Edge case esplicitati
Se ci sono casi limite che vuoi gestire in modo specifico, mostra quel caso come esempio. Es: per estrazione date, includi un esempio in cui la data manca → output con "data": null.
Quando il few-shot NON serve
❌ Task molto comuni (riassumere, tradurre, rispondere a una domanda generica): il modello sa già farli, zero-shot funziona.
❌ Task molto creativi (scrivere una poesia originale): gli esempi limitano la creatività, non la guidano.
❌ Quando hai molto contesto da iniettare: meglio usare quel context window per dati reali piuttosto che per esempi sintetici.
✅ Sempre utile per: classificazione, estrazione strutturata, stile specifico, formato output preciso, task di nicchia.
Few-shot e modelli reasoning
I modelli con thinking esteso (o-series, Claude reasoning, DeepSeek-R) sono meno dipendenti dal few-shot: capiscono dalle istruzioni quasi quanto dagli esempi.
In compenso, costano di più per inferenza e sono più lenti. Trade-off:
- Task semplice + modello fast: 2-3 esempi few-shot, bassa latenza, basso costo.
- Task complesso + modello reasoning: descrizione testuale ricca, 0-1 esempi, lascia ragionare il modello.
Per uso produttivo: spesso meglio modello fast + few-shot ben fatto, è più predicibile e veloce.
Few-shot dinamico (advanced)
In produzione, invece di mettere esempi fissi, recupera dinamicamente esempi simili all’input corrente da un database. Pipeline:
- Utente manda input.
- Cerchi nei tuoi dati passati (con embedding, puntata 106) i 3 esempi più simili.
- Li metti nel prompt al volo.
- Modello risponde meglio.
Si chiama dynamic few-shot o RAG-for-prompting. Standard in produzione AI moderna.
Few-shot per fine-tuning leggero
Se trovi che 5 esempi non bastano e ne servirebbero 200, sei nel territorio dove conviene un fine-tuning vero (LoRA, vedi puntata 218). Regola euristica:
- Fino a 5-10 esempi: few-shot, dentro il prompt.
- Da 10 a 100: many-shot in long context.
- Oltre 100: valuta fine-tuning.
TEST pratico (5 minuti)
Pensa a una task ripetitiva di lavoro: classificazione email, estrazione dati da PDF, riformulazione di testi in stile aziendale.
- Scrivi 3 esempi
input → outputottimi. - Costruisci il prompt con i 3 esempi + un nuovo input.
- Confronta con il prompt zero-shot (solo istruzione, senza esempi) sullo stesso input.
Quasi sempre noterai:
- Coerenza con il formato desiderato — drasticamente migliore.
- Riduzione delle “uscite divagatorie” del modello.
- Riproducibilità — stesso input dà output simile, non variazioni casuali.
In produzione: passa da “funziona spesso” a “funziona quasi sempre”. È lo stesso modello, ben istruito.
Take-away in una riga
Tre esempi valgono più di un paragrafo di istruzioni. Il few-shot è il prompt engineering “che paga” più di tutto il resto, per task strutturati.
➡️ Prossima puntata: Chain-of-thought — “Ragiona passo passo”.