Générer du contenu avec l'API Gemini dans Vertex AI

Utilisez generateContent ou streamGenerateContent pour générer du contenu avec Gemini.

La famille de modèles Gemini inclut des modèles qui fonctionnent avec des requêtes multimodales. Le terme "multimodal" indique que vous pouvez utiliser plusieurs modalités (ou types d'entrée) dans une requête. Les modèles qui ne sont pas multimodaux n'acceptent que des requêtes textuelles. Les modalités peuvent inclure du texte, de l'audio, des vidéos et plus encore.

Créer un compte Google Cloud pour commencer

Pour commencer à utiliser l'API Gemini dans Vertex AI, créez un compte Google Cloud .

Après avoir créé votre compte, utilisez ce document pour examiner le corps de la requête du modèle Gemini, les paramètres du modèle, le corps de la réponse et des exemples de requêtes.

Lorsque vous êtes prêt, consultez le guide de démarrage rapide de l'API Gemini dans Vertex AI pour apprendre à envoyer une requête à l'API Gemini dans Vertex AI à l'aide d'un SDK de langage de programmation ou de l'API REST.

Modèles compatibles

Tous les modèles Gemini sont compatibles avec la génération de contenu.

Liste des paramètres

Consultez des exemples pour en savoir plus sur l'implémentation.

Corps de la requête

{
  "cachedContent": string,
  "contents": [
    {
      "role": string,
      "parts": [
        {
          // Union field data can be only one of the following:
          "text": string,
          "inlineData": {
            "mimeType": string,
            "data": string
          },
          "fileData": {
            "mimeType": string,
            "fileUri": string
          },
          // End of list of possible types for union field data.

          "videoMetadata": {
            "startOffset": {
              "seconds": integer,
              "nanos": integer
            },
            "endOffset": {
              "seconds": integer,
              "nanos": integer
            },
            "fps": double
          }
        }
      ]
    }
  ],
  "systemInstruction": {
    "role": string,
    "parts": [
      {
        "text": string
      }
    ]
  },
  "tools": [
    {
      "functionDeclarations": [
        {
          "name": string,
          "description": string,
          "parameters": {
            object (OpenAPI Object Schema)
          }
        }
      ]
    }
  ],
  "safetySettings": [
    {
      "category": enum (HarmCategory),
      "threshold": enum (HarmBlockThreshold)
    }
  ],
  "generationConfig": {
    "temperature": number,
    "topP": number,
    "topK": number,
    "candidateCount": integer,
    "maxOutputTokens": integer,
    "presencePenalty": float,
    "frequencyPenalty": float,
    "stopSequences": [
      string
    ],
    "responseMimeType": string,
    "responseSchema": schema,
    "seed": integer,
    "responseLogprobs": boolean,
    "logprobs": integer,
    "audioTimestamp": boolean
  },
  "labels": {
    string: string
  }
}

Le corps de la requête contient des données avec les paramètres suivants :

Paramètres

cachedContent

Facultatif : string

Nom du contenu mis en cache utilisé comme contexte pour réaliser la prédiction. Format : projects/{project}/locations/{location}/cachedContents/{cachedContent}

contents

Obligatoire : Content

Contenu de la conversation en cours avec le modèle.

Pour les requêtes à un seul tour, il s'agit d'une instance unique. Pour les requêtes multitours, il s'agit d'un champ répété contenant l'historique de la conversation et la dernière requête.

systemInstruction

Facultatif : Content

Disponible pour gemini-2.0-flash et gemini-2.0-flash-lite.

Instructions permettant au modèle d'améliorer ses performances. Par exemple, "Réponds de manière aussi concise que possible" ou "N'utilise pas de termes techniques dans ta réponse".

Les chaînes text sont comptabilisées dans la limite de jetons.

Le champ role de systemInstruction est ignoré et n'affecte pas les performances du modèle.

tools

Facultatif. Portion de code qui permet au système d'interagir avec des systèmes externes pour effectuer une action ou un ensemble d'actions en dehors du champ d'application et des connaissances du modèle. Consultez Appel de fonction.

toolConfig

Facultatif. Consultez Appel de fonction.

safetySettings

Facultatif : SafetySetting

Paramètres de requête permettant de bloquer le contenu non sécurisé.

Appliqué sur GenerateContentResponse.candidates.

generationConfig

Facultatif : GenerationConfig

Paramètres de configuration de génération.

labels

Facultatif : string

Métadonnées que vous pouvez ajouter à l'appel d'API sous la forme de paires clé-valeur.

contents

Type de données structurées de base comportant le contenu en plusieurs parties d'un message.

Cette classe comprend deux propriétés principales : role et parts. La propriété role indique la personne qui produit le contenu, tandis que la propriété parts contient plusieurs éléments, chacun représentant un segment de données dans un message.

Paramètres

role

string

Identité de l'entité qui crée le message. Les valeurs suivantes sont acceptées :

  • user : indique que le message est envoyé par une personne réelle. Il s'agit généralement d'un message généré par un utilisateur.
  • model : indique que le message est généré par le modèle.

La valeur model permet d'insérer des messages du modèle dans des conversations multitours.

parts

Part

Liste de parties ordonnées qui composent un seul message. Chaque partie peut avoir un type MIME IANA différent.

Pour connaître les limites concernant les entrées, comme le nombre maximal de jetons ou d'images, consultez les spécifications du modèle sur la page Modèles Google.

Pour calculer le nombre de jetons dans votre requête, consultez Obtenir le nombre de jetons.

parts

Type de données comportant du contenu multimédia qui fait partie d'un message Content en plusieurs parties.

Paramètres

text

Facultatif : string

Requête textuelle ou extrait de code.

inlineData

Facultatif : Blob

Données intégrées dans des octets bruts.

Pour gemini-2.0-flash-lite et gemini-2.0-flash, vous pouvez spécifier jusqu'à 3 000 images à l'aide de inlineData.

fileData

Facultatif : fileData

Données stockées dans un fichier.

functionCall

Facultatif : FunctionCall.

Contient une chaîne représentant le champ FunctionDeclaration.name et un objet JSON structuré contenant tous les paramètres de l'appel de fonction prédit par le modèle.

Consultez Appel de fonction.

functionResponse

Facultatif : FunctionResponse.

Résultat d'un FunctionCall contenant une chaîne qui représente le champ FunctionDeclaration.name et un objet JSON structuré contenant toute sortie de l'appel de fonction. Il sert de contexte au modèle.

Consultez Appel de fonction.

videoMetadata

Facultatif : VideoMetadata

Pour les entrées vidéo, décalage de début et de fin de la vidéo au format Duration et fréquence d'images de la vidéo . Par exemple, pour spécifier un extrait de 10 secondes commençant à 1:00 avec une fréquence d'images de 10 images par seconde, définissez les valeurs suivantes :

  • "startOffset": { "seconds": 60 }
  • "endOffset": { "seconds": 70 }
  • "fps": 10.0

Vous ne devez spécifier les métadonnées que lorsque les données vidéo sont présentées dans inlineData ou fileData.

blob

Blob de contenu. Si possible, envoyez le message sous forme de texte plutôt que d'octets bruts.

Paramètres

mimeType

string

Type de contenu du fichier spécifié dans les champs data ou fileUri. Les valeurs acceptées incluent les suivantes :

Cliquez pour développer les types MIME.

  • application/pdf
  • audio/mpeg
  • audio/mp3
  • audio/wav
  • image/png
  • image/jpeg
  • image/webp
  • text/plain
  • video/mov
  • video/mpeg
  • video/mp4
  • video/mpg
  • video/avi
  • video/wmv
  • video/mpegps
  • video/flv

Pour gemini-2.0-flash-lite et gemini-2.0-flash, la durée maximale d'un fichier audio est de 8,4 heures et la durée maximale d'un fichier vidéo (sans audio) est d'une heure. Pour en savoir plus, consultez les exigences liées au contenu audio et vidéo de Gemini.

Les fichiers texte doivent être encodés au format UTF-8. Le contenu du fichier texte est comptabilisé dans la limite de jetons.

Aucune limite ne s'applique à la résolution d'image.

data

bytes

Encodage base64 de l'image, du fichier PDF ou de la vidéo à intégrer à la requête. Lorsque vous intégrez du contenu multimédia, vous devez également spécifier le type de contenu (mimeType) des données.

Limite de taille : 20 Mo

FileData

Données d'URI ou d'URL Web.

Paramètres

mimeType

string

Type MIME IANA des données.

fileUri

string

URI ou URL du fichier à inclure dans la requête. Les valeurs acceptées incluent les suivantes :

  • URI du bucket Cloud Storage : l'objet doit être lisible publiquement ou se trouver dans le même projet Google Cloud que celui qui envoie la requête. La taille limite pour gemini-2.0-flash et gemini-2.0-flash-lite est de 2 Go.
  • URL HTTP : l'URL du fichier doit être lisible publiquement. Vous pouvez spécifier un fichier vidéo, un fichier audio et jusqu'à 10 fichiers image par requête. Les fichiers audio, les fichiers vidéo et les documents ne doivent pas dépasser 15 Mo.
  • URL de la vidéo YouTube : la vidéo YouTube doit appartenir au compte que vous avez utilisé pour vous connecter à la console Google Cloud ou être publique. Une seule URL de vidéo YouTube est acceptée par requête.

Lorsque vous spécifiez un fileURI, vous devez également indiquer le type de contenu multimédia (mimeType) du fichier. Si VPC Service Controls est activé, la spécification d'une URL de fichier multimédia pour fileURI n'est pas acceptée.

functionCall

functionCall prédit renvoyé par le modèle et qui contient une chaîne représentant le functionDeclaration.name et un objet JSON structuré contenant les paramètres et leurs valeurs.

Paramètres

name

string

Nom de la fonction à appeler.

args

Struct

Paramètres et valeurs de la fonction au format d'objet JSON.

Pour en savoir plus sur les paramètres, consultez Appel de fonction.

functionResponse

Résultat d'un FunctionCall contenant une chaîne qui représente le FunctionDeclaration.name. Contient également un objet JSON structuré avec la sortie de la fonction (et l'utilise comme contexte pour le modèle). Doit contenir le résultat d'un FunctionCall effectué en fonction de la prédiction du modèle.

Paramètres

name

string

Nom de la fonction à appeler.

response

Struct

Réponse de la fonction au format d'objet JSON.

videoMetadata

Métadonnées décrivant le contenu vidéo d'entrée.

Paramètres

startOffset

Facultatif : google.protobuf.Duration

Décalage de début de la vidéo.

endOffset

Facultatif : google.protobuf.Duration

Décalage de fin de la vidéo.

fps

Facultatif : double

Fréquence d'images de la vidéo envoyée au modèle. En l'absence de spécification, la valeur par défaut est 1.0. La valeur minimale acceptée est inférieure à 0.0. La valeur maximale est 24.0.

safetySetting

Paramètres de sécurité.

Paramètres

category

Facultatif : HarmCategory

Catégorie de sécurité pour laquelle configurer un seuil. Les valeurs acceptées incluent les suivantes :

Cliquez pour développer les catégories de sécurité.

  • HARM_CATEGORY_SEXUALLY_EXPLICIT
  • HARM_CATEGORY_HATE_SPEECH
  • HARM_CATEGORY_HARASSMENT
  • HARM_CATEGORY_DANGEROUS_CONTENT

threshold

Facultatif : HarmBlockThreshold

Seuil de blocage des réponses susceptibles d'appartenir à la catégorie de sécurité spécifiée en fonction de la probabilité.

  • OFF
  • BLOCK_NONE
  • BLOCK_LOW_AND_ABOVE
  • BLOCK_MEDIUM_AND_ABOVE
  • BLOCK_ONLY_HIGH

method

Facultatif : HarmBlockMethod

Indiquez si le seuil est utilisé pour le score de probabilité ou de gravité. Si cette valeur n'est pas spécifiée, le seuil est utilisé pour le score de probabilité.

harmCategory

Catégories de préjudice qui bloquent le contenu.

Paramètres

HARM_CATEGORY_UNSPECIFIED

La catégorie de préjudice n'est pas spécifiée.

HARM_CATEGORY_HATE_SPEECH

La catégorie de préjudice est "incitation à la haine".

HARM_CATEGORY_DANGEROUS_CONTENT

La catégorie de préjudice est "contenu dangereux".

HARM_CATEGORY_HARASSMENT

La catégorie de préjudice est "harcèlement".

HARM_CATEGORY_SEXUALLY_EXPLICIT

La catégorie de préjudice est "contenu à caractère sexuel explicite".

harmBlockThreshold

Niveaux de seuil de probabilité utilisés pour bloquer une réponse.

Paramètres

HARM_BLOCK_THRESHOLD_UNSPECIFIED

Seuil de blocage de préjudice non spécifié.

BLOCK_LOW_AND_ABOVE

Bloquer les seuils faibles et supérieurs (augmenter le nombre de blocages).

BLOCK_MEDIUM_AND_ABOVE

Bloquer les seuils moyens et supérieurs.

BLOCK_ONLY_HIGH

Bloquer uniquement les seuils élevés (réduire le nombre de blocages).

BLOCK_NONE

Ne rien bloquer.

OFF

Désactive la sécurité si toutes les catégories sont désactivées.

harmBlockMethod

Seuil de probabilité qui bloque une réponse en fonction d'une combinaison de probabilité et de gravité.

Paramètres

HARM_BLOCK_METHOD_UNSPECIFIED

La méthode de blocage de préjudice n'est pas spécifiée.

SEVERITY

La méthode de blocage de préjudice utilise à la fois des scores de probabilité et de gravité.

PROBABILITY

La méthode de blocage de préjudice utilise le score de probabilité.

generationConfig

Paramètres de configuration utilisés lors de la génération de la requête.

Paramètres

temperature

Facultatif : float

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 moins ouverte ou créative, tandis que des températures plus élevées peuvent conduire à des résultats plus diversifiés ou créatifs. Une température de 0 signifie que les jetons de probabilité les plus élevés sont toujours sélectionnés. Dans ce cas, les réponses pour une requête donnée sont principalement déterministes, mais une petite quantité de variation est toujours possible.

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.

  • Plage pour gemini-2.0-flash-lite : 0.0 - 2.0 (par défaut : 1.0)
  • Plage pour gemini-2.0-flash : 0.0 - 2.0 (par défaut : 1.0)

Pour en savoir plus, consultez Paramètres de génération de contenu.

topP

Facultatif : float

Si cette valeur est spécifiée, l'échantillonnage du noyau est utilisé.

Top-P modifie la façon dont le modèle sélectionne les jetons pour la sortie. Les jetons sont sélectionnés en partant de la probabilité la plus forte (voir top-K) à la plus basse, 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 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.

Spécifiez une valeur inférieure pour obtenir des réponses moins aléatoires et une valeur supérieure pour des réponses plus aléatoires.

  • Plage : 0.0 - 1.0
  • Valeur par défaut pour gemini-2.0-flash-lite : 0.95
  • Valeur par défaut pour gemini-2.0-flash : 0.95

candidateCount

Facultatif : int

Nombre de variantes de réponse à renvoyer. Pour chaque requête, les jetons de sortie de tous les candidats vous sont facturés, mais vous ne payez qu'une seule fois pour les jetons d'entrée.

La spécification de plusieurs candidats est une fonctionnalité en preview pour generateContent (streamGenerateContent n'est pas compatible). Les modèles suivants sont acceptés :

  • gemini-2.0-flash-lite : 1-8, par défaut : 1
  • gemini-2.0-flash : 1-8, par défaut : 1

maxOutputTokens

Facultatif : int

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.

Spécifiez une valeur inférieure pour obtenir des réponses plus courtes et une valeur supérieure pour des réponses potentiellement plus longues.

Pour en savoir plus, consultez Paramètres de génération de contenu.

stopSequences

Facultatif : List[string]

Spécifie une liste de chaînes qui indiquent au modèle d'arrêter de générer du texte si l'une des chaînes est détectée dans la réponse. Si une chaîne apparaît plusieurs fois dans la réponse, celle-ci est tronquée au niveau de la première occurrence. Les chaînes sont sensibles à la casse.

Par exemple, si la réponse suivante est renvoyée lorsque stopSequences n'est pas spécifié :

public static string reverse(string myString)

La réponse renvoyée avec stopSequences défini sur ["Str", "reverse"] est alors la suivante :

public static string

La liste ne peut pas contenir plus de cinq éléments.

Pour en savoir plus, consultez Paramètres de génération de contenu.

presencePenalty

Facultatif : float

Pénalités positives.

Les valeurs positives pénalisent les jetons qui apparaissent déjà dans le texte généré, ce qui augmente la probabilité de générer un contenu plus diversifié.

La valeur maximale de presencePenalty est inférieure à 2.0. Sa valeur minimale est -2.0.

frequencyPenalty

Facultatif : float.

Les valeurs positives pénalisent les jetons qui apparaissent de manière répétée dans le texte généré, ce qui réduit la probabilité de répétition du contenu.

La valeur maximale de frequencyPenalty est inférieure à 2.0. Sa valeur minimale est -2.0.

responseMimeType

Facultatif : string (enum)

Type MIME de la réponse de sortie du texte candidat généré.

Les types MIME suivants sont acceptés :

  • application/json : réponse JSON dans les candidats.
  • text/plain (par défaut) : sortie en texte brut.
  • text/x.enum : pour les tâches de classification, affiche une valeur d'énumération telle que définie dans le schéma de réponse.

Spécifiez le type de réponse approprié pour éviter les comportements inattendus. Par exemple, si vous avez besoin d'une réponse au format JSON, spécifiez application/json et non text/plain.

text/plain n'est pas compatible avec responseSchema.

responseSchema

Facultatif : schema

Schéma que le texte candidat généré doit suivre. Pour en savoir plus, consultez Contrôler la sortie générée.

Pour utiliser ce paramètre, vous devez spécifier un type MIME compatible autre que text/plain pour le paramètre responseMimeType.

seed

Facultatif : int

Lorsque la graine est fixée à une valeur spécifique, le modèle s'efforce de fournir la même réponse pour les requêtes répétées. La sortie déterministe n'est pas garantie. De plus, la modification du modèle ou des paramètres, comme la température, peut entraîner des variations dans la réponse, même si vous utilisez la même valeur de graine. Par défaut, une valeur de graine aléatoire est utilisée.

responseLogprobs

Facultatif : boolean

Si la valeur est "true", renvoie les probabilités logarithmiques des jetons choisis par le modèle à chaque étape. Par défaut, ce paramètre est défini sur false.

logprobs

Facultatif : int

Renvoie les probabilités logarithmiques des jetons de meilleurs candidats à chaque étape de génération. Il est possible que le jeton choisi par le modèle ne soit pas le jeton du meilleur candidat à chaque étape. Spécifiez le nombre de candidats à renvoyer à l'aide d'une valeur entière comprise entre 1 et 20.

Vous devez activer responseLogprobs pour utiliser ce paramètre.

audioTimestamp

Facultatif : boolean

Disponible pour les modèles suivants :

  • Gemini 2.0 Flash-Lite
  • Gemini 2.0 Flash

Active la compréhension des codes temporels pour les fichiers contenant uniquement des données audio.

Il s'agit d'une fonctionnalité en preview.

Corps de la réponse

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": string
          }
        ]
      },
      "finishReason": enum (FinishReason),
      "safetyRatings": [
        {
          "category": enum (HarmCategory),
          "probability": enum (HarmProbability),
          "blocked": boolean
        }
      ],
      "citationMetadata": {
        "citations": [
          {
            "startIndex": integer,
            "endIndex": integer,
            "uri": string,
            "title": string,
            "license": string,
            "publicationDate": {
              "year": integer,
              "month": integer,
              "day": integer
            }
          }
        ]
      },
      "avgLogprobs": double,
      "logprobsResult": {
        "topCandidates": [
          {
            "candidates": [
              {
                "token": string,
                "logProbability": float
              }
            ]
          }
        ],
        "chosenCandidates": [
          {
            "token": string,
            "logProbability": float
          }
        ]
      }
    }
  ],
  "usageMetadata": {
    "promptTokenCount": integer,
    "candidatesTokenCount": integer,
    "totalTokenCount": integer
  },
  "modelVersion": string
}
Élément de réponse Description
modelVersion Modèle et version utilisés pour la génération. Exemple : gemini-2.0-flash-lite-001.
text Texte généré.
finishReason Raison pour laquelle le modèle a cessé de générer des jetons. Si ce champ est vide, le modèle n'a pas cessé de générer les jetons. Étant donné que la réponse utilise la requête pour le contexte, il n'est pas possible de modifier le comportement par lequel le modèle cesse de générer des jetons.
  • FINISH_REASON_STOP : point d'arrêt naturel du modèle ou séquence d'arrêt fournie.
  • FINISH_REASON_MAX_TOKENS : le nombre maximal de jetons spécifié dans la requête a été atteint.
  • FINISH_REASON_SAFETY : la génération des jetons a été arrêtée, car la réponse a été signalée pour des raisons de sécurité. Notez que Candidate.content est vide si les filtres de contenu bloquent la sortie.
  • FINISH_REASON_RECITATION : la génération des jetons a été arrêtée, car la réponse a été signalée comme présentant des citations non autorisées.
  • FINISH_REASON_BLOCKLIST : la génération des jetons a été arrêtée, car la réponse inclut des termes bloqués.
  • FINISH_REASON_PROHIBITED_CONTENT : la génération des jetons a été arrêtée, car la réponse a été signalée comme présentant du contenu interdit, par exemple des abus sexuels sur mineurs.
  • FINISH_REASON_SPII : la génération des jetons a été arrêtée, car la réponse a été signalée comme présentant des informations personnelles sensibles.
  • FINISH_REASON_MALFORMED_FUNCTION_CALL : les candidats ont été bloqués en raison d'un appel de fonction incorrect et non analysable.
  • FINISH_REASON_OTHER : toutes les autres raisons pour lesquelles la génération des jetons a été arrêtée.
  • FINISH_REASON_UNSPECIFIED : le motif de fin n'est pas spécifié.
category Catégorie de sécurité pour laquelle configurer un seuil. Les valeurs acceptées incluent les suivantes :

Cliquez pour développer les catégories de sécurité.

  • HARM_CATEGORY_SEXUALLY_EXPLICIT
  • HARM_CATEGORY_HATE_SPEECH
  • HARM_CATEGORY_HARASSMENT
  • HARM_CATEGORY_DANGEROUS_CONTENT
probability Niveaux de probabilité de préjudice dans le contenu.
  • HARM_PROBABILITY_UNSPECIFIED
  • NEGLIGIBLE
  • LOW
  • MEDIUM
  • HIGH
blocked Option booléenne associée à un attribut de sécurité qui indique si l'entrée ou la sortie du modèle a été bloquée.
startIndex Entier qui spécifie où commence une citation dans le fichier content. La valeur startIndex est exprimée en octets et calculée à partir de la réponse encodée en UTF-8.
endIndex Entier qui spécifie où finit une citation dans le fichier content. La valeur endIndex est exprimée en octets et calculée à partir de la réponse encodée en UTF-8.
url URL de la source d'une citation. Une source URL peut être un site Web d'actualités ou un dépôt GitHub.
title Titre de la source d'une citation. Il peut s'agir, par exemple, du titre d'un article de presse ou d'un livre.
license Licence associée à une citation.
publicationDate Date à laquelle une citation a été publiée. Les formats valides sont YYYY, YYYY-MM et YYYY-MM-DD.
avgLogprobs Probabilité logarithmique moyenne du candidat.
logprobsResult Renvoie les jetons des meilleurs candidats (topCandidates) et les jetons choisis (chosenCandidates) à chaque étape.
token Les modèles d'IA générative décomposent les données textuelles en jetons à traiter. Il peut s'agir de caractères, de mots ou d'expressions.
logProbability Valeur de probabilité logarithmique qui indique le niveau de confiance du modèle concernant un jeton particulier.
promptTokenCount Nombre de jetons dans la requête.
candidatesTokenCount Nombre de jetons dans la ou les réponses.
totalTokenCount Nombre de jetons dans la requête et la ou les réponses.

Exemples

Génération de texte

Générez une réponse textuelle à partir d'une entrée de texte.

SDK Gen AI pour Python

from google import genai
from google.genai.types import HttpOptions

client = genai.Client(http_options=HttpOptions(api_version="v1"))
response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="How does AI work?",
)
print(response.text)
# Example response:
# Okay, let's break down how AI works. It's a broad field, so I'll focus on the ...
#
# Here's a simplified overview:
# ...

Python (OpenAI)

Vous pouvez appeler l'API Inference à l'aide de la bibliothèque OpenAI. Pour en savoir plus, consultez Appeler des modèles Vertex AI à l'aide de la bibliothèque OpenAI.

from google.auth import default
import google.auth.transport.requests

import openai

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"

# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())

# OpenAI Client
client = openai.OpenAI(
    base_url=f"https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
    api_key=credentials.token,
)

response = client.chat.completions.create(
    model="google/gemini-2.0-flash-001",
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
)

print(response)

Go

import (
	"context"
	"fmt"
	"io"

	"google.golang.org/genai"
)

// generateWithText shows how to generate text using a text prompt.
func generateWithText(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	resp, err := client.Models.GenerateContent(ctx,
		"gemini-2.5-flash",
		genai.Text("How does AI work?"),
		nil,
	)
	if err != nil {
		return fmt.Errorf("failed to generate content: %w", err)
	}

	respText := resp.Text()

	fmt.Fprintln(w, respText)
	// Example response:
	// That's a great question! Understanding how AI works can feel like ...
	// ...
	// **1. The Foundation: Data and Algorithms**
	// ...

	return nil
}

Utiliser une requête multimodale

Générez une réponse textuelle à partir d'une entrée multimodale, telle que du texte et une image.

SDK Gen AI pour Python

from google import genai
from google.genai.types import HttpOptions, Part

client = genai.Client(http_options=HttpOptions(api_version="v1"))
response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=[
        "What is shown in this image?",
        Part.from_uri(
            file_uri="gs://cloud-samples-data/generative-ai/image/scones.jpg",
            mime_type="image/jpeg",
        ),
    ],
)
print(response.text)
# Example response:
# The image shows a flat lay of blueberry scones arranged on parchment paper. There are ...

Python (OpenAI)

Vous pouvez appeler l'API Inference à l'aide de la bibliothèque OpenAI. Pour en savoir plus, consultez Appeler des modèles Vertex AI à l'aide de la bibliothèque OpenAI.


from google.auth import default
import google.auth.transport.requests

import openai

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"

# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())

# OpenAI Client
client = openai.OpenAI(
    base_url=f"https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
    api_key=credentials.token,
)

response = client.chat.completions.create(
    model="google/gemini-2.0-flash-001",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "Describe the following image:"},
                {
                    "type": "image_url",
                    "image_url": "gs://cloud-samples-data/generative-ai/image/scones.jpg",
                },
            ],
        }
    ],
)

print(response)

Go

import (
	"context"
	"fmt"
	"io"

	genai "google.golang.org/genai"
)

// generateWithTextImage shows how to generate text using both text and image input
func generateWithTextImage(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	modelName := "gemini-2.5-flash"
	contents := []*genai.Content{
		{Parts: []*genai.Part{
			{Text: "What is shown in this image?"},
			{FileData: &genai.FileData{
				// Image source: https://storage.googleapis.com/cloud-samples-data/generative-ai/image/scones.jpg
				FileURI:  "gs://cloud-samples-data/generative-ai/image/scones.jpg",
				MIMEType: "image/jpeg",
			}},
		},
			Role: "user"},
	}

	resp, err := client.Models.GenerateContent(ctx, modelName, contents, nil)
	if err != nil {
		return fmt.Errorf("failed to generate content: %w", err)
	}

	respText := resp.Text()

	fmt.Fprintln(w, respText)

	// Example response:
	// The image shows an overhead shot of a rustic, artistic arrangement on a surface that ...

	return nil
}

Réponse de texte en streaming

Générez une réponse de modèle en streaming à partir d'une entrée de texte.

SDK Gen AI pour Python

from google import genai
from google.genai.types import HttpOptions

client = genai.Client(http_options=HttpOptions(api_version="v1"))

for chunk in client.models.generate_content_stream(
    model="gemini-2.5-flash",
    contents="Why is the sky blue?",
):
    print(chunk.text, end="")
# Example response:
# The
#  sky appears blue due to a phenomenon called **Rayleigh scattering**. Here's
#  a breakdown of why:
# ...

Python (OpenAI)

Vous pouvez appeler l'API Inference à l'aide de la bibliothèque OpenAI. Pour en savoir plus, consultez Appeler des modèles Vertex AI à l'aide de la bibliothèque OpenAI.

from google.auth import default
import google.auth.transport.requests

import openai

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"

# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())

# OpenAI Client
client = openai.OpenAI(
    base_url=f"https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
    api_key=credentials.token,
)

response = client.chat.completions.create(
    model="google/gemini-2.0-flash-001",
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
    stream=True,
)
for chunk in response:
    print(chunk)

Go

import (
	"context"
	"fmt"
	"io"

	genai "google.golang.org/genai"
)

// generateWithTextStream shows how to generate text stream using a text prompt.
func generateWithTextStream(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	modelName := "gemini-2.5-flash"
	contents := genai.Text("Why is the sky blue?")

	for resp, err := range client.Models.GenerateContentStream(ctx, modelName, contents, nil) {
		if err != nil {
			return fmt.Errorf("failed to generate content: %w", err)
		}

		chunk := resp.Text()

		fmt.Fprintln(w, chunk)
	}

	// Example response:
	// The
	//  sky is blue
	//  because of a phenomenon called **Rayleigh scattering**. Here's the breakdown:
	// ...

	return nil
}

Versions de modèle

Pour utiliser la version mise à jour automatiquement, spécifiez le nom du modèle sans le numéro de version final, par exemple gemini-2.0-flash au lieu de gemini-2.0-flash-001.

Pour en savoir plus, consultez Versions et cycle de vie des modèles Gemini.

Étapes suivantes