À propos des modèles génératifs

Les modèles d'intelligence artificielle (IA) générative tels que la famille de modèles Gemini sont capables de créer du contenu à partir de différents types de données d'entrée, y compris du texte, des images et de l'audio. À leur niveau le plus élémentaire, ces modèles fonctionnent comme des applications de saisie semi-automatique sophistiquées. À partir d'un texte d'entrée ("Vous pouvez faire boire un cheval"), un modèle génératif peut prédire que le texte de sortie qui est statistiquement susceptible de suivre ("mais vous ne pouvez pas le faire boire"), en fonction des modèles appris à partir de ses données d'entraînement. Vous pouvez utiliser cette propriété de base des modèles génératifs pour diverses applications:

  • générer des textes créatifs tels que des poésies, des nouvelles, des métaphores et des articles de blog.
  • Convertir des données structurées en texte libre
  • Extraire et résumer les informations d'un texte au format libre
  • Générer du code
  • Traduire d'une langue à une autre

L'utilisation de modèles génératifs pour créer ces caractéristiques ne nécessite aucune expertise en machine learning (ML). Vous n'avez pas besoin de collecter un ensemble de données volumineux ni d'entraîner un modèle. Pour commencer votre premier prototype, il vous suffit de décrire en quelques phrases ce que le modèle doit faire.

Les modèles génératifs qui ne gèrent que l'entrée et la sortie de texte sont également appelés grands modèles de langage (LLM). Les modèles Gemini peuvent traiter plus que des données textuelles et, bien qu'ils puissent exécuter les fonctions d'un LLM, ils sont plus connus sous le nom de modèles génératifs.

Exemples d'applications

Les exemples suivants illustrent des entrées de texte typiques dans un modèle génératif et des sorties de celui-ci.

Générer un poème

Entrée utilisateur: Write me a four-line poem about puppies and Android phones. Make sure it rhymes.

Sortie du modèle:

Puppies are cute,
Android phones are neat,
They both bring joy,
And make life complete.

Générer une liste

Entrée utilisateur: Generate a bulleted list of items I need to pack for a three-day camping trip.

Sortie du modèle:

*   Tent
*   Sleeping bag
*   Sleeping pad
*   Camp stove
*   Pots and pans
*   Utensils
*   Food
*   Water
*   First-aid kit
*   Sunscreen
*   Insect repellent
*   ...

Vous pouvez obtenir des modèles génératifs pour produire toutes sortes de comportements utiles comme celui-ci, simplement en créant le texte d'entrée approprié, également appelé requête. L'art et la science qui consistent à élaborer la formulation appropriée pour que les modèles génératifs accomplissent ce que vous souhaitez s'appellent la conception de requête (également appelée "ingénierie de la requête" ou simplement "invite").

Bases de la conception de requête

La section précédente a montré quelques exemples de requêtes contenant une instruction, comme « Écris-moi un poème ». Ce type d'instruction peut bien fonctionner pour certains types de tâches. Toutefois, pour d'autres applications, une autre technique de requête appelée requête few-shot peut fonctionner mieux. Les requêtes few-shot exploitent le fait que les grands modèles de langage sont incroyablement efficaces pour reconnaître et répliquer des modèles dans les données textuelles. L'idée est d'envoyer au modèle génératif un modèle de texte qu'il apprend à réaliser. Par exemple, supposons que vous souhaitiez créer une application qui reçoit un nom de pays et génère sa capitale. Voici une requête textuelle conçue à cet effet:

Italy : Rome
France : Paris
Germany :

Dans cette invite, vous établissez un modèle: [country] : [capital]. Si vous envoyez cette requête à un grand modèle de langage, le modèle sera saisi semi-automatiquement et renverra un résultat semblable à celui-ci:

     Berlin
Turkey : Ankara
Greece : Athens

La réponse du modèle peut sembler un peu étrange. Le modèle a renvoyé non seulement la capitale de l'Allemagne (le dernier pays de votre requête manuscrite), mais aussi une liste complète de paires de pays et de capitales supplémentaires. En effet, le modèle génératif "continue le modèle". Si vous essayez simplement de créer une fonction qui indique la capitale d'un pays d'entrée ("Allemagne : Berlin"), vous ne vous souciez probablement pas du texte généré par le modèle après "Berlin". En effet, en tant que concepteurs d'applications, vous souhaiterez probablement tronquer ces exemples superflus. De plus, vous souhaiterez probablement paramétrer l'entrée pour que l'Allemagne ne soit pas une chaîne fixe, mais une variable fournie par l'utilisateur final:

Italy : Rome
France : Paris
<user input here> :

Vous venez d'écrire une requête few-shot pour générer des capitales de pays.

Vous pouvez accomplir un grand nombre de tâches en suivant ce modèle d'invite few-shot. Voici une requête few-shot avec un format légèrement différent qui convertit Python en 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:

Vous pouvez également utiliser l'invite "dictionnaire inversé". D'une définition donnée, il renvoie le mot qui correspond à cette définition:

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:

Vous avez peut-être remarqué que le schéma exact de ces requêtes few-shot varie légèrement. En plus de contenir des exemples, fournir des instructions dans vos requêtes constitue une stratégie supplémentaire à prendre en compte lorsque vous rédigez vos propres requêtes, car cela vous aide à communiquer votre intention au modèle.

Requête et développement logiciel traditionnel

Contrairement aux logiciels traditionnels conçus selon une spécification soigneusement rédigée, le comportement des modèles génératifs est largement opaque, même pour les outils d'entraînement des modèles. Par conséquent, il est souvent impossible de prédire à l'avance les types de structures de requêtes qui fonctionneront le mieux pour un modèle particulier. De plus, le comportement d'un modèle génératif est déterminé en grande partie par ses données d'entraînement. Étant donné que les modèles sont continuellement ajustés sur de nouveaux ensembles de données, le modèle change parfois suffisamment pour qu'il change par inadvertance les structures de requête qui fonctionnent le mieux. Qu’est-ce que cela signifie pour vous ? Faites des tests ! Essayez différents formats de requêtes.

Paramètres du modèle

Chaque invite que vous envoyez au modèle inclut des valeurs de paramètres qui contrôlent la manière dont le modèle génère une réponse. Le modèle peut générer différents résultats pour différentes valeurs de paramètre. Les paramètres de modèle les plus courants sont les suivants:

  1. Max output tokens (Nombre maximal de jetons de sortie) : spécifie le 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 60 à 80 mots.

  2. Température:la température contrôle le degré de hasard dans la sélection des jetons. La température est utilisée pour l'échantillonnage lors de la génération de la réponse, qui se produit lorsque topP et topK sont appliqués. Des températures plus basses sont idéales pour les requêtes qui nécessitent une réponse plus déterministe ou moins ouverte, tandis que des températures plus élevées peuvent entraîner des résultats plus diversifiés ou créatifs. Une température de 0 est déterministe, ce qui signifie que la réponse ayant la plus forte probabilité est toujours sélectionnée.

  3. topK:le paramètre topK modifie la façon dont le modèle sélectionne les jetons pour la sortie. Une valeur topK de 1 signifie que le 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 topK de 3 signifie que le jeton suivant est sélectionné parmi les trois les plus probables en fonction de la température. Pour chaque étape de sélection des jetons, les jetons topK avec les probabilités les plus élevées sont échantillonnés. Les jetons sont ensuite filtrés en fonction de topP, le jeton final étant sélectionné à l'aide de l'échantillonnage de température.

  4. topP:le paramètre topP modifie la façon dont le modèle sélectionne les jetons pour la sortie. Les jetons sont sélectionnés de la plus probable à la moins probable, jusqu'à ce que la somme de leurs probabilités soit égale à la valeur topP. Par exemple, si les jetons A, B et C ont une probabilité de 0,3, 0,2 et 0,1, et que la valeur topP est égale à 0,5, le modèle sélectionne A ou B comme jeton suivant en utilisant la température et en excluant C comme candidat. La valeur par défaut de topP est 0,95.

  5. stop_sequences:définissez une séquence d'arrêt pour indiquer au modèle d'arrêter de générer du contenu. Une séquence d'arrêt peut être n'importe quelle séquence de caractères. Évitez d'utiliser une séquence de caractères susceptibles d'apparaître dans le contenu généré.

Types de requêtes

Selon le niveau d'informations contextuelles qu'elles contiennent, les requêtes sont généralement classées en trois types.

Requêtes zero-shot

Ces requêtes ne contiennent pas d'exemples que le modèle doit répliquer. Les requêtes zero-shot montrent essentiellement la capacité du modèle à exécuter la requête sans exemples ni informations supplémentaires. Le modèle doit s'appuyer sur des connaissances pré-existantes pour générer une réponse plausible.

Voici quelques schémas de requête zero-shot couramment utilisés:

  • Contenu pédagogique
<Overall instruction>
<Content to operate on>

Par exemple :

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-contenu-instruction
<Overall instruction or context setting>
<Content to operate on>
<Final instruction>

Par exemple :

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.
  • Poursuite. Parfois, vous pouvez demander au modèle de poursuivre le texte sans aucune instruction. Par exemple, voici une requête zero-shot dans laquelle le modèle est censé poursuivre l'entrée fournie:
Once upon a time, there was a little sparrow building a nest in a farmer's
barn. This sparrow

Utilisez des requêtes zero-shot pour générer des formats de texte créatifs, tels que des poèmes, des codes, des scripts, des morceaux, des e-mails ou des lettres.

Requêtes uniques

Ces invites fournissent au modèle un seul exemple à répliquer et à poursuivre. Cela permet de générer des réponses prévisibles à partir du modèle.

Par exemple, vous pouvez générer des accords mets-vins comme:

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

Requêtes few-shot

Ces invites fournissent au modèle plusieurs exemples à répliquer. Utilisez des requêtes few-shot pour effectuer des tâches complexes, telles que la synthèse de données en fonction d'un modèle.

Voici un exemple de requête:

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

Modèles génératifs en arrière-plan

Cette section vise à répondre à la question suivante : Les réponses des modèles génératifs sont-elles aléatoires ou sont-elles déterministes ?

Pour faire court, oui aux deux. Lorsque vous demandez un modèle génératif, une réponse textuelle est générée en deux étapes. Lors de la première étape, le modèle génératif traite l'invite d'entrée et génère une distribution de probabilité parmi les jetons (mots) possibles qui sont susceptibles de suivre. Par exemple, si vous envoyez une requête avec le texte d'entrée "The dog jumped over the ... ", le modèle génératif produit un tableau des mots suivants probables:

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

Ce processus est déterministe. Un modèle génératif produit la même distribution chaque fois qu'il reçoit le même texte de requête.

Lors de la deuxième étape, le modèle génératif convertit ces distributions en réponses textuelles réelles grâce à l'une des nombreuses stratégies de décodage. Une stratégie de décodage simple peut sélectionner le jeton le plus probable à chaque étape. Ce processus serait toujours déterministe. Toutefois, vous pouvez choisir de générer une réponse par échantillonnage aléatoire sur la distribution renvoyée par le modèle. Ce processus serait stochastique (aléatoire). Contrôlez le degré de hasard autorisé dans ce processus de décodage en définissant la température. Une température de 0 signifie que seuls les jetons les plus probables sont sélectionnés et qu'il n'y a pas de hasard. À l'inverse, une température élevée injecte un degré élevé de hasard dans les jetons sélectionnés par le modèle, ce qui entraîne des réponses plus inattendues et surprenantes du modèle.

Complément d'informations

  • Maintenant que vous maîtrisez mieux les requêtes et les modèles génératifs, essayez de rédiger vos propres requêtes à l'aide de Google AI Studio.
  • Pour en savoir plus sur les bonnes pratiques en matière de création de requêtes, consultez les consignes relatives aux invites.