Strategie di progettazione dei prompt

Questa pagina illustra alcune strategie generali di progettazione dei prompt che puoi utilizzare quando li crei.

I modelli linguistici di grandi dimensioni (LLM) vengono addestrati su enormi quantità di dati testuali per apprendere i pattern e le relazioni tra le lingue. Quando viene fornito del testo (il prompt), i modelli linguistici possono predire cosa è probabile che venga scritto dopo, come uno strumento di completamento automatico sofisticato.

Google AI Studio ospita una semplice galleria di prompt destinada a mostrare in modo interattivo molti dei concetti condivisi in questa guida. Nel resto di questa guida scoprirai le seguenti strategie di progettazione dei prompt:

Fornisci istruzioni chiare e specifiche

Fornire al modello istruzioni su cosa fare è un modo efficace ed efficiente per personalizzare il suo comportamento. Assicurati che le istruzioni fornite siano chiare e specifiche. Le istruzioni possono essere semplici come un elenco di istruzioni passo passo o complesse come la mappatura dell'esperienza e del mindset di un utente.

Definisci l'attività da eseguire

Descrivi nel dettaglio l'attività che vuoi venga eseguita dal modello. L'attività può essere semplice come un elenco di istruzioni passo passo o complessa come la mappatura dell'esperienza e del modo di pensare di un utente. Il prompt seguente indica al modello di riassumere un blocco di testo:

Summarize this text:
Text: A quantum computer exploits quantum mechanical phenomena to perform calculations exponentially
faster than any modern traditional computer. At very tiny scales, physical matter acts as both
particles and as waves, and quantum computing uses specialized hardware to leverage this behavior.
The operating principles of quantum devices is beyond the scope of classical physics. When deployed
at scale, quantum computers could be used in a wide variety of applications such as: in
cybersecurity to break existing encryption methods while helping researchers create new ones, in
meteorology to develop better weather forecasting etc. However, the current state of the art quantum
computers are still largely experimental and impractical.
  
    Quantum computers leverage the wave-particle duality of matter at tiny scales to perform
    calculations exponentially faster than traditional computers. They harness quantum phenomena,
    which are beyond the scope of classical physics, to achieve this speed advantage. While
    promising for applications like cybersecurity, weather forecasting, and beyond, current
    quantum computers are still experimental and not yet practical for widespread use.
  

Specifica eventuali vincoli

Specifica eventuali vincoli per la lettura del prompt o la generazione di una risposta. Puoi dire al modello cosa fare e cosa non fare. Nell'esempio precedente, il riepilogo è più breve del testo originale, ma forse vuoi che sia ancora più breve. In questo caso, puoi specificare un vincolo nel prompt sulla durata del riepilogo:

Summarize this text in two sentences:
Text: A quantum computer exploits quantum mechanical phenomena to perform calculations exponentially
faster than any modern traditional computer. At very tiny scales, physical matter acts as both
particles and as waves, and quantum computing uses specialized hardware to leverage this behavior.
The operating principles of quantum devices is beyond the scope of classical physics. When deployed
at scale, quantum computers could be used in a wide variety of applications such as: in
cybersecurity to break existing encryption methods while helping researchers create new ones, in
meteorology to develop better weather forecasting etc. However, the current state of the art quantum
computers are still largely experimental and impractical.
    

      Quantum computers harness the wave-particle duality of matter at the quantum level to perform
      computations exponentially faster than traditional computers. While these machines hold
      immense potential for fields like cybersecurity and weather forecasting, they are currently
      in their early stages of development and not yet practical for widespread use.
    

Definire il formato della risposta

Puoi anche fornire istruzioni che specificano il formato della risposta. Ad esempio, puoi chiedere che la risposta sia formattata come tabella, elenco puntato, presentazione breve, parole chiave, frase o paragrafo. Il seguente messaggio di sistema indica al modello di adottare un tono più colloquiale nella risposta:

    All questions should be answered comprehensively with details, unless the user requests a
    concise response specifically. Respond in the same language as the query.
  
    What is a smart way to create a lemonade business?
  
Launching a Successful Lemonade Stand: A Smart Approach
Creating a lemonade business, whether a simple stand or a larger operation, requires strategic thinking. Here's a breakdown of how to approach it smartly:

1. Define Your Business:
Scope: Are you aiming for a small, seasonal lemonade stand, a food truck, a delivery service, or something else entirely?
Target Audience: Who are you selling to? Families, office workers, tourists?
Unique Selling Proposition: What sets your lemonade apart? Special flavors, organic ingredients, a unique recipe?

Pricing: Research competitor prices and determine a profitable pricing structure.
Location: Consider foot traffic, accessibility, and regulations for your chosen location.
.....
  

Riepilogo

  • Fornisci ai modelli le istruzioni su cosa fare.
  • Rendi le istruzioni chiare e specifiche.
  • Specifica eventuali vincoli o requisiti di formattazione per l'output.

Includi esempi con pochi esempi

Puoi includere nel prompt degli esempi che mostrino al modello come funziona correttamente. Il modello tenta di identificare pattern e relazioni dagli esempi e li applica quando genera una risposta. I prompt che contengono alcuni esempi sono chiamati prompt few-shot, mentre quelli che non forniscono esempi sono chiamati prompt zero-shot. I prompt few-shot vengono spesso utilizzati per regolare la formattazione, la formulazione, l'ambito o la struttura generale delle risposte del modello. Utilizza esempi specifici e diversificati per aiutare il modello a restringere il suo obiettivo e generare risultati più accurati.

Consigliamo di includere sempre esempi di few-shot nei prompt. I prompt senza esempi con few-shot saranno meno efficaci. Di fatto, puoi rimuovere le istruzioni dal prompt se gli esempi sono sufficientemente chiari per mostrare l'attività da svolgere.

Prompt zero-shot e prompt few-shot

Il seguente prompt zero-shot chiede al modello di scegliere la spiegazione migliore.

Please choose the best explanation to the question:

Question: How is snow formed?
Explanation1: Snow is formed when water vapor in the air freezes into ice crystals in the
atmosphere, which can combine and grow into snowflakes as they fall through the atmosphere and
accumulate on the ground.
Explanation2: Water vapor freezes into ice crystals forming snow.
Answer:
  
Explanation 1 is the best explanation.
  

Se il tuo caso d'uso richiede che il modello produca risposte concise, puoi includere nel prompt esempi che danno la preferenza a risposte concise.

Il seguente prompt fornisce due esempi che mostrano la preferenza per le spiegazioni più brevi. Nella risposta, puoi vedere che gli esempi hanno indotto il modello a scegliere la spiegazione più breve (spiegazione 2) anziché quella più lunga (spiegazione 1), come faceva in precedenza.

Below are some examples showing a question, explanation, and answer format:

Question: Why is sky blue?
Explanation1: The sky appears blue because of Rayleigh scattering, which causes shorter blue
wavelengths of light to be scattered more easily than longer red wavelengths, making the sky look
blue.
Explanation2: Due to Rayleigh scattering effect.
Answer: Explanation2

Question: What is the cause of earthquakes?
Explanation1: Sudden release of energy in the Earth's crust.
Explanation2: Earthquakes happen when tectonic plates suddenly slip or break apart, causing a
release of energy that creates seismic waves that can shake the ground and cause damage.
Answer: Explanation1

Now, Answer the following question given the example formats above:

Question: How is snow formed?
Explanation1: Snow is formed when water vapor in the air freezes into ice crystals in the
atmosphere, which can combine and grow into snowflakes as they fall through the atmosphere and
accumulate on the ground.
Explanation2: Water vapor freezes into ice crystals forming snow.
Answer:
  
Answer: Explanation2
  

Trovare il numero ottimale di esempi

Puoi fare esperimenti sul numero di esempi da fornire nel prompt per ottenere i risultati più desiderati. Modelli come Gemini possono spesso rilevare schemi utilizzando alcuni esempi, anche se potresti dover sperimentare il numero di esempi che generano i risultati desiderati. Allo stesso tempo, se includi troppi esempi, il modello potrebbe iniziare a overfit la risposta agli esempi.

Utilizza esempi per mostrare pattern anziché antipattern

L'utilizzo di esempi per mostrare al modello un pattern da seguire è più efficace dell'utilizzo di esempi per mostrare al modello un antipattern da evitare.

Modello negativo:

Don't end haikus with a question:
Haiku are fun
A short and simple poem
Don't you enjoy them?
  

Modello positivo:

Always end haikus with an assertion:
Haiku are fun
A short and simple poem
A joy to write
  

Utilizza una formattazione coerente negli esempi

Assicurati che la struttura e la formattazione degli esempi di few-shot siano le stesse per evitare risposte con formati indesiderati. Uno degli obiettivi principali dell'aggiunta di esempi con pochi esempi nei prompt è mostrare al modello il formato della risposta. Pertanto, è essenziale garantire un formato coerente per tutti gli esempi, prestando particolare attenzione ai tag XML, agli spazi bianchi, ai caratteri di fine riga e agli elementi di separazione degli esempi.

Riepilogo

  • La presenza di esempi di prompt e risposta nel prompt aiuta il modello a imparare a rispondere.
  • Fornisci al modello esempi di pattern da seguire anziché esempi di pattern da evitare.
  • Sperimenta con il numero di prompt da includere. A seconda del modello, un numero troppo ridotto di esempi è inefficace per modificare il comportamento del modello. Troppi esempi causano un overfitting del modello.
  • Utilizza una formattazione coerente negli esempi

Aggiungere informazioni contestuali

Puoi includere nel prompt le istruzioni e le informazioni necessarie al modello per risolvere un problema anziché presumere che il modello disponga di tutte le informazioni richieste. Queste informazioni contestuali aiutano il modello a comprendere i vincoli e i dettagli di ciò che gli chiedi di fare.

Nell'esempio seguente viene chiesto al modello di fornire indicazioni per la risoluzione dei problemi relativi a un router:

What should I do to fix my disconnected wifi? The light on my Google Wifi router is yellow and
blinking slowly.
  
  A yellow blinking light on your Google Wifi router usually indicates a problem with the internet connection. Here are some steps to troubleshoot and fix the issue:
  1. Restart your router and modem:
    - Unplug your modem from the power outlet and wait for 30 seconds.
    - Plug your modem back in and wait for it to fully boot up.
    - Unplug your Google Wifi router and wait for 30 seconds.
    - Plug your Google Wifi router back in and wait for it to fully boot up.
.....
  

La risposta sembra contenere informazioni generiche per la risoluzione dei problemi che non sono specifiche per il router o per lo stato delle spie LED.

Per personalizzare la risposta per il router specifico, puoi aggiungere alla richiesta la guida per la risoluzione dei problemi del router come contesto a cui fare riferimento quando fornisce una risposta.

Answer the question using the text below. Respond with only the text provided.
Question: What should I do to fix my disconnected wifi? The light on my Google Wifi router is yellow and blinking slowly.

Text:
Color: Slowly pulsing yellow
What it means: There is a network error.
What to do:
Check that the Ethernet cable is connected to both your router and your modem and both devices are turned on. You might need to unplug and plug in each device again.

Color: Fast blinking yellow
What it means: You are holding down the reset button and are factory resetting this device.
What to do:
If you keep holding down the reset button, after about 12 seconds, the light will turn solid yellow. Once it is solid yellow, let go of the factory reset button.

Color: Solid yellow
What it means: Router is factory resetting.
What to do:
This can take up to 10 minutes. When it's done, the device will reset itself and start pulsing white, letting you know it's ready for setup.

Color: Solid red
What it means: Something is wrong.
What to do:
Critical failure. Factory reset the router. If the light stays red, contact Wifi customer support.
  
Check that the Ethernet cable is connected to both your router and your modem and both devices are turned on. You might need to unplug and plug in each device again.
  

Riepilogo

  • Includi informazioni (contesto) nel prompt che vuoi che il modello utilizzi quando genera una risposta.
  • Fornisci al modello istruzioni su come utilizzare le informazioni contestuali.

Aggiungere prefissi

Un prefisso è una parola o una frase che aggiungi al contenuto del prompt che può servire a diversi scopi, a seconda di dove lo inserisci:

  • Prefisso di input: l'aggiunta di un prefisso agli indicatori di input indica al modello le parti semanticamente significative dell'input. Ad esempio, i prefissi "English:" e "French:" delimitano due lingue diverse.
  • Prefisso di output: anche se l'output è generato dal modello, puoi aggiungere un prefisso per l'output nel prompt. Il prefisso di output fornisce al modello informazioni su ciò che ci si aspetta come risposta. Ad esempio, il prefisso di output "JSON:" indica al modello che l'output deve essere in formato JSON.
  • Prefisso di esempio: nei prompt few-shot, l'aggiunta di prefissi agli esempi fornisce etichette che il modello può utilizzare per generare l'output, il che semplifica l'analisi dei contenuti dell'output.

Nell'esempio seguente, "Testo:" è il prefisso di input e "La risposta è:" è il prefisso di output.

Classify the text as one of the following categories.
- large
- small
Text: Rhino
The answer is: large
Text: Mouse
The answer is: small
Text: Snail
The answer is: small
Text: Elephant
The answer is:
  
The answer is: large
  

Consenti al modello di completare l'input parziale

I modelli linguistici generativi funzionano come uno strumento avanzato di completamento automatico. Quando fornisci contenuti parziali, il modello può fornire il resto dei contenuti o ciò che ritiene essere una continuazione di questi contenuti come risposta. In questo caso, se includi esempi o contesto, il modello può tenerli conto.

L'esempio seguente fornisce un prompt con un'istruzione e un input di entità:

For the given order, return a JSON object that has the fields cheeseburger, hamburger, fries, or
drink, with the value being the quantity.

Order: A burger and a drink.
  
```
{
  "hamburger": 1,
  "drink": 1
}
```
  

Anche se il modello ha eseguito l'istruzione, a volte scrivere le istruzioni in linguaggio naturale può essere complicato e lascia molto all'interpretazione del modello. Ad esempio, il menu di un ristorante potrebbe contenere molti elementi. Per ridurre le dimensioni della risposta JSON, probabilmente è consigliabile omettere gli elementi che non sono stati ordinati. In questo caso, puoi fornire un esempio e un prefisso di risposta e lasciare che il modello venga completato:

Valid fields are cheeseburger, hamburger, fries, and drink.
Order: Give me a cheeseburger and fries
Output:
```
{
  "cheeseburger": 1,
  "fries": 1
}
```
Order: I want two burgers, a drink, and fries.
Output:
  
```
{
  "hamburger": 2,
  "drink": 1,
  "fries": 1
}
```
  

Nota come "cheeseburger" è stato escluso dall'output perché non faceva parte dell'ordine.

Chiedi al modello di formattare la sua risposta

La strategia di completamento può anche aiutarti a formattare la risposta. L'esempio seguente chiede al modello di creare uno schema di un saggio:

Create an outline for an essay about hummingbirds.
  
  Hummingbirds: A Symphony of Speed and Color
    I. Introduction
    A. Hummingbirds are fascinating creatures known for their dazzling colors, lightning-fast flight, and unique feeding habits.
    B. Brief overview of the diversity of hummingbird species and their geographic distribution.
    C. Thesis statement: Hummingbirds are an embodiment of resilience, adaptation, and the wonders of the natural world.
.....
  

Il prompt non ha specificato il formato per lo schema e il modello ne ha scelto uno per te. Per fare in modo che il modello restituisca un riassunto in un formato specifico, puoi aggiungere del testo che rappresenti l'inizio del riassunto e lasciare che il modello lo completi in base allo schema che hai avviato.

Create an outline for an essay about hummingbirds.
I. Introduction
   *
  
  Hummingbirds: Jewels of the Air
    **I. Introduction**
       * **Hook:** Begin with a captivating image or anecdote about hummingbirds, emphasizing their vibrant colors, rapid flight, and unique feeding habits.
       * **Background:** Briefly introduce hummingbirds as the smallest birds in the world and their fascinating adaptations for a nectar-rich diet.
       * **Thesis:** State the main argument or focus of the essay. Examples: 
            * **The incredible adaptations of hummingbirds enable them to thrive in diverse ecosystems.**
            * **Hummingbirds play a crucial role in pollination and biodiversity.**
            * **The beauty and grace of hummingbirds make them captivating subjects for both scientific study and artistic appreciation.**
  

Riepilogo

  • Se fornisci al modello un input parziale, il modello completa l'input in base a eventuali esempi o contesti disponibili nel prompt.
  • A volte, chiedere al modello di completare un input può essere più facile che descrivere l'attività in linguaggio naturale.
  • L'aggiunta di una risposta parziale a un prompt può indurre il modello a seguire un pattern o un formato preferito.

Suddividi i prompt in componenti semplici

Per i casi d'uso che richiedono prompt complessi, puoi aiutare il modello a gestire questa complessità suddividendoli in componenti più semplici.

Istruzioni per la suddivisione

Invece di avere molte istruzioni in un prompt, crea un prompt per istruzione. Puoi scegliere quale richiesta elaborare in base all'input dell'utente.

Prompt in sequenza

Per le attività complesse che richiedono più passaggi sequenziali, rendi ogni passaggio un prompt e concatena i prompt in una sequenza. In questa catena sequenziale di prompt, l'output di un prompt nella sequenza diventa l'input del prompt successivo. L'output dell'ultimo prompt della sequenza è l'output finale.

Risposte aggregate

L'aggregazione si verifica quando vuoi eseguire diverse attività in parallelo su parti diverse dei dati e aggregare i risultati per produrre l'output finale. Ad esempio, puoi chiedere al modello di eseguire un'operazione sulla prima parte dei dati, un'altra sul resto dei dati e aggregare i risultati.

Riepilogo

  • Suddividi le istruzioni complesse in un prompt per ogni istruzione e decidi quale prompt applicare in base all'input dell'utente.
  • Suddividi più passaggi sequenziali in prompt separati e concatenali in modo che l'output del prompt precedente diventi l'input del prompt successivo.
  • Suddividere le attività parallele e aggregare le risposte per produrre l'output finale.

Sperimentare con diversi valori parametro

Ogni chiamata inviata a un 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. Prova diversi valori parametro per ottenere i valori migliori per l'attività. I parametri disponibili per i vari modelli possono variare. I parametri più comuni sono:

  • Numero massimo di token di output
  • Temperatura
  • Top-K
  • Top-P

Numero massimo di token di output

Numero massimo di token che possono essere generati nella risposta. Un token equivale a circa quattro caratteri. 100 token corrispondono a circa 20 parole.

Specifica un valore più basso per risposte più brevi e un valore più alto per risposte più lunghe.

Temperatura

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

Per la maggior parte dei casi d'uso, prova a iniziare con una temperatura di 0.2. Se il modello restituisce una risposta troppo generica, troppo breve o fornisce una risposta di riserva, prova ad aumentare la temperatura.

Top-K

Top-K cambia il modo in cui il modello seleziona i token per l'output. Un top-K pari a 1 indica che il token successivo selezionato è il più probabile tra tutti i token nel vocabolario del modello (chiamato anche decodifica greedy). Un top-K pari a 3 indica invece che il token successivo viene selezionato tra i tre token più probabili utilizzando la temperatura.

Per ogni fase di selezione dei token, vengono campionati i token Top-K con le probabilità più elevate. Quindi i token vengono ulteriormente filtrati in base a top-P e il token finale viene selezionato utilizzando il campionamento con temperatura.

Specifica un valore più basso per risposte meno casuali e un valore più alto per risposte più casuali. Il valore predefinito di top-K è 40.

Top-P

Top-P cambia il modo in cui il modello seleziona i token per l'output. I token vengono selezionati dal più probabile (vedi Top-K) al meno probabile finché la somma delle loro probabilità non corrisponde al valore di Top-P. Ad esempio, se i token A, B e C hanno una probabilità di 0,3, 0,2 e 0,1 e il valore di top-P è 0.5, il modello selezionerà A o B come token successivo utilizzando la temperatura ed esclude C come candidato.

Specifica un valore più basso per risposte meno casuali e un valore più alto per risposte più casuali. Il valore predefinito di top-P è 0.95.

Strategie di iterazione dei prompt

La progettazione dei prompt è un processo iterativo che spesso richiede alcune iterazioni prima di ottenere la risposta desiderata in modo coerente. Questa sezione fornisce indicazioni su alcune cose che puoi provare quando esamini i prompt.

Utilizza una formulazione diversa

L'utilizzo di parole o frasi diverse nei prompt spesso genera risposte diverse dal modello anche se tutte significano la stessa cosa. Se non ottieni i risultati previsti dal prompt, prova a riformularlo.

Version 1:
How do I bake a pie?

Version 2:
Suggest a recipe for a pie.

Version 3:
What's a good pie recipe?
  

Passare a un'attività analoga

Se non riesci a far sì che il modello segua le tue istruzioni per un'attività, prova a dargli istruzioni per un'attività analoga che ottenga lo stesso risultato.

Questo prompt indica al modello di classificare un libro utilizzando categorie predefinite.

Which category does The Odyssey belong to:
thriller
sci-fi
mythology
biography
  
    The Odyssey belongs to the category of **mythology**. 

    Here's why:
    
    * **Mythology:** The Odyssey tells the story of Odysseus, a hero from Greek mythology, and his
    journey home after the Trojan War. It features gods, monsters, and supernatural events common to
    Greek mythology.
.....
  

La risposta è corretta, ma il modello non è rimasto nei limiti delle opzioni. Vuoi anche creare un modello che risponda solo con una delle opzioni anziché con una frase completa. In questo caso, puoi riformulare le istruzioni come una domanda a scelta multipla e chiedere al modello di scegliere un'opzione.

Multiple choice problem: Which of the following options describes the book The Odyssey?
Options:
- thriller
- sci-fi
- mythology
- biography
  
The correct answer is **mythology**. 
  

Modificare l'ordine dei contenuti della richiesta

A volte l'ordine dei contenuti nel prompt può influire sulla risposta. Prova a modificare l'ordine dei contenuti e vedi come questo influisce sulla risposta.

Version 1:
[examples]
[context]
[input]

Version 2:
[input]
[examples]
[context]

Version 3:
[examples]
[input]
[context]

Risposte di riserva

Una risposta di riserva è una risposta restituita dal modello quando il prompt o la risposta attivano un filtro di sicurezza. Un esempio di risposta di riserva è "Non posso aiutarti perché sono solo un modello linguistico".

Se il modello risponde con una risposta di riserva, prova ad aumentare la temperatura.

Cose da evitare

  • Evita di fare affidamento su modelli per generare informazioni oggettive.
  • Da usare con cautela per i problemi di matematica e logica.

Passaggi successivi

  • Ora che hai una conoscenza più approfondita della progettazione dei prompt, prova a scrivere i tuoi prompt utilizzando Google AI Studio.
  • Per saperne di più sui prompt multimodali, consulta Prompt con file multimediali.