Lo zero-shot prompting consiste nel chiedere a un modello un compito con la sola istruzione, senza mostrargli nessun esempio della risposta che vuoi. "Traduci questo paragrafo in inglese" e "Riassumi questa email in due frasi" sono prompt zero-shot. È il modo normale in cui le persone usano i modelli di chat, e per i compiti comuni di solito è tutto ciò che serve.
Cosa significa zero-shot
Nel machine learning uno "shot" è un esempio svolto. I termini sono più vecchi dei modelli di chat, ma il loro senso nel prompting è stato reso popolare da Brown et al. 2020, "Language Models are Few-Shot Learners", che ha testato GPT-3 in tre situazioni: una descrizione del compito con zero, una o poche dimostrazioni nel prompt, e nessun riaddestramento in nessuna delle tre. Per quel modello, qualche esempio di solito batteva l'assenza di esempi.
Da allora i modelli di chat sono stati addestrati a fondo a seguire le istruzioni, ed è per questo che oggi una richiesta semplice funziona così bene. Un prompt zero-shot è esattamente la situazione per cui sono stati addestrati: qualcuno descrive un lavoro a parole e si aspetta che venga fatto.
Zero-shot non significa zero contesto. Un buon prompt zero-shot indica comunque il pubblico, incolla l'input e descrive il formato e i limiti. L'unica cosa che lascia fuori è un esempio finito dell'output.
Un prompt zero-shot fatto bene
Il prompt qui sotto estrae le attività da svolgere dagli appunti di una riunione senza nessun esempio dell'output, solo con una descrizione precisa. Disattiva le parti per vedere quali righe fanno il lavoro.
Riunione dello sprint, martedì
Priya sistemerà il timeout del login entro venerdì.
Parlato di passare a un nuovo provider di CI, nessuna decisione.
Tom scrive le note di rilascio della 2.4.
Qualcuno dovrebbe aggiornare il documento di onboarding.
Lena: rivedo le note di Tom entro giovedì.Priya: Sistemare il timeout del login (entro venerdì) Tom: Scrivere le note di rilascio della 2.4 Non assegnata: Aggiornare il documento di onboarding Lena: Rivedere le note di rilascio di Tom (entro giovedì)
La riga sul formato fa il lavoro che farebbe un esempio: descrive la forma esatta di ogni riga, quindi non c'è niente da copiare. Disattivala e la risposta sceglie una forma sua, spesso un elenco puntato con i nomi in grassetto, che si legge bene ma non si incolla più in modo pulito in un tracker. Disattiva i vincoli e la discussione sulla CI può comparire come attività, perché niente ha detto al modello che gli argomenti senza decisione non contano.
Quando lo zero-shot basta
Lo zero-shot funziona quando il modello può dedurre tutto dalle tue parole:
- Il compito è comune. Riassumere, tradurre, spiegare, correggere la grammatica e scrivere una funzione a partire da una specifica chiara sono compiti che il modello ha visto infinite volte durante l'addestramento.
- Puoi descrivere l'output con esattezza. "Una riga per attività, prima il responsabile" è chiaro quanto un esempio. Vedi output strutturato per descrivere formati che leggerà un programma.
- Le categorie significano quello che dicono. Classificare le recensioni in positive e negative di solito non richiede esempi, perché quelle etichette significano la stessa cosa per quasi tutti.
Quando aggiungere esempi
Alcune cose sono difficili da esprimere a parole, ed è lì che i prompt zero-shot cominciano a sbagliare:
- I tuoi confini. Se il tuo team di supporto archivia "non riesco ad accedere" tra i problemi di account e non tra i bug, il modello non può saperlo. Sceglierà l'interpretazione che darebbe la maggior parte delle persone.
- Uno stile della casa. I messaggi di commit del tuo team o il tono della tua newsletter sono più facili da mostrare che da descrivere.
- Errori di poco che si ripetono. Se hai già riformulato l'istruzione due volte e l'output sbaglia ancora di poco nello stesso modo, smetti di riformulare e mostra due o tre risposte corrette.
Questo è il few-shot prompting. Un'abitudine sensata è partire con lo zero-shot, guardare cosa torna indietro e aggiungere esempi solo per la cosa specifica che sbaglia.
Chain of thought zero-shot
Kojima et al. 2022, "Large Language Models are Zero-Shot Reasoners", hanno scoperto che aggiungere una sola frase, "Ragioniamo passo dopo passo" (Let's think step by step), rendeva i modelli grandi decisamente migliori nei problemi di aritmetica, simbolici e di logica, senza alcun esempio. La frase fa scrivere al modello i passaggi intermedi prima della risposta, e ogni passaggio che scrive diventa contesto per il successivo. Il loro metodo usava due chiamate: la prima produceva il ragionamento, la seconda chiedeva la risposta finale.
Nel blocco qui sotto, la prima scheda obbliga a una risposta immediata e la seconda lascia al modello lo spazio per lavorare.
12:40
La prima risposta ha dimenticato i 10 minuti recuperati dal treno: il tipo di svista che capita quando un modello deve impegnarsi sulla risposta nei suoi primi token. Un modello attuale potrebbe benissimo azzeccare questo problema in entrambi i modi; la differenza cresce con il numero di passaggi del problema. La seconda versione ha un vantaggio in più: ogni passaggio è visibile, quindi puoi vedere dove una risposta è andata storta.
I modelli che ragionano internamente prima di rispondere fanno già questo lavoro senza che tu lo chieda, quindi "Ragioniamo passo dopo passo" aggiunge per loro poco più di una risposta più lunga. Il chain of thought prompting tratta la tecnica in profondità, compresa la versione few-shot.
Zero-shot e few-shot a colpo d'occhio
| Zero-shot | Few-shot | |
|---|---|---|
| Cosa contiene il prompt | Istruzioni, contesto e input | Lo stesso, più qualche coppia di input e risposta |
| Ideale per | Compiti comuni con un output facile da descrivere | Etichette personalizzate, formati insoliti, stile della casa |
| Costo | Prompt breve | Prompt più lungo, più token per chiamata |
| Errore tipico | Sceglie l'interpretazione più comune, non la tua | Copia schemi casuali presenti negli esempi |
Domande frequenti
Cos'è lo zero-shot prompting?
Lo zero-shot prompting consiste nel dare a un modello linguistico un compito con le sole istruzioni, senza esempi svolti dell'output. "Riassumi questa email in due frasi" è un prompt zero-shot. I modelli di chat attuali sono addestrati a seguire le istruzioni, quindi i prompt zero-shot gestiscono bene la maggior parte dei compiti di tutti i giorni.
Che differenza c'è tra zero-shot e few-shot prompting?
Un prompt zero-shot descrive il compito a parole. Un prompt few-shot aggiunge qualche esempio, ciascuno un input abbinato alla risposta che vuoi, così il modello può copiare lo schema. Parti con lo zero-shot; passa al few-shot quando l'output continua a sbagliare un formato o una distinzione più facile da mostrare che da descrivere.
Perché si chiama zero-shot?
Nel machine learning uno "shot" è un esempio svolto. L'articolo del 2020 di Brown et al. su GPT-3, "Language Models are Few-Shot Learners", ha testato il modello con zero, una o poche dimostrazioni di un compito nel prompt, e questo ha reso standard quei nomi nel prompting: zero-shot, one-shot e few-shot.
Quando lo zero-shot prompting non funziona?
Fa fatica quando il compito dipende da regole che conosci solo tu, come le categorie del tuo team o lo stile della casa, quando il formato di output è insolito e nei ragionamenti a più passaggi in cui il modello risponde troppo in fretta. Gli esempi risolvono i primi due casi; chiedere al modello di procedere passo dopo passo aiuta nel terzo.
Cos'è la chain of thought zero-shot?
È un prompt zero-shot che chiede al modello di ragionare prima di rispondere, nel modo più famoso aggiungendo "Ragioniamo passo dopo passo" (Let's think step by step). Kojima et al. hanno mostrato nel 2022 che questa sola frase, senza esempi, migliorava i risultati dei modelli grandi nei problemi di aritmetica e logica.