Générer du texte à l'aide de l'API Gemini

L'API Gemini peut générer une sortie textuelle lorsqu'elle reçoit du texte, des images, des vidéos et des contenus audio en entrée.

Ce guide vous explique comment générer du texte à l'aide des méthodes generateContent et streamGenerateContent. Pour en savoir plus sur l'utilisation des fonctionnalités de vision et audio de Gemini, consultez les guides Vision et Audio.

Avant de commencer : configurez votre projet et votre clé API

Avant d'appeler l'API Gemini, vous devez configurer votre projet et votre clé API.

Générer du texte à partir d'une entrée textuelle

Le moyen le plus simple de générer du texte à l'aide de l'API Gemini consiste à fournir au modèle une seule entrée textuelle, comme illustré dans cet exemple :

model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("Write a story about a magic backpack.")
print(response.text)

Dans ce cas, la requête ("Écrire une histoire sur un sac à dos magique") n'inclut pas d'exemples de sortie, d'instructions système ni d'informations de mise en forme. Il s'agit d'une approche sans objectif. Dans certains cas d'utilisation, une requête one-shot ou few-shot peut produire un résultat mieux adapté aux attentes des utilisateurs. Dans certains cas, vous pouvez également fournir des instructions système pour aider le modèle à comprendre la tâche ou à suivre des consignes spécifiques.

Générer du texte à partir d'une entrée texte-image

L'API Gemini accepte les entrées multimodales qui combinent du texte et des fichiers multimédias. L'exemple suivant montre comment générer du texte à partir d'une entrée texte et image :

import PIL.Image

model = genai.GenerativeModel("gemini-1.5-flash")
organ = PIL.Image.open(media / "organ.jpg")
response = model.generate_content(["Tell me about this instrument", organ])
print(response.text)

Comme pour les requêtes textuelles, les requêtes multimodales peuvent impliquer différentes approches et améliorations. En fonction du résultat de cet exemple, vous pouvez ajouter des étapes à l'invite ou être plus spécifique dans vos instructions. Pour en savoir plus, consultez la section Stratégies d'invite de fichier.

Générer un flux de texte

Par défaut, le modèle renvoie une réponse une fois le processus de génération de texte terminé. Vous pouvez obtenir des interactions plus rapides en n'attendant pas l'intégralité du résultat et en utilisant plutôt le traitement par flux pour gérer les résultats partiels.

L'exemple suivant montre comment implémenter le streaming à l'aide de la méthode streamGenerateContent pour générer du texte à partir d'une invite de saisie en texte brut.

model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("Write a story about a magic backpack.", stream=True)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Créer un chat interactif

Vous pouvez utiliser l'API Gemini pour créer des expériences de chat interactives pour vos utilisateurs. L'utilisation de la fonctionnalité de chat de l'API vous permet de collecter plusieurs séries de questions et de réponses, ce qui permet aux utilisateurs d'obtenir des réponses par étapes ou de l'aide pour résoudre des problèmes en plusieurs parties. Cette fonctionnalité est idéale pour les applications qui nécessitent une communication continue, telles que les chatbots, les tuteurs interactifs ou les assistants du service client.

L'exemple de code suivant illustre une implémentation de chat de base:

model = genai.GenerativeModel("gemini-1.5-flash")
chat = model.start_chat(
    history=[
        {"role": "user", "parts": "Hello"},
        {"role": "model", "parts": "Great to meet you. What would you like to know?"},
    ]
)
response = chat.send_message("I have 2 dogs in my house.")
print(response.text)
response = chat.send_message("How many paws are in my house?")
print(response.text)

Activer le streaming du chat

Vous pouvez également utiliser le streaming avec le chat, comme illustré dans l'exemple suivant:

model = genai.GenerativeModel("gemini-1.5-flash")
chat = model.start_chat(
    history=[
        {"role": "user", "parts": "Hello"},
        {"role": "model", "parts": "Great to meet you. What would you like to know?"},
    ]
)
response = chat.send_message("I have 2 dogs in my house.", stream=True)
for chunk in response:
    print(chunk.text)
    print("_" * 80)
response = chat.send_message("How many paws are in my house?", stream=True)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

print(chat.history)

Configurer la génération de texte

Chaque invite que vous envoyez au modèle inclut des paramètres qui contrôlent la manière dont le modèle génère les réponses. Vous pouvez utiliser GenerationConfig pour configurer ces paramètres. Si vous ne configurez pas les paramètres, le modèle utilise des options par défaut, qui peuvent varier selon le modèle.

L'exemple suivant montre comment configurer plusieurs des options disponibles.

model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content(
    "Tell me a story about a magic backpack.",
    generation_config=genai.types.GenerationConfig(
        # Only one candidate for now.
        candidate_count=1,
        stop_sequences=["x"],
        max_output_tokens=20,
        temperature=1.0,
    ),
)

print(response.text)

candidateCount spécifie le nombre de réponses générées à renvoyer. Actuellement, cette valeur ne peut être définie que sur 1. Si cette valeur n'est pas définie, elle est définie par défaut sur 1.

stopSequences spécifie l'ensemble de séquences de caractères (jusqu'à 5) qui arrêteront la génération de résultats. Si spécifié, l'API s'arrête à la première apparition d'un stop_sequence. La séquence d'arrêt ne sera pas incluse dans la réponse.

maxOutputTokens définit le nombre maximal de jetons à inclure dans une candidate.

temperature contrôle le caractère aléatoire de la sortie. Utilisez des valeurs plus élevées pour des réponses plus créatives et des valeurs inférieures pour des réponses plus déterministes. Les valeurs peuvent être comprises entre [0,0 et 2,0].

Vous pouvez également configurer des appels individuels à generateContent:

response = model.generate_content(
    'Write a story about a magic backpack.',
    generation_config = genai.GenerationConfig(
        max_output_tokens=1000,
        temperature=0.1,
    )
)

Toutes les valeurs définies sur l'appel individuel remplacent les valeurs du constructeur du modèle.

Étape suivante

Maintenant que vous avez découvert les principes de base de l'API Gemini, vous pouvez essayer les éléments suivants:

  • Analyse visuelle: découvrez comment utiliser l'analyse visuelle native de Gemini pour traiter des images et des vidéos.
  • Instructions système : les instructions système vous permettent d'orienter le comportement du modèle en fonction de vos besoins et de vos cas d'utilisation spécifiques.
  • Compréhension audio: découvrez comment utiliser la compréhension audio native de Gemini pour traiter des fichiers audio.