À propos des modèles génératifs

Les modèles d'intelligence artificielle (IA) générative, comme la famille de modèles Gemini, sont capables de créer du contenu à partir de différents types d'entrées de données, y compris du texte, des images et de l'audio. À leur niveau le plus basique, ces modèles fonctionnent comme des applications de saisie semi-automatique sophistiquées. À partir du texte d'entrée ("Vous pouvez faire boire un cheval à l'eau"), un modèle génératif peut prédire que le texte de sortie susceptible de suivre, d'un point de vue statistique, est 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 écrits créatifs tels que des poèmes, des nouvelles, des métaphores et des articles de blog
  • Convertir des données structurées en texte au format libre
  • Extraire et résumer des informations à partir de texte libre
  • Générer du code
  • Traduire du texte d'une langue à une autre

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

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). La famille de modèles Gemini ne peut pas traiter que des données textuelles. Bien qu'il puisse exécuter les fonctions d'un LLM, on parle plus précisément de modèles génératifs.

Exemples d'applications

Les exemples suivants illustrent des entrées de texte typiques d'un modèle génératif et leurs sorties.

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 faire en sorte que des modèles génératifs produisent toutes sortes de comportements utiles comme celui-ci, simplement en créant le bon texte d'entrée, également appelé requête. L'art et la science d'identifier la formulation appropriée afin d'amener les modèles génératifs à effectuer les opérations souhaitées sont appelés conception de requête (également appelée "ingénierie de requête" ou simplement "requête").

Introduction à la conception de requêtes

La section précédente présentait quelques exemples d'invites contenant une instruction, comme "Écris-moi un poème". Ce type d'instruction peut fonctionner correctement pour certains types de tâches. Toutefois, pour d'autres applications, une autre technique de requête appelée requête few-shot peut mieux fonctionner. Les requêtes à quelques exemples exploitent le fait que les grands modèles de langage sont incroyablement efficaces pour reconnaître et reproduire les tendances 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 à terminer. Par exemple, imaginons que vous souhaitiez créer une application qui prend en entrée le nom d'un pays et renvoie sa capitale. Voici une requête de texte conçue pour cela:

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, il complétera le modèle et renverra quelque chose comme ceci:

     Berlin
Turkey : Ankara
Greece : Athens

Cette 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 dans votre requête manuscrite), mais aussi une liste complète de paires de pays et de majuscules 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 saisi ("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 concepteur d'applications, vous voudrez probablement supprimer ces exemples superflus. De plus, vous voudrez probablement paramétrer l'entrée afin 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 invite à quelques reprises pour générer les capitales des pays.

Vous pouvez accomplir un grand nombre de tâches en suivant ce modèle d'invite à quelques clichés. Voici une invite à quelques clichés 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 aussi utiliser cette invite de dictionnaire inversé. Selon une définition, 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 modèle exact de ces invites à quelques clichés varie légèrement. En plus de contenir des exemples, fournir des instructions dans vos requêtes est une stratégie supplémentaire à prendre en compte lorsque vous rédigez vos propres requêtes, car cela permet de communiquer votre intention au modèle.

Incitation par rapport au développement logiciel traditionnel

Contrairement aux logiciels traditionnels conçus selon des spécifications soigneusement rédigées, le comportement des modèles génératifs est largement opaque, même pour les formateurs de modèles. Par conséquent, vous ne pouvez souvent pas prédire à l'avance les types de structures d'invite qui fonctionneront le mieux pour un modèle donné. 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, il arrive parfois que le modèle change suffisamment pour modifier par inadvertance les structures d'invites qui fonctionnent le mieux. Qu'est-ce que cela signifie pour vous ? Faites des tests ! Essayez différents formats d'invites.

Paramètres du modèle

Chaque requête que vous envoyez au modèle inclut des valeurs de paramètre 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. 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. Les températures inférieures 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 conduire à des résultats plus diversifiés ou créatifs. Une température de 0 est déterministe, ce qui signifie que la réponse dont la probabilité est la plus élevée 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 jetons les plus probables à l'aide de la température. Pour chaque étape de sélection des jetons, les jetons topK ayant les probabilités les plus élevées sont échantillonnés. Les jetons sont ensuite filtrés en fonction de topP, le dernier jeton étant sélectionné par é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 du plus probable au 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 de 0,5, le modèle sélectionne A ou B comme jeton suivant à l'aide de la température et exclut le jeton 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 qui pourraient apparaître dans le contenu généré.

Types de requêtes

En fonction du 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 à reproduire par le modèle. Les requêtes zéro-shot montrent essentiellement la capacité du modèle à répondre à la requête sans exemples ni informations supplémentaires. Cela signifie que le modèle doit s'appuyer sur ses connaissances préexistantes pour générer une réponse plausible.

Voici quelques modèles d'invites sans entraînement couramment utilisés:

  • Instructions
<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-content-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 continuer le texte sans aucune instruction. Par exemple, voici une requête sans échantillon où le modèle est destiné à 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 sans entraînement pour générer des formats de texte créatifs, tels que des poèmes, du code, des scripts, des œuvres musicales, des e-mails ou des lettres.

Requêtes one-shot

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

Par exemple, vous pouvez générer des accords alimentaires comme:

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

Requêtes few-shot

Ces requêtes fournissent au modèle plusieurs exemples à reproduire. Utilisez des invites à quelques reprises 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"}

Fonctionnement des modèles génératifs

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

La réponse courte est oui aux deux questions. Lorsque vous invitez 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 la requête d'entrée et génère une distribution de probabilité sur les jetons (mots) susceptibles de suivre. Par exemple, si vous exécutez une requête avec le texte d'entrée "Le chien a sauté par-dessus ...", le modèle génératif produira 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 produira cette même distribution chaque fois qu'il recevra le même texte d'invite.

À la deuxième étape, le modèle génératif convertit ces distributions en réponses textuelles réelles à l'aide de l'une des 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 également choisir de générer une réponse par échantillonnage aléatoire sur la distribution renvoyée par le modèle. Ce processus est stochastique (aléatoire). Contrôlez le degré de hasard autorisé dans ce processus de décodage en réglant 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é de hasard élevé dans les jetons sélectionnés par le modèle, ce qui entraîne des réponses du modèle plus inattendues et surprenantes.

Documentation complémentaire

  • Maintenant que vous avez une meilleure compréhension des requêtes et des modèles génératifs, essayez d'écrire vos propres requêtes à l'aide de Google AI Studio.
  • Consultez les consignes concernant les requêtes pour en savoir plus sur les bonnes pratiques à suivre pour créer des requêtes.