Informazioni sui modelli generativi

I modelli di intelligenza artificiale generativa (IA) 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 livello più basico, questi modelli funzionano come sofisticate applicazioni di completamento automatico. Dato il testo di input ("Puoi portare un cavallo all'acqua"), un modello generativo può prevedere che il testo di output probabilmente seguirà ("ma non puoi far bere"), in base ai pattern appresi dai dati di addestramento. Puoi usare questa proprietà di base dei modelli generativi per varie applicazioni:

  • Produrre una scrittura creativa come poesia, racconti, metafori e post del blog
  • Convertire i dati strutturati in testo in formato libero
  • Estrae e riepiloga informazioni da testo in formato libero
  • Genera codice
  • Traduci da una lingua all'altra

L'uso di modelli generativi per creare queste funzionalità non richiede alcuna esperienza di machine learning (ML). Non è necessario raccogliere un set di dati di grandi dimensioni o addestrare un modello. Tutto ciò che serve per iniziare il primo prototipo è descrivere in poche frasi cosa vuoi che il modello faccia.

I modelli generativi che gestiscono solo input e output di testo sono noti anche come modelli linguistici di grandi dimensioni (LLM). La famiglia di modelli Gemini è in grado di elaborare più dei dati di testo e, sebbene possano svolgere le funzioni di un LLM, sono più correttamente noti come modelli generativi.

Esempi di applicazioni

I seguenti esempi mostrano i tipici input di testo e gli output da 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.

Generare 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
*   ...

Puoi ottenere modelli generativi per produrre tutti i tipi di comportamenti utili come questo, creando il giusto testo di input, chiamato anche prompt. L'arte e la scienza di trovare le parole giuste per far sì che i modelli generativi facciano ciò che vuoi si chiama prompt engineering (anche chiamato "prompt engineering" o semplicemente "prompt").

Progettazione dei prompt

Nella sezione precedente sono stati mostrati alcuni esempi di prompt contenenti un'istruzione, come "Scrivimi una poesia". Questo tipo di istruzione può andare bene per determinati tipi di attività. Tuttavia, per altre applicazioni, un'altra tecnica di prompt chiamata Prompt few-shot potrebbe funzionare meglio. I prompt few-shot sfruttano il fatto che i modelli linguistici di grandi dimensioni (LLM) sono incredibilmente bravi a riconoscere e replicare pattern nei dati di testo. L'idea è inviare al modello generativo un modello di testo che impari a completare. Ad esempio, supponi di voler creare un'applicazione che prenda come input il nome di un paese e restituisca la sua capitale. Ecco un prompt di testo progettato proprio a questo scopo:

Italy : Rome
France : Paris
Germany :

In questo prompt devi stabilire un pattern: [country] : [capital]. Se invii questo prompt a un modello linguistico di grandi dimensioni (LLM), questo lo completerà automaticamente e restituirà un risultato simile al seguente:

     Berlin
Turkey : Ankara
Greece : Athens

La 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 ulteriori coppie di paesi e capitali. Questo perché il modello generativo "continua il pattern". Se tutto ciò che cerchi di fare è creare una funzione che dica la capitale di un paese di input ("Germania: Berlino"), probabilmente non ti interessa davvero il testo che il modello genera dopo "Berlino". Infatti, in qualità di progettisti di applicazioni, vorresti anche troncare questi esempi estranei. Inoltre, probabilmente vorrai parametrizzare l'input, in modo che la 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 breve per generare le capitali di un paese.

Puoi eseguire un numero elevato di attività seguendo questo modello di prompt few-shot. Ecco alcuni prompt few-shot con un formato leggermente diverso che converte 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, utilizza la richiesta "Inverti dizionario". Data una definizione, restituisce la parola corrispondente 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 la sequenza esatta di questi prompt varia leggermente. Oltre a contenere esempi, fornire istruzioni nei prompt è una strategia aggiuntiva da considerare quando scrivi i tuoi prompt, perché aiuta a comunicare l'intenzione al modello.

Confronto tra prompt e sviluppo software tradizionale

A differenza del software tradizionale, progettato sulla base di una specifica scritta con cura, il comportamento dei modelli generativi è ampiamente 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 continuamente ottimizzati su nuovi set di dati, a volte cambia in modo tale da cambiare inavvertitamente le strutture di prompt che funzionano meglio. Cosa significa tutto questo per te? Sperimenta. Prova formati di prompt diversi.

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 a seconda dei valori parametro. I parametri del modello più comuni sono:

  1. Numero massimo di token di output: 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.

  2. Temperatura: la temperatura controlla il grado di casualità nella selezione dei token. La temperatura viene utilizzata per il campionamento durante la generazione delle risposte, che si verifica quando vengono applicati topP e topK. Le temperature più basse sono ideali per prompt che richiedono una risposta più deterministica o meno aperta, 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.

  3. topK: il parametro topK cambia il modo in cui il modello seleziona i token per l'output. Un valore topK pari a 1 indica che il token selezionato è il più probabile tra tutti i token nel vocabolario del modello (detta anche decodifica greedy), mentre un valore topK pari a 3 indica che il token successivo viene selezionato tra i tre più probabili in base alla temperatura. Per ogni passaggio di selezione dei token, vengono campionati i token topK con le probabilità più alte. I token vengono quindi ulteriormente filtrati in base al criterio topP con il token finale selezionato utilizzando il campionamento a temperatura.

  4. topP: il parametro topP 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 probabilità non corrisponde al valore di topP. Ad esempio, se i token A, B e C hanno una probabilità di 0,3, 0,2 e 0,1 e il valore di topP è 0,5, il modello selezionerà A o B come token successivo utilizzando la temperatura ed escluderà C come candidato. Il valore predefinito di topP è 0,95.

  5. stop_sequences: imposta una sequenza di interruzioni per comunicare al modello di interrompere la generazione di contenuti. Una sequenza di interruzioni può essere qualsiasi sequenza di caratteri. Cerca di non utilizzare una sequenza di caratteri che potrebbe apparire nei contenuti generati.

Tipi di prompt

A seconda del livello di informazioni contestuali contenute, i prompt vengono generalmente 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 esempi o informazioni aggiuntivi. Significa che il modello deve basarsi sulle informazioni preesistenti per generare una risposta plausibile.

Alcuni pattern di prompt zero-shot comunemente utilizzati sono:

  • Contenuti con 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.
  • Istruzioni-contenuti-di-istruzione
<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, è possibile fare in modo che il modello continui a usare istruzioni. Ad esempio, ecco un prompt zero-shot in cui il modello intende continuare l'input fornito:
Once upon a time, there was a little sparrow building a nest in a farmer's
barn. This sparrow

Usa i prompt zero-shot per generare formati di testo creativi, come poesie, codice, script, 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 alimentari come:

Food: Apple
Pairs with: Cheese
Food: Pear
Pairs with:

Prompt few-shot

Questi prompt forniscono al modello più esempi da replicare. Utilizza i prompt few-shot per completare attività complicate, come la sintesi di 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 in background

Questa sezione mira a rispondere alla domanda: c'è casualità nelle risposte dei modelli generativi o sono deterministiche?

La risposta corta: sì per entrambe. Quando richiedi un modello generativo, viene generata una risposta testuale in due fasi. Nella prima fase, il modello generativo elabora il prompt di input e genera una distribuzione di probabilità su possibili token (parole) che potrebbero essere successivi. Ad esempio, se richiedi con il testo di input "Il cane ha saltato il ... ", il modello generativo produrrà un array di probabili parole successive:

[("fence", 0.77), ("ledge", 0.12), ("blanket", 0.03), ...]

Questo processo è deterministico; un modello generativo produce questa stessa distribuzione ogni volta che inserisce lo stesso testo del prompt.

Nella seconda fase, il modello generativo converte queste distribuzioni in effettive risposte di testo tramite una delle varie strategie di decodifica. Una strategia di decodifica semplice potrebbe selezionare il token più probabile a ogni passo temporale. Questo processo sarebbe sempre deterministico. Tuttavia, potresti scegliere di generare una risposta campionamento casuale sulla distribuzione restituita dal modello. Questo processo sarebbe stocastico (casuale). Controlla il grado di casualità consentito in questo processo di decodifica impostando la temperatura. Una temperatura pari a 0 indica che vengono selezionati solo i token più probabili e non c'è casualità. Al contrario, una temperatura elevata inietta un elevato grado di casualità nei token selezionati dal modello, generando risposte più inaspettate e sorprendenti del modello.

Per approfondire

  • Ora che conosci meglio i prompt e i 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 dei prompt.