mirror of
https://github.com/dair-ai/Prompt-Engineering-Guide
synced 2024-11-04 12:00:10 +00:00
93 lines
3.6 KiB
Plaintext
93 lines
3.6 KiB
Plaintext
# Chain-of-Thought Prompting
|
|
|
|
import {Screenshot} from 'components/screenshot'
|
|
import COT from '../../img/cot.png'
|
|
import ZEROCOT from '../../img/zero-cot.png'
|
|
|
|
|
|
## Chain-of-Thought (CoT) Prompting
|
|
|
|
<Screenshot src={COT} alt="COT" />
|
|
|
|
Image Source: [Wei et al. (2022)](https://arxiv.org/abs/2201.11903)
|
|
|
|
Introdotto in [Wei et al. (2022)](https://arxiv.org/abs/2201.11903), il prompt a catena di pensieri (CoT) consente di ottenere capacità di ragionamento complesse attraverso fasi di ragionamento intermedie. Si può combinare con il prompt few-shot per ottenere risultati migliori su compiti più complessi che richiedono un ragionamento prima di rispondere.
|
|
|
|
*Prompt:*
|
|
```
|
|
La somma dei numeri dispari di questo gruppo corrisponde ad un numero pari: 4, 8, 9, 15, 12, 2, 1.
|
|
R: Sommando tutti i numeri dispari (9, 15, 1) si ottiene 25. La risposta è Falsa.
|
|
|
|
La somma dei numeri dispari di questo gruppo è un numero pari: 17, 10, 19, 4, 8, 12, 24.
|
|
R: La somma di tutti i numeri dispari (17, 19) risulta 36. La risposta è Corretta.
|
|
|
|
La somma dei numeri dispari di questo gruppo è un numero pari: 16, 11, 14, 4, 8, 13, 24.
|
|
R: La somma di tutti i numeri dispari (11, 13) risulta 24. La risposta è Corretta.
|
|
|
|
La somma dei numeri dispari di questo gruppo è un numero pari:: 17, 9, 10, 12, 13, 4, 2.
|
|
R: La somma di tutti i numeri dispari (17, 9, 13) risulta 39. La risposta è Falsa.
|
|
|
|
I numeri dispari di questo gruppo si sommano in un numero pari.: 15, 32, 5, 13, 82, 7, 1.
|
|
R:
|
|
```
|
|
|
|
*Output:*
|
|
```
|
|
La somma di numeri dispari (15, 5, 13, 7, 1) risulta 41. La risposta è Falsa.
|
|
```
|
|
|
|
Wow! Possiamo vedere un risultato perfetto quando abbiamo fornito la fase di ragionamento. In effetti, possiamo risolvere questo compito fornendo ancora meno esempi, cioè un solo esempio sembra sufficiente:
|
|
|
|
*Prompt:*
|
|
```
|
|
La somma dei numeri dispari in questo gruppo è un numero pari: 4, 8, 9, 15, 12, 2, 1.
|
|
R: Sommando tutti i numeri dispari (9, 15, 1) si ottiene 25. La risposta è Falsa.
|
|
|
|
La somma dei numeri dispari in questo gruppo è un numero pari: 15, 32, 5, 13, 82, 7, 1.
|
|
R:
|
|
```
|
|
|
|
*Output:*
|
|
```
|
|
La somma dei numeri dispari (15, 5, 13, 7, 1) è 41. La risposta è Falsa.
|
|
```
|
|
|
|
Si tenga presente che gli autori sostengono che si tratta di una capacità emergente che si manifesta con modelli linguistici sufficientemente grandi.
|
|
|
|
## Zero-shot COT Prompting
|
|
|
|
<Screenshot src={ZEROCOT} alt="Zero-shot COT" />
|
|
|
|
Image Source: [Kojima et al. (2022)](https://arxiv.org/abs/2205.11916)
|
|
|
|
Un'idea emersa più di recente è quella della [zero-shot CoT](https://arxiv.org/abs/2205.11916) (Kojima et al. 2022) che consiste essenzialmente nell'aggiungere "Pensiamo passo dopo passo" al prompt originale. Proviamo un problema semplice e vediamo come si comporta il modello:
|
|
|
|
*Prompt:*
|
|
```
|
|
Sono andato al mercato e ho comprato 10 mele. Ho dato 2 mele al vicino e 2 al riparatore. Poi sono andato a comprare altre 5 mele e ne ho mangiata una. Quante mele mi sono rimaste?
|
|
```
|
|
|
|
*Output:*
|
|
```
|
|
11 mele
|
|
```
|
|
|
|
La risposta è errata! Proviamo ora con il prompt speciale.
|
|
|
|
*Prompt:*
|
|
```
|
|
Sono andato al mercato e ho comprato 10 mele. Ho dato 2 mele al vicino e 2 all'operaio. Poi sono andato a comprare altre 5 mele e ne ho mangiata una. Quante mele mi sono rimaste?
|
|
|
|
Pensiamo passo dopo passo.
|
|
```
|
|
|
|
*Output:*
|
|
```
|
|
In primo luogo, si è partiti da 10 mele.
|
|
Hai dato via 2 mele al vicino e 2 all'operaio, quindi ti sono rimaste 6 mele.
|
|
Poi ha comprato altre 5 mele, per cui ora ne ha 11.
|
|
Infine, avete mangiato 1 mela, quindi ti rimarranno 10 mele.
|
|
```
|
|
|
|
È impressionante come questo semplice prompt sia efficace nello svolgere questo compito. Dimostra di essere particolarmente utile quando non si hanno molti esempi da utilizzare nel prompt.
|