Stratégies de conception des invites

Cette page présente certaines stratégies générales de conception de requêtes que vous pouvez utiliser lorsque vous concevez des requêtes.

Les grands modèles de langage (LLM) sont entraînés sur de grandes quantités de données textuelles pour apprendre les modèles et les relations entre les langues. Lorsqu'ils reçoivent un texte (la requête), les modèles de langage peuvent prédire ce qui est le plus susceptible de suivre, à la manière d'un outil de saisie semi-automatique très sophistiqué.

Google AI Studio héberge une galerie de requêtes simple destinée à présenter de manière interactive de nombreux concepts abordés dans ce guide. Dans la suite de ce guide, vous allez découvrir les stratégies de conception d'invites suivantes :

Donner des instructions claires et spécifiques

Le fait de fournir au modèle des instructions sur ce qu'il doit faire constitue un moyen efficace de personnaliser son comportement. Assurez-vous que les instructions fournies sont claires et spécifiques. Les instructions peuvent être aussi simples qu'une liste d'instructions détaillées ou aussi complexes que de définir l'expérience et l'état d'esprit d'un utilisateur.

Définir la tâche à effectuer

Décrivez en détail la tâche que le modèle doit effectuer. La tâche peut être aussi simple qu'une liste d'instructions détaillées ou aussi complexe que cartographier l'expérience et l'état d'esprit d'un utilisateur. La requête suivante demande au modèle de résumer un bloc de texte :

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.
  

Spécifiez les contraintes.

Spécifiez les contraintes liées à la lecture de l'invite ou à la génération d'une réponse. Vous pouvez indiquer au modèle ce qu'il doit faire et ce qu'il ne doit pas faire. Dans l'exemple précédent, la synthèse est plus courte que le texte d'origine, mais vous souhaitez peut-être que le résumé soit plus court. Dans ce cas, vous pouvez spécifier une contrainte dans la requête concernant la durée du résumé :

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.
    

Définir le format de la réponse

Vous pouvez également fournir des instructions qui spécifient le format de la réponse. Par exemple, vous pouvez demander que la réponse soit mise en forme sous forme de tableau, de liste à puces, d'argumentaire éclair, de mots clés, de phrase ou de paragraphe. Le message système suivant indique au modèle d'être plus conversationnel dans sa réponse:

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

Résumé

  • Fournissez des instructions au modèle sur la manière de procéder.
  • Soyez clair et précis.
  • Spécifiez les contraintes ou les exigences de mise en forme du résultat.

Inclure des exemples few-shot

Vous pouvez inclure des exemples dans la requête afin de montrer au modèle à quoi ressemble une réponse correcte. Le modèle tente d'identifier des schémas et des relations à partir des exemples, et les applique lors de la génération d'une réponse. Les requêtes contenant quelques exemples sont appelées des requêtes few-shot, tandis que les requêtes qui ne fournissent aucun exemple sont appelées requêtes zero-shot. Les requêtes few-shot sont souvent utilisées pour réguler la mise en forme, la formulation, le champ d'application ou la mise en forme générale des réponses du modèle. Utilisez des exemples spécifiques et variés pour aider le modèle à affiner sa cible et à générer des résultats plus précis.

Nous vous recommandons de toujours inclure des exemples few-shot dans vos invites. Les requêtes sans exemples à quelques exemples sont susceptibles d'être moins efficaces. En fait, vous pouvez supprimer des instructions de votre requête si vos exemples sont suffisamment clairs pour montrer la tâche à accomplir.

Requêtes zero-shot et requêtes few-shot

La requête zero-shot suivante demande au modèle de choisir la meilleure explication.

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.
  

Si votre cas d'utilisation nécessite que le modèle produise des réponses concises, vous pouvez inclure dans la requête des exemples qui privilégient les réponses concises.

La requête suivante fournit deux exemples qui indiquent une préférence pour les explications plus courtes. Dans la réponse, vous pouvez constater que les exemples ont poussé le modèle à choisir l'explication la plus courte (Explication2), par opposition à la plus longue (Explication1).

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
  

Trouver le nombre optimal d'exemples

Vous pouvez tester le nombre d'exemples à fournir dans la requête pour obtenir les résultats les plus satisfaisants. Des modèles tels que Gemini peuvent souvent détecter des schémas avec seulement quelques exemples, mais vous devrez peut-être tester le nombre d'exemples vous permettant d'obtenir les résultats souhaités. Cependant, si vous incluez trop d'exemples, le modèle peut manifester un surapprentissage qui biaise les réponses obtenues.

Utiliser des exemples pour illustrer des schémas positifs plutôt que négatifs

L'utilisation d'exemples pour montrer au modèle un schéma à respecter est plus efficace que l'utilisation d'exemples pour montrer au modèle un schéma à éviter.

Schéma négatif :

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

Schéma positif :

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

Utiliser une mise en forme cohérente pour tous les exemples

Assurez-vous que la structure et la mise en forme des exemples à quelques exemples sont les mêmes pour éviter les réponses avec des formats indésirables. L'un des principaux objectifs de l'ajout d'exemples few-shot dans les requêtes est de montrer au modèle le format de réponse. Il est donc essentiel de garantir un format cohérent pour tous les exemples, en particulier en prêtant attention aux balises XML, aux espaces blancs, aux lignes de nouvelle ligne et aux séparateurs d'exemples.

Résumé

  • L'inclusion d'exemples de réponse dans la requête aide le modèle à apprendre comment répondre.
  • Fournissez au modèle des exemples de schémas à suivre plutôt que des exemples de schémas à éviter.
  • Testez le nombre de requêtes à inclure. Selon le modèle, un nombre insuffisant d'exemples peut ne pas suffir à changer le comportement du modèle. Un trop grand nombre d'exemples peut entraîner un surapprentissage du modèle.
  • Utiliser une mise en forme cohérente pour tous les exemples

Ajouter des informations contextuelles

Vous pouvez inclure dans la requête des instructions et des informations dont le modèle a besoin pour résoudre un problème au lieu de supposer que le modèle dispose de toutes les informations requises. Ces informations contextuelles aident le modèle à comprendre les contraintes et les détails de ce que vous lui demandez de faire.

L'exemple suivant demande au modèle de fournir des conseils de dépannage pour un routeur :

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 réponse est semblable aux informations de dépannage génériques qui ne sont pas spécifiques au routeur ou à l'état des témoins LED.

Pour personnaliser la réponse en fonction du routeur spécifique, vous pouvez ajouter le guide de dépannage du routeur à la requête en tant que contexte auquel le modèle doit faire référence dans sa réponse.

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.
  

Résumé

  • Incluez dans la requête les informations (contexte) que vous souhaitez que le modèle utilise lors de la génération d'une réponse.
  • Indiquez au modèle comment utiliser les informations contextuelles.

Ajouter des préfixes

Un préfixe est un mot ou une expression que vous ajoutez au contenu de la requête et qui peut servir plusieurs objectifs, en fonction de l'endroit où vous ajoutez le préfixe :

  • Préfixe d'entrée : l'ajout d'un préfixe à l'entrée signale au modèle les parties sémantiquement significatives de l'entrée. Par exemple, les préfixes "Anglais :" et "Français :" permettent de différencier deux langues différentes.
  • Préfixe de sortie : même si la sortie est générée par le modèle, vous pouvez ajouter un préfixe de sortie dans la requête. Le préfixe de sortie fournit aux modèles des informations sur les réponses attendues. Par exemple, le préfixe de sortie "JSON :" indique au modèle que la sortie doit être au format JSON.
  • Préfixe d'exemple : dans les requêtes few-shot, l'ajout de préfixes aux exemples fournit des libellés que le modèle peut utiliser lors de la génération du contenu de sortie afin d'en faciliter l'analyse.

Dans l'exemple suivant, "Texte :" est le préfixe d'entrée et "La réponse est :" est le préfixe de sortie.

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
  

Laisser le modèle terminer une entrée partielle

Les modèles de langage génératif fonctionnent comme un outil de saisie semi-automatique avancé. Lorsque vous fournissez un contenu partiel, le modèle peut fournir le reste du contenu ou ce qu'il considère comme une suite de ce contenu en tant que réponse. Ainsi, si vous incluez des exemples ou du contexte, le modèle peut prendre en compte ces exemples ou éléments de contexte.

L'exemple suivant fournit une requête avec une instruction et une entrée d'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
}
```
  

Bien que le modèle ait respecté l'invite, il peut parfois être difficile d'écrire les instructions en langage naturel et cela laisse une marge d'interprétation au modèle. Par exemple, le menu d'un restaurant peut contenir de nombreux éléments. Pour réduire la taille de la réponse JSON, vous souhaitez probablement omettre les articles qui n'ont pas été commandés. Dans ce cas, vous pouvez fournir un exemple et un préfixe de réponse, puis laisser le modèle le terminer :

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
}
```
  

Notez que le "cheeseburger" a été exclu du résultat, car il ne faisait pas partie de la commande.

Demander au modèle de mettre en forme sa réponse

La stratégie consistant à terminer ou compléter une entrée peut également vous aider à formater la réponse. L'exemple suivant demande au modèle de créer un plan de dissertation :

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

La requête ne mentionnait pas de format pour le plan et le modèle a choisi un format pour vous. Pour que le modèle renvoie un plan dans un format spécifique, vous pouvez ajouter du texte représentant le début du plan et laisser le modèle le terminer en fonction du schéma que vous avez initié.

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

Résumé

  • Si vous fournissez une entrée partielle au modèle, celui-ci complète cette entrée en fonction des exemples ou du contexte disponibles dans la requête.
  • Il est parfois plus facile de faire compléter une entrée par le modèle que de décrire la tâche en langage naturel.
  • L'ajout d'une réponse partielle à une requête peut aider le modèle à suivre le schéma ou le format souhaité.

Décomposer les requêtes en composants simples

Pour les cas d'utilisation qui nécessitent des requêtes complexes, vous pouvez aider le modèle à gérer cette complexité en décomposant les éléments en composants plus simples.

Instructions de décomposition

Au lieu d'avoir plusieurs instructions dans une même requête, créez une requête par instruction. Vous pouvez choisir l'invite à traiter en fonction de l'entrée de l'utilisateur.

Requêtes de chaîne

Pour les tâches complexes impliquant plusieurs étapes séquentielles, faites de chaque étape une requête et associez les requêtes dans une séquence. Dans cette chaîne de requêtes séquentielle, la sortie d'une requête de la séquence devient l'entrée de la requête suivante. Le résultat de la dernière requête de la séquence est le résultat final.

Agréger les réponses

L'agrégation consiste à effectuer différentes tâches en parallèle sur différentes parties des données et à agréger les résultats pour obtenir le résultat final. Par exemple, vous pouvez demander au modèle d'effectuer une opération sur la première partie des données, d'effectuer une autre opération sur le reste des données et d'agréger les résultats.

Résumé

  • Décomposez les instructions complexes en une invite pour chaque instruction et décidez de l'invite à appliquer en fonction de la saisie de l'utilisateur.
  • Divisez plusieurs étapes séquentielles en requêtes distinctes et associez-les de sorte que la sortie de la requête précédente devienne l'entrée de la requête suivante.
  • Décomposez les tâches parallèles et agrégez les réponses pour produire le résultat final.

Tester différentes valeurs de paramètre

Chaque appel que vous envoyez à un modèle inclut des valeurs de paramètres qui contrôlent la manière dont le modèle génère sa réponse. Le modèle peut générer différents résultats pour différentes valeurs de paramètre. Testez différentes valeurs de paramètre pour obtenir les meilleures valeurs pour la tâche. Les paramètres disponibles pour les différents modèles peuvent différer. Les paramètres les plus courants sont les suivants :

  • Nombre maximal de jetons de sortie
  • Température
  • Top-K
  • Top-P

Nombre maximal de jetons de sortie

Nombre maximal de jetons pouvant être générés dans la réponse. Un jeton correspond environ à quatre caractères. 100 jetons correspondent à environ 20 mots.

Spécifiez une valeur inférieure pour les réponses plus courtes et une valeur plus élevée pour les réponses plus longues.

Température

La température est utilisée pour l'échantillonnage pendant la génération des réponses, qui se produit lorsque topP et topK sont appliqués. La température permet de contrôler le degré de hasard dans la sélection des jetons. Les températures inférieures sont idéales pour les requêtes qui nécessitent une réponse plus déterministe et moins ouverte ou créative, tandis que des températures plus élevées peuvent conduire à des résultats plus diversifiés ou créatifs. La température de 0 est déterministe, ce qui signifie que la réponse de probabilité la plus élevée est toujours sélectionnée.

Dans la plupart des cas, essayez de démarrer avec une température de 0.2. Si le modèle renvoie une réponse trop générique ou trop courte, ou s'il renvoie une réponse de remplacement, essayez d'augmenter la température.

Top K

Top K modifie la façon dont le modèle sélectionne les jetons pour la sortie. Une valeur top-K de 1 signifie que le prochain jeton sélectionné est le plus probable parmi tous les jetons du vocabulaire du modèle (également appelé décodage glouton), tandis qu'une valeur top-K de 3 signifie que le jeton suivant est sélectionné parmi les trois jetons les plus probables en utilisant la température.

Pour chaque étape de sélection du jeton, les jetons top-K avec les probabilités les plus élevées sont échantillonnés. Les jetons sont ensuite filtrés en fonction du top-P avec le jeton final sélectionné à l'aide de l'échantillonnage de température.

Spécifiez une valeur inférieure pour les réponses moins aléatoires et une valeur plus élevée pour les réponses plus aléatoires. La valeur par défaut de top-K est 40.

Top P

Top P modifie la façon dont le modèle sélectionne les jetons pour la sortie. Les jetons sont sélectionnés de la valeur la plus élevée (voir top-K) à la moins probable jusqu'à ce que la somme de leurs probabilités soit égale à la valeur top-P. Par exemple, si les jetons A, B et C ont une probabilité de 0,3, 0,2 et 0,1 et que la valeur de top-P est supérieure à 0.5, le modèle sélectionne A ou B comme jeton suivant en utilisant la température et exclut C comme candidat.

Spécifiez une valeur inférieure pour les réponses moins aléatoires et une valeur plus élevée pour les réponses plus aléatoires. La valeur par défaut de top-P est 0.95.

Stratégies d'itération des invites

La conception d'une requête est un processus itératif qui nécessite souvent plusieurs essais avant d'obtenir la réponse souhaitée de manière consistante. Cette section fournit des conseils sur les mesures que vous pouvez appliquer lors de l'itération de vos requêtes.

Utiliser une formulation différente

L'utilisation de formulations ou de mots différents dans vos requêtes permet d'obtenir des résultats différents avec un même modèle, même si les requêtes ont le même sens. Si vous n'obtenez pas les résultats attendus à partir de la requête, essayez de reformuler.

Version 1:
How do I bake a pie?

Version 2:
Suggest a recipe for a pie.

Version 3:
What's a good pie recipe?
  

Basculer sur une tâche similaire

Si vous ne parvenez pas à ce que le modèle suive vos instructions pour une tâche, essayez de lui donner des instructions pour une tâche analogue qui permet d'obtenir le même résultat.

Cette requête demande au modèle de catégoriser un livre en utilisant des catégories prédéfinies.

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 réponse est correcte, mais le modèle n'est pas resté dans les limites des options. Vous souhaitez également que le modèle réponde avec l'une des options plutôt qu'avec une phrase complète. Dans ce cas, vous pouvez reformuler les instructions sous la forme d'une question à choix multiples et demander au modèle de choisir une option.

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

Modifier l'ordre du contenu dans la requête

L'ordre du contenu dans la requête peut parfois affecter la réponse. Essayez de modifier l'ordre du contenu et vérifiez comment cela affecte la réponse.

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

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

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

Réponses de remplacement

Une réponse de remplacement est une réponse renvoyée par le modèle lorsque la requête ou la réponse déclenche un filtre de sécurité. Voici un exemple de réponse de remplacement : "Je ne peux pas vous aider, car je ne suis qu'un modèle de langage".

Si le modèle renvoie une réponse de remplacement, essayez d'augmenter la température.

Ce qu'il faut éviter

  • Évitez de compter sur les modèles pour générer des informations factuelles.
  • Utilisez-les avec soin pour résoudre les problèmes mathématiques et logiques.

Étapes suivantes