I modelli di intelligenza artificiale (IA) generativa come la famiglia di modelli Gemini sono in grado di creare contenuti da vari tipi di input di dati, tra cui testo, immagini e audio. Al loro livello più elementare, questi modelli funzionano come applicazioni di completamento automatico sofisticate. Dato il testo di input ("Puoi portare un cavallo al fiume"), un modello generativo può prevedere il testo di output che è statisticamente probabile che segua ("ma non puoi obbligarlo a bere"), in base ai pattern appresi dai dati di addestramento. Puoi utilizzare questa proprietà di base dei modelli generativi per varie applicazioni:
- Generare testi creativi come poesie, brevi storie, metafore e post di blog
- Convertire i dati strutturati in testo libero
- Estrai e riepiloga le informazioni dal testo libero
- Genera codice
- Tradurre da una lingua all'altra
L'utilizzo di modelli generativi per creare queste funzionalità non richiede alcuna conoscenza del machine learning (ML). Non è necessario raccogliere un set di dati di grandi dimensioni o addestrare un modello. Per iniziare a creare il tuo primo prototipo, è sufficiente descrivere in poche frasi cosa vuoi che il modello faccia.
I modelli generativi che gestiscono solo l'input e l'output di testo sono noti anche come modelli linguistici di grandi dimensioni (LLM). La famiglia di modelli Gemini può elaborare più di dati di testo e, sebbene possa svolgere le funzioni di un LLM, è più propriamente nota come modelli generativi.
Applicazioni di esempio
I seguenti esempi mostrano input e output di testo tipici di un modello generativo.
Genera una poesia
Input utente: Write me a four-line poem about puppies and Android phones. Make
sure it rhymes.
Output del modello:
Puppies are cute,
Android phones are neat,
They both bring joy,
And make life complete.
Genera un elenco
Input utente: Generate a bulleted list of items I need to pack for a three-day
camping trip.
Output del modello:
* Tent
* Sleeping bag
* Sleeping pad
* Camp stove
* Pots and pans
* Utensils
* Food
* Water
* First-aid kit
* Sunscreen
* Insect repellent
* ...
È possibile ottenere modelli generativi per produrre tutti i tipi di comportamenti utili come questo, semplicemente creando il giusto testo di input, chiamato anche prompt. L'arte e la scienza di capire la formulazione giusta per far sì che i modelli generativi facciano ciò che vuoi si chiama progettazione dei prompt (anche nota come "ingegneria dei prompt" o semplicemente "prompt").
Guida introduttiva alla progettazione dei prompt
La sezione precedente mostra alcuni esempi di prompt contenenti un'istruzione, come "Scrivimi una poesia". Questo tipo di istruzione può funzionare bene per alcuni tipi di attività. Tuttavia, per altre applicazioni, potrebbe funzionare meglio un'altra tecnica di prompt chiamata prompt few-shot. I prompt few-shot sfruttano il fatto che i modelli linguistici di grandi dimensioni sono incredibilmente bravi a riconoscere e replicare i pattern nei dati di testo. L'idea è quella di inviare al modello generativo un pattern di testo che impara a completare. Ad esempio, supponiamo che tu voglia creare un'applicazione che prenda in input il nome di un paese e ne invii la capitale. Ecco un prompt di testo progettato per farlo:
Italy : Rome
France : Paris
Germany :
In questo prompt, stabilisci un pattern: [country] : [capital]
. Se invii questo prompt a un modello linguistico di grandi dimensioni, il pattern verrà completato automaticamente e verrà restituito qualcosa di simile al seguente:
Berlin
Turkey : Ankara
Greece : Athens
Questa risposta del modello potrebbe sembrare un po' strana. Il modello ha restituito non solo la capitale della Germania (l'ultimo paese nel prompt scritto a mano), ma anche un intero elenco di altre coppie di paesi e capitali. Questo accade perché il modello generativo "continua il pattern". Se vuoi solo creare una funzione che ti indichi la capitale di un paese inserito ("Germania: Berlino"), probabilmente non ti interessa molto il testo generato dal modello dopo "Berlino". Infatti, in qualità di progettisti di applicazioni, probabilmente vorrai troncare questi esempi estranei. Inoltre, probabilmente vorrai parametrizzare l'input, in modo che Germania non sia una stringa fissa, ma una variabile fornita dall'utente finale:
Italy : Rome
France : Paris
<user input here> :
Hai appena scritto un prompt con pochi esempi per generare le capitali dei paesi.
Puoi svolgere un numero elevato di attività seguendo questo modello di prompt con pochi esempi. Ecco un prompt con pochi scatti con un formato leggermente diverso che consente di convertire Python in JavaScript:
Convert Python to JavaScript.
Python: print("hello world")
JavaScript: console.log("hello world")
Python: for x in range(0, 100):
JavaScript: for(var i = 0; i < 100; i++) {
Python: ${USER INPUT HERE}
JavaScript:
In alternativa, puoi usare questo prompt "dizionario inverso". Data una definizione, restituisce la parola che corrisponde a quella definizione:
Given a definition, return the word it defines.
Definition: When you're happy that other people are also sad.
Word: schadenfreude
Definition: existing purely in the mind, but not in physical reality
Word: abstract
Definition: ${USER INPUT HERE}
Word:
Potresti aver notato che lo schema esatto di questi prompt con pochi scatti varia leggermente. Oltre a contenere esempi, fornire istruzioni nei prompt è un'ulteriore strategia da considerare quando scrivi i tuoi prompt, in quanto aiuta a comunicare le tue intenzioni al modello.
Prompting rispetto allo sviluppo software tradizionale
A differenza del software tradizionale progettato in base a specifiche scritte con attenzione, il comportamento dei modelli generativi è in gran parte opaco anche per gli addestratori dei modelli. Di conseguenza, spesso non è possibile prevedere in anticipo quali tipi di strutture di prompt funzioneranno meglio per un determinato modello. Inoltre, il comportamento di un modello generativo è determinato in gran parte dai dati di addestramento e, poiché i modelli vengono ottimizzati continuamente su nuovi set di dati, a volte il modello cambia abbastanza da cambiare inavvertitamente le strutture di prompt che funzionano meglio. Che cosa comporta tutto questo per te? Sperimenta. Prova diversi formati di prompt.
Parametri del modello
Ogni prompt inviato al modello include valori parametro che controllano il modo in cui il modello genera una risposta. Il modello può generare risultati diversi per valori parametro diversi. I parametri del modello più comuni sono:
Token di output massimi:specifica il numero massimo di token che possono essere generati nella risposta. Un token equivale a circa quattro caratteri. 100 token corrispondono a circa 60-80 parole.
Temperatura:la temperatura controlla il grado di casualità nella selezione dei token. La temperatura viene utilizzata per il campionamento durante la generazione della risposta, che si verifica quando vengono applicati
topP
etopK
. Le temperature più basse sono ideali per prompt che richiedono risposte più deterministiche o meno aperte, mentre le temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura pari a 0 è deterministica, il che significa che viene sempre selezionata la risposta con la probabilità più alta.topK
: il parametrotopK
cambia il modo in cui il modello seleziona i token per l'output. Un valoretopK
pari a 1 indica che il token selezionato è il più probabile tra tutti i token nel vocabolario del modello (chiamato anche decodifica greedy), mentre un valoretopK
pari a 3 indica che il token successivo viene selezionato tra i tre più probabili utilizzando la temperatura. Per ogni fase di selezione dei token, vengono campionati itopK
token con le probabilità più alte. I token vengono poi ulteriormente filtrati in base atopP
e il token finale viene selezionato utilizzando il campionamento con temperatura.topP
: il parametrotopP
cambia il modo in cui il modello seleziona i token per l'output. I token vengono selezionati dal più probabile al meno probabile finché la somma delle loro probabilità non corrisponde al valoretopP
. Ad esempio, se i token A, B e C hanno una probabilità di 0,3, 0,2 e 0,1 e il valore ditopP
è 0,5, il modello seleziona A o B come token successivo utilizzando la temperatura ed esclude C come candidato. Il valore predefinito ditopP
è 0,95.stop_sequences
: imposta una sequenza di interruzioni per indicare al modello di interrompere la generazione di contenuti. Una sequenza di interruzione può essere qualsiasi sequenza di caratteri. Cerca di evitare di utilizzare una sequenza di caratteri che potrebbe comparire nei contenuti generati.
Tipi di prompt
A seconda del livello di informazioni contestuali in essi contenute, i prompt sono in genere classificati in tre tipi.
Prompt zero-shot
Questi prompt non contengono esempi da replicare per il modello. I prompt zero-shot mostrano essenzialmente la capacità del modello di completare il prompt senza ulteriori esempi o informazioni. Ciò significa che il modello deve fare affidamento sulle sue conoscenze preesistenti per generare una risposta plausibile.
Alcuni pattern di prompt zero-shot comunemente utilizzati sono:
- Contenuti delle istruzioni
<Overall instruction>
<Content to operate on>
Ad esempio,
Summarize the following into two sentences at the third-grade level:
Hummingbirds are the smallest birds in the world, and they are also one of the
most fascinating. They are found in North and South America, and they are known
for their long, thin beaks and their ability to fly at high speeds.
Hummingbirds are made up of three main parts: the head, the body, and the tail.
The head is small and round, and it contains the eyes, the beak, and the brain.
The body is long and slender, and it contains the wings, the legs, and the
heart. The tail is long and forked, and it helps the hummingbird to balance
while it is flying.
Hummingbirds are also known for their coloration. They come in a variety of
colors, including green, blue, red, and purple. Some hummingbirds are even able
to change their color!
Hummingbirds are very active creatures. They spend most of their time flying,
and they are also very good at hovering. Hummingbirds need to eat a lot of food
in order to maintain their energy, and they often visit flowers to drink nectar.
Hummingbirds are amazing creatures. They are small, but they are also very
powerful. They are beautiful, and they are very important to the ecosystem.
- Instruction-content-instruction
<Overall instruction or context setting>
<Content to operate on>
<Final instruction>
Ad esempio,
Here is some text I'd like you to summarize:
Hummingbirds are the smallest birds in the world, and they are also one of the
most fascinating. They are found in North and South America, and they are known
for their long, thin beaks and their ability to fly at high speeds. Hummingbirds
are made up of three main parts: the head, the body, and the tail. The head is
small and round, and it contains the eyes, the beak, and the brain. The body is
long and slender, and it contains the wings, the legs, and the heart. The tail
is long and forked, and it helps the hummingbird to balance while it is flying.
Hummingbirds are also known for their coloration. They come in a variety of
colors, including green, blue, red, and purple. Some hummingbirds are even able
to change their color! Hummingbirds are very active creatures. They spend most
of their time flying, and they are also very good at hovering. Hummingbirds need
to eat a lot of food in order to maintain their energy, and they often visit
flowers to drink nectar. Hummingbirds are amazing creatures. They are small, but
they are also very powerful. They are beautiful, and they are very important to
the ecosystem.
Summarize it in two sentences at the third-grade reading level.
- Continuazione. A volte, puoi fare in modo che il modello continui a utilizzare il testo senza istruzioni. Ad esempio, di seguito è riportato un prompt zero-shot in cui il modello deve continuare l'input fornito:
Once upon a time, there was a little sparrow building a nest in a farmer's
barn. This sparrow
Utilizza prompt senza esempi per generare formati di testo creativi, come poesie, codice, sceneggiature, brani musicali, email o lettere.
Prompt one-shot
Questi prompt forniscono al modello un singolo esempio per replicare e continuare il pattern. Ciò consente di generare risposte prevedibili dal modello.
Ad esempio, puoi generare abbinamenti di cibo come:
Food: Apple
Pairs with: Cheese
Food: Pear
Pairs with:
Prompt few-shot
Questi prompt forniscono al modello più esempi da replicare. Utilizza prompt con pochi esempi per completare attività complicate, ad esempio sintetizzare i dati in base a un pattern.
Un prompt di esempio potrebbe essere:
Generate a grocery shopping list for a week for one person. Use the JSON format
given below.
{"item": "eggs", "quantity": "6"}
{"item": "bread", "quantity": "one loaf"}
Modelli generativi sotto il cofano
Lo scopo di questa sezione è rispondere alla domanda: le risposte dei modelli generativi sono casuali o deterministiche?
La risposta breve è sì a entrambe le domande. Quando chiedi un prompt a un modello generativo, viene generata una risposta text in due fasi. Nella prima fase, il modello generativo elabora il prompt di input e genera una distribuzione di probabilità sui possibili token (parole) che potrebbero comparire successivamente. Ad esempio, se fornisci il prompt con il testo di input "Il cane ha saltato sopra il ... ", il modello generativo produrrà un array di parole successive probabili:
[("fence", 0.77), ("ledge", 0.12), ("blanket", 0.03), ...]
Questo processo è deterministico; un modello generativo produrrà la stessa distribuzione ogni volta che viene inserito lo stesso testo del prompt.
Nella seconda fase, il modello generativo converte queste distribuzioni in risposte di testo effettive tramite una delle diverse strategie di decodifica. Una strategia di decodifica semplice potrebbe selezionare il token più probabile a ogni passo temporale. Questo procedura sarebbe sempre deterministica. Tuttavia, puoi scegliere di generare una risposta campionando in modo casuale la distribuzione restituita dal modello. Questo processo sarebbe stocastico (casuale). Controlla il grado di casualità consentito in questa procedura di decodifica impostando la temperatura. Con una temperatura pari a 0 vengono selezionati solo i token più probabili e non c'è alcuna casualità. Al contrario, una temperatura elevata inserisce un elevato grado di casualità nei token selezionati dal modello, generando risposte più inaspettate e sorprendenti.
Per approfondire
- Ora che hai una conoscenza più approfondita dei prompt e dei modelli generativi, prova a scrivere i tuoi prompt utilizzando Google AI Studio.
- Consulta le linee guida per i prompt per scoprire di più sulle best practice per la creazione di prompt.