Prompt Engineering per l'AI generativa

La ingegneria tempestiva è l'arte di porre la domanda giusta per ottenere il miglior output da un LLM. Consente l'interazione diretta con LLM utilizzando solo messaggi semplici.

In passato, lavorare con modelli di machine learning in genere richiedeva una profonda conoscenza dei set di dati, delle statistiche e delle tecniche di modellazione. Attualmente, le soluzioni LLM possono essere "programmate" in inglese e in altre lingue.

Essere un bravo ingegnere tecnico non richiede un'esperienza di programmazione. Tuttavia, la creatività e la persistenza ti gioveranno moltissimo sul tuo percorso. Continua a leggere per scoprire alcune tecniche utili per la creazione di suggerimenti.

Best practice per le richieste

  1. Comunica in modo chiaro quali sono i contenuti o le informazioni più importanti.

  2. Struttura la richiesta: inizia definendone il ruolo, fornisci i dati di contesto/input, quindi fornisci l'istruzione.

  3. Utilizzare esempi specifici e diversi per aiutare il modello a restringere il campo di azione e generare risultati più accurati.

  4. Utilizza i vincoli per limitare l'ambito dell'output del modello. In questo modo eviterai di sprecare le istruzioni per ottenere informazioni imprecise.

  5. Suddividi le attività complesse in una sequenza di istruzioni più semplici.

  6. Invitare il modello a valutare o verificare le proprie risposte prima di produrle. ("Assicurati di limitare la tua risposta a tre frasi", "Valuta il tuo lavoro su una scala da 1 a 10 per brevità", "Pensi che sia corretto?").

E forse anche la più importante:

Creatività! Più sono creativi e aperti, migliori saranno i risultati. Gli LLM e la progettazione tecnica sono ancora agli albori e si evolvono ogni giorno.

Tipi di messaggi

Richiesta diretta (Zero-shot)

La richiesta diretta (nota anche come zero-shot) è il tipo di richiesta più semplice. Non fornisce esempi al modello, ma solo l'istruzione. Puoi anche formulare l'istruzione come una domanda o assegnare al modello un "ruolo", come mostrato nel secondo esempio di seguito.

Fornisci:

  1. Istruzione
  2. Contesto fornito

Generazione di idee:

Prompt: Can you give me a list of ideas for blog posts for tourists visiting
New York City for the first time?

Richiesta di ruoli:

Prompt: You are a mighty and powerful prompt-generating robot. You need to
understand my goals and objectives and then design a prompt. The prompt should
include all the relevant information context and data that was provided to you.
You must continue asking questions until you are confident that you can produce
the best prompt for the best outcome. Your final prompt must be optimized for
chat interactions. Start by asking me to describe my goal, then continue with
follow-up questions to design the best prompt.

Organizzazione dati:

Prompt: Create a four-column spreadsheet of 10 highly-rated science fiction
movies, year of release, average audience rating, and top 3 keywords from
audience reviews.

Make sure to cite the source of the audience rating.

Effettuare esempi con esempi (una, pochi e più scatti)

La richiesta one-shot mostra al modello un esempio chiaro e descrittivo di ciò che vorresti imitare.

Generazione di idee utilizzando un esempio:

Prompt:

Come up with a list of ideas for blog posts for tourists visiting
New York City for the first time.

1. Fuggedaboutit! Where to Stay in New York City On Your First Visit

Il prompt con pochi e più snapshot mostra al modello più esempi di ciò che vuoi che faccia. Funziona meglio di zero-shot per attività più complesse in cui vuoi una replica del pattern o quando hai bisogno che l'output sia strutturato in un modo specifico difficile da descrivere.

Classificazione del sentiment:

Prompt:

Great product, 10/10: Positive
Didn't work very well: Negative
Super helpful, worth it: Positive
It doesn't work!:

Quando viene eseguito questo prompt, la risposta del modello sarà quella di classificare "Non funziona" come positivo o negativo, come mostrato negli esempi.

Il predittore della risposta con emoji a scatto multiplo:

Prompt: Predict up to 5 emojis as a response to a text chat message. The output
should only include emojis.

input: The new visual design is blowing my mind 🤯
output: ➕,💘, ❤‍🔥

input: Well that looks great regardless
output: ❤️,🪄

input: Unfortunately this won't work
output: 💔,😔

input: sounds good, I'll look into that
output: 🙏,👍

input: 10hr cut of jeff goldblum laughing URL
output: 😂,💀,⚰️

input: Woo! Launch time!

Lo stesso processo avviene qui, ma poiché la richiesta è più complessa, al modello sono stati forniti più esempi da emulare.

Catene di pensiero

La richiesta della Chain of Thought (CoT) incoraggia la LLM a spiegare il suo ragionamento. Combinala con richieste di pochi scatti per ottenere risultati migliori su attività più complesse che richiedono un ragionamento prima di una risposta.

Prompt:

The odd numbers in this group add up to an even number: 4, 8, 9, 15, 12, 2, 1.
A: Adding all the odd numbers (9, 15, 1) gives 25. The answer is False.
The odd numbers in this group add up to an even number: 15, 32, 5, 13, 82, 7, 1.
A:

CoT Zero-shot

Ricordando il messaggio zero-shot di cui abbiamo parlato in precedenza, questo approccio richiede l'acquisizione da zero e aggiunge l'istruzione: "Pensiamo passo passo". Con questa istruzione, la LLM genera una catena di pensieri e, di solito, una risposta più precisa. Questo è un ottimo approccio per convincere le LLM a generare risposte corrette per aspetti come i problemi correlati alle parole.

Prompt:

I went to the market and bought 10 apples. I gave 2 apples to the neighbor and
2 to the repairman. I then went and bought 5 more apples and ate 1. How many
apples was I left with?

Let's think step by step.

Strategie di iterazione tempestive

Impara ad amare la realtà della riscrittura delle richieste più volte (forse decine) delle volte. Ecco alcune idee per perfezionare i messaggi in caso di problemi:

Nota: con il passare del tempo, queste strategie potrebbero diventare meno utili o necessarie.

  1. Ripetere parole chiave, frasi o idee

  2. Specifica il formato di output desiderato (CSV, JSON e così via)

  3. Usa solo lettere maiuscole per sottolineare punti o istruzioni importanti. Puoi anche provare a esagerare o usare un linguaggio iperbolico, ad esempio: "La tua spiegazione dovrebbe essere assolutamente impossibile da interpretare in modo errato. Ogni parola deve essere chiara."

  4. Utilizza sinonimi o frasi alternative (ad esempio, anziché "Riepiloga"), prova ad aggiungere "tldr" ad alcuni testi di input. Sostituisci parole o frasi diverse e documenta quali funzionano meglio e quali sono peggiori.

  5. Prova la tecnica del sandwich con istruzioni lunghe: aggiungi la stessa affermazione in punti diversi.

  6. Usa una raccolta rapida per trovare l'ispirazione. Prompt Hero e questa galleria dei suggerimenti sono due ottimi modi per iniziare.

Risorse aggiuntive

Best practice per la richiesta

Messaggi di richiesta (uso esterno)