Compréhension des images

Vous pouvez ajouter des images aux requêtes Gemini pour effectuer des tâches qui impliquent de comprendre le contenu des images incluses. Cette page vous explique comment ajouter des images à vos requêtes Gemini dans Vertex AI à l'aide de la consoleGoogle Cloud et de l'API Vertex AI.

Modèles compatibles

Le tableau suivant liste les modèles compatibles avec la compréhension d'images :

Modèle Informations sur les contenus multimédias Types MIME
Gemini 2.5 Flash (preview)
  • Nombre maximal d'images par requête : 3 000
  • Taille d'image maximale : 7 Mo
  • image/png
  • image/jpeg
  • image/webp
Gemini 2.5 Flash-Lite (preview)
  • Nombre maximal d'images par requête : 3 000
  • Taille d'image maximale : 7 Mo
  • Nombre maximal d'images générées par requête : 10
  • image/png
  • image/jpeg
  • image/webp
Image Gemini 2.5 Flash
  • Nombre maximal d'images par requête : 3
  • Taille d'image maximale : 7 Mo
  • Nombre maximal d'images générées par requête : 10
  • Formats acceptés : 1:1, 3:2, 2:3, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9 et 21:9
  • image/png
  • image/jpeg
  • image/webp
Gemini 2.5 Flash-Lite
  • Nombre maximal d'images par requête : 3 000
  • Taille d'image maximale : 7 Mo
  • Nombre maximal d'images générées par requête : 10
  • image/png
  • image/jpeg
  • image/webp
Gemini 2.0 Flash avec génération d'images (Aperçu)
  • Nombre maximal d'images par requête : 3 000
  • Taille d'image maximale : 7 Mo
  • Nombre maximal d'images générées par requête : 10
  • Nombre maximal de jetons par minute et par projet :
    • Résolution des contenus multimédias élevée/moyenne/par défaut :
      • États-Unis/Asie : 40 M
      • UE : 10 M
    • Basse résolution des contenus multimédias :
      • États-Unis/Asie : 10 M
      • UE : 3 M
  • image/png
  • image/jpeg
  • image/webp
Gemini 2.5 Pro
  • Nombre maximal d'images par requête : 3 000
  • Taille d'image maximale : 7 Mo
  • image/png
  • image/jpeg
  • image/webp
Gemini 2.5 Flash
  • Nombre maximal d'images par requête : 3 000
  • Taille d'image maximale : 7 Mo
  • image/png
  • image/jpeg
  • image/webp
Gemini 2.0 Flash
  • Nombre maximal d'images par requête : 3 000
  • Taille d'image maximale : 7 Mo
  • Nombre maximal de jetons par minute et par projet :
    • Résolution des contenus multimédias élevée/moyenne/par défaut :
      • États-Unis/Asie : 40 M
      • UE : 10 M
    • Basse résolution des contenus multimédias :
      • États-Unis/Asie : 10 M
      • UE : 2,6 M
  • image/png
  • image/jpeg
  • image/webp
Gemini 2.0 Flash-Lite
  • Nombre maximal d'images par requête : 3 000
  • Taille d'image maximale : 7 Mo
  • Nombre maximal de jetons par minute (TPM) :
    • Résolution des contenus multimédias élevée/moyenne/par défaut :
      • États-Unis/Asie : 6,7 M
      • UE : 2,6 M
    • Basse résolution des contenus multimédias :
      • États-Unis/Asie : 2,6 M
      • UE : 2,6 M
  • image/png
  • image/jpeg
  • image/webp

La métrique de quota est generate_content_video_input_per_base_model_id_and_resolution.

Pour obtenir la liste des langues compatibles avec les modèles Gemini, consultez les informations sur les modèles en accédant à Modèles Google. Pour en savoir plus sur la conception de requêtes multimodales, consultez Concevoir des requêtes multimodales. Si vous souhaitez utiliser Gemini directement à partir de vos applications mobiles et Web, consultez les SDK client Firebase AI Logic pour les applications Swift, Android, Web, Flutter et Unity.

Ajouter des images à une requête

Vous pouvez ajouter une ou plusieurs images à votre requête Gemini.

Image unique

Chacun des exemples de code sur les onglets suivants présente une manière spécifique permettant d'identifier le contenu d'une image. Cet exemple fonctionne avec tous les modèles multimodaux Gemini.

Console

Pour envoyer une requête multimodale à l'aide de la console Google Cloud , procédez comme suit :

  1. Dans la section "Vertex AI" de la console Google Cloud , accédez à la page Vertex AI Studio.

    Accéder à Vertex AI Studio

  2. Cliquez sur Ouvrir le mode forme libre.

  3. (Facultatif) Configurez le modèle et les paramètres :

    • Modèle : sélectionnez un modèle.
    • Région : sélectionnez la région que vous souhaitez utiliser.
    • Température : utilisez le curseur ou la zone de texte pour saisir une valeur de 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 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.

    • Limite de jetons de sortie : utilisez le curseur ou la zone de texte pour saisir une valeur correspondant à la limite maximale 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 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.

    • Ajouter une séquence d'arrêt : facultatif. Saisissez une séquence d'arrêt, qui est une série de caractères incluant des espaces. Si le modèle rencontre une séquence d'arrêt, la génération de réponse s'arrête. La séquence d'arrêt n'est pas incluse dans la réponse, et vous pouvez en ajouter jusqu'à cinq.

  4. (Facultatif) Pour configurer des paramètres avancés, cliquez sur Avancé, puis configurez les paramètres comme suit :

    Cliquez pour développer les configurations avancées.

    • Top-K : utilisez le curseur ou la zone de texte pour saisir une valeur (non disponible pour Gemini 1.5).

      Le 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 obtenir des réponses moins aléatoires et une valeur supérieure pour des réponses plus aléatoires.

    • Top-P : utilisez le curseur ou la zone de texte pour saisir une valeur. 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 du top-P. Pour obtenir les résultats les moins variables, définissez "Top-P" sur 0.
    • Nombre maximal de réponses : utilisez le curseur ou la zone de texte pour saisir le nombre de réponses à générer.
    • Réponses en streaming : permet d'imprimer les réponses au fur et à mesure de leur génération.
    • Seuil de filtre de sécurité : sélectionnez le seuil de la probabilité que des réponses potentiellement nuisibles s'affichent.
    • Activer l'ancrage : l'ancrage n'est pas compatible avec les requêtes multimodales.

  5. Cliquez sur Insérer un média, puis sélectionnez une source pour votre fichier.

    Importer

    Sélectionnez le fichier que vous souhaitez importer, puis cliquez sur Ouvrir.

    À partir d'une URL

    Saisissez l'URL du fichier que vous souhaitez utiliser, puis cliquez sur Insérer.

    Cloud Storage

    Sélectionnez le bucket, puis le fichier que vous souhaitez importer, et cliquez sur Sélectionner.

    Google Drive

    1. Choisissez un compte et autorisez Vertex AI Studio à y accéder la première fois que vous sélectionnez cette option. Vous pouvez importer plusieurs fichiers, à condition de ne pas dépasser une taille totale de 10 Mo. La taille d'un seul fichier ne peut pas dépasser 7 Mo.
    2. Cliquez sur le fichier que vous souhaitez ajouter.
    3. Cliquez sur Sélectionner.

      La vignette du fichier s'affiche dans le volet Requête. Le nombre total de jetons est également indiqué. Si les données de votre requête dépassent la limite de jetons, les jetons sont tronqués et ne sont pas inclus dans le traitement de vos données.

  6. Saisissez votre requête textuelle dans le volet Requête.

  7. (Facultatif) Pour afficher les ID de jeton Texte et les ID de jeton, cliquez sur le nombre de jetons dans le volet Requête.

  8. Cliquez sur Envoyer.

  9. (Facultatif) Pour enregistrer votre requête dans Mes requêtes, cliquez sur  Enregistrer.

  10. (Facultatif) Pour obtenir le code Python ou la commande curl de votre requête, cliquez sur  Obtenir le code.

Python

Installation

pip install --upgrade google-genai

Pour en savoir plus, consultez la documentation de référence du SDK.

Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

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

Go

Découvrez comment installer ou mettre à jour le Go.

Pour en savoir plus, lisez la documentation de référence du SDK.

Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

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
}

Node.js

Installer

npm install @google/genai

Pour en savoir plus, consultez la documentation de référence du SDK.

Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

const {GoogleGenAI} = require('@google/genai');

const GOOGLE_CLOUD_PROJECT = process.env.GOOGLE_CLOUD_PROJECT;
const GOOGLE_CLOUD_LOCATION = process.env.GOOGLE_CLOUD_LOCATION || 'global';

async function generateContent(
  projectId = GOOGLE_CLOUD_PROJECT,
  location = GOOGLE_CLOUD_LOCATION
) {
  const client = new GoogleGenAI({
    vertexai: true,
    project: projectId,
    location: location,
  });

  const image = {
    fileData: {
      fileUri: 'gs://cloud-samples-data/generative-ai/image/scones.jpg',
      mimeType: 'image/jpeg',
    },
  };

  const response = await client.models.generateContent({
    model: 'gemini-2.5-flash',
    contents: [image, 'What is shown in this image?'],
  });

  console.log(response.text);

  return response.text;
}

Java

Découvrez comment installer ou mettre à jour le Java.

Pour en savoir plus, lisez la documentation de référence du SDK.

Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True


import com.google.genai.Client;
import com.google.genai.types.Content;
import com.google.genai.types.GenerateContentResponse;
import com.google.genai.types.HttpOptions;
import com.google.genai.types.Part;

public class TextGenerationWithTextAndImage {

  public static void main(String[] args) {
    // TODO(developer): Replace these variables before running the sample.
    String modelId = "gemini-2.5-flash";
    generateContent(modelId);
  }

  // Generates text with text and image input
  public static String generateContent(String modelId) {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (Client client =
        Client.builder()
            .location("global")
            .vertexAI(true)
            .httpOptions(HttpOptions.builder().apiVersion("v1").build())
            .build()) {

      GenerateContentResponse response =
          client.models.generateContent(
              modelId,
              Content.fromParts(
                  Part.fromText("What is shown in this image?"),
                  Part.fromUri(
                      "gs://cloud-samples-data/generative-ai/image/scones.jpg", "image/jpeg")),
              null);

      System.out.print(response.text());
      // Example response:
      // The image shows a flat lay of blueberry scones arranged on parchment paper. There are ...
      return response.text();
    }
  }
}

REST

Une fois que vous avez configuré votre environnement, vous pouvez utiliser REST pour tester un prompt textuel. L'exemple suivant envoie une requête au point de terminaison du modèle de l'éditeur.

Vous pouvez inclure des images stockées dans Cloud Storage ou utiliser des données d'image encodées en base64.

Image dans Cloud Storage

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • PROJECT_ID : ID de votre projet.
  • FILE_URI : 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.

    Si vous ne disposez pas de fichier image dans Cloud Storage, vous pouvez utiliser le fichier suivant, disponible publiquement : gs://cloud-samples-data/generative-ai/image/scones.jpg (type MIME : image/jpeg). Pour afficher cette image, ouvrez l'exemple de fichier image.

  • MIME_TYPE : 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
  • TEXT : instructions textuelles à inclure dans la requête. Exemple : What is shown in this image?

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

cat > request.json << 'EOF'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
EOF

Exécutez ensuite la commande suivante pour envoyer votre requête REST :

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-1.5-flash:generateContent"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

@'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Exécutez ensuite la commande suivante pour envoyer votre requête REST :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-1.5-flash:generateContent" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON semblable à la suivante.

Données d'image Base64

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • LOCATION : région dans laquelle traiter la requête. Saisissez une région compatible. Pour obtenir la liste complète des régions compatibles, consultez Emplacements disponibles.

    Cliquer pour développer une liste partielle des régions disponibles.

    • us-central1
    • us-west4
    • northamerica-northeast1
    • us-east4
    • us-west1
    • asia-northeast3
    • asia-southeast1
    • asia-northeast1
  • PROJECT_ID : ID de votre projet.
  • B64_BASE_IMAGE
    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.
  • MIME_TYPE : 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
  • TEXT : instructions textuelles à inclure dans la requête. Exemple : What is shown in this image?.

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

cat > request.json << 'EOF'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "inlineData": {
          "data": "B64_BASE_IMAGE",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
EOF

Exécutez ensuite la commande suivante pour envoyer votre requête REST :

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-1.5-flash:generateContent"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

@'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "inlineData": {
          "data": "B64_BASE_IMAGE",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Exécutez ensuite la commande suivante pour envoyer votre requête REST :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-1.5-flash:generateContent" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON semblable à la suivante.

Notez les points suivants dans l'URL de cet exemple 
  • Utilisez la méthode generateContent pour demander que la réponse soit renvoyée une fois qu'elle a été entièrement générée. Pour réduire la perception de la latence auprès d'un public humain, affichez la réponse progressivement à mesure qu'elle est générée à l'aide de la méthode streamGenerateContent.
  • L'ID du modèle multimodal se trouve à la fin de l'URL avant la méthode (par exemple, gemini-2.0-flash). Cet exemple peut également s'appliquer à d'autres modèles.

Images multiples

Chacun des onglets suivants présente une manière différente d'inclure plusieurs images dans une requête. Chaque exemple utilise deux ensembles parmi les entrées suivantes :

  • Image d'un monument célèbre
  • Type de contenu de l'image
  • Texte indiquant la ville et le monument sur l'image

L'exemple utilise également une troisième image et un type de contenu, mais pas de texte. L'exemple renvoie une réponse textuelle indiquant la ville et le monument sur la troisième image.

Ces exemples d'images fonctionnent avec tous les modèles multimodaux Gemini.

Console

Pour envoyer une requête multimodale à l'aide de la console Google Cloud , procédez comme suit :

  1. Dans la section "Vertex AI" de la console Google Cloud , accédez à la page Vertex AI Studio.

    Accéder à Vertex AI Studio

  2. Cliquez sur Ouvrir le mode forme libre.

  3. (Facultatif) Configurez le modèle et les paramètres :

    • Modèle : sélectionnez un modèle.
    • Région : sélectionnez la région que vous souhaitez utiliser.
    • Température : utilisez le curseur ou la zone de texte pour saisir une valeur de 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 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.

    • Limite de jetons de sortie : utilisez le curseur ou la zone de texte pour saisir une valeur correspondant à la limite maximale 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 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.

    • Ajouter une séquence d'arrêt : facultatif. Saisissez une séquence d'arrêt, qui est une série de caractères incluant des espaces. Si le modèle rencontre une séquence d'arrêt, la génération de réponse s'arrête. La séquence d'arrêt n'est pas incluse dans la réponse, et vous pouvez en ajouter jusqu'à cinq.

  4. (Facultatif) Pour configurer des paramètres avancés, cliquez sur Avancé, puis configurez les paramètres comme suit :

    Cliquez pour développer les configurations avancées.

    • Top-K : utilisez le curseur ou la zone de texte pour saisir une valeur (non disponible pour Gemini 1.5).

      Le 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 obtenir des réponses moins aléatoires et une valeur supérieure pour des réponses plus aléatoires.

    • Top-P : utilisez le curseur ou la zone de texte pour saisir une valeur. 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 du top-P. Pour obtenir les résultats les moins variables, définissez "Top-P" sur 0.
    • Nombre maximal de réponses : utilisez le curseur ou la zone de texte pour saisir le nombre de réponses à générer.
    • Réponses en streaming : permet d'imprimer les réponses au fur et à mesure de leur génération.
    • Seuil de filtre de sécurité : sélectionnez le seuil de la probabilité que des réponses potentiellement nuisibles s'affichent.
    • Activer l'ancrage : l'ancrage n'est pas compatible avec les requêtes multimodales.

  5. Cliquez sur Insérer un média, puis sélectionnez une source pour votre fichier.

    Importer

    Sélectionnez le fichier que vous souhaitez importer, puis cliquez sur Ouvrir.

    À partir d'une URL

    Saisissez l'URL du fichier que vous souhaitez utiliser, puis cliquez sur Insérer.

    Cloud Storage

    Sélectionnez le bucket, puis le fichier que vous souhaitez importer, et cliquez sur Sélectionner.

    Google Drive

    1. Choisissez un compte et autorisez Vertex AI Studio à y accéder la première fois que vous sélectionnez cette option. Vous pouvez importer plusieurs fichiers, à condition de ne pas dépasser une taille totale de 10 Mo. La taille d'un seul fichier ne peut pas dépasser 7 Mo.
    2. Cliquez sur le fichier que vous souhaitez ajouter.
    3. Cliquez sur Sélectionner.

      La vignette du fichier s'affiche dans le volet Requête. Le nombre total de jetons est également indiqué. Si les données de votre requête dépassent la limite de jetons, les jetons sont tronqués et ne sont pas inclus dans le traitement de vos données.

  6. Saisissez votre requête textuelle dans le volet Requête.

  7. (Facultatif) Pour afficher les ID de jeton Texte et les ID de jeton, cliquez sur le nombre de jetons dans le volet Requête.

  8. Cliquez sur Envoyer.

  9. (Facultatif) Pour enregistrer votre requête dans Mes requêtes, cliquez sur  Enregistrer.

  10. (Facultatif) Pour obtenir le code Python ou la commande curl de votre requête, cliquez sur  Obtenir le code.

Python

Installation

pip install --upgrade google-genai

Pour en savoir plus, consultez la documentation de référence du SDK.

Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

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

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

# Read content from GCS
gcs_file_img_path = "gs://cloud-samples-data/generative-ai/image/scones.jpg"

# Read content from a local file
with open("test_data/latte.jpg", "rb") as f:
    local_file_img_bytes = f.read()

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=[
        "Generate a list of all the objects contained in both images.",
        Part.from_uri(file_uri=gcs_file_img_path, mime_type="image/jpeg"),
        Part.from_bytes(data=local_file_img_bytes, mime_type="image/jpeg"),
    ],
)
print(response.text)
# Example response:
# Okay, here's the list of objects present in both images:
# ...

Go

Découvrez comment installer ou mettre à jour le Go.

Pour en savoir plus, lisez la documentation de référence du SDK.

Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

import (
	"context"
	"fmt"
	"io"
	"os"

	genai "google.golang.org/genai"
)

// generateWithMultiImg shows how to generate text using multiple image inputs.
func generateWithMultiImg(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)
	}

	// TODO(Developer): Update the path to file (image source:
	//   https://storage.googleapis.com/cloud-samples-data/generative-ai/image/latte.jpg )
	imageBytes, err := os.ReadFile("./latte.jpg")
	if err != nil {
		return fmt.Errorf("failed to read image: %w", err)
	}

	contents := []*genai.Content{
		{Parts: []*genai.Part{
			{Text: "Write an advertising jingle based on the items in both images."},
			{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",
			}},
			{InlineData: &genai.Blob{
				Data:     imageBytes,
				MIMEType: "image/jpeg",
			}},
		}},
	}
	modelName := "gemini-2.5-flash"

	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:
	// Okay, here's an advertising jingle inspired by the blueberry scones, coffee, flowers, chocolate cake, and latte:
	//
	// (Upbeat, jazzy music)
	// ...

	return nil
}

Node.js

Installer

npm install @google/genai

Pour en savoir plus, consultez la documentation de référence du SDK.

Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

const {GoogleGenAI} = require('@google/genai');

const GOOGLE_CLOUD_PROJECT = process.env.GOOGLE_CLOUD_PROJECT;
const GOOGLE_CLOUD_LOCATION = process.env.GOOGLE_CLOUD_LOCATION || 'global';

async function generateContent(
  projectId = GOOGLE_CLOUD_PROJECT,
  location = GOOGLE_CLOUD_LOCATION
) {
  const client = new GoogleGenAI({
    vertexai: true,
    project: projectId,
    location: location,
  });

  const image1 = {
    fileData: {
      fileUri: 'gs://cloud-samples-data/generative-ai/image/scones.jpg',
      mimeType: 'image/jpeg',
    },
  };

  const image2 = {
    fileData: {
      fileUri: 'gs://cloud-samples-data/generative-ai/image/fruit.png',
      mimeType: 'image/png',
    },
  };

  const response = await client.models.generateContent({
    model: 'gemini-2.5-flash',
    contents: [
      image1,
      image2,
      'Generate a list of all the objects contained in both images.',
    ],
  });

  console.log(response.text);

  return response.text;
}

Java

Découvrez comment installer ou mettre à jour le Java.

Pour en savoir plus, lisez la documentation de référence du SDK.

Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True


import com.google.genai.Client;
import com.google.genai.types.Content;
import com.google.genai.types.GenerateContentResponse;
import com.google.genai.types.HttpOptions;
import com.google.genai.types.Part;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class TextGenerationWithMultiImage {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String modelId = "gemini-2.5-flash";
    // Content from Google Cloud Storage
    String gcsFileImagePath = "gs://cloud-samples-data/generative-ai/image/scones.jpg";
    String localImageFilePath = "resources/latte.jpg";
    generateContent(modelId, gcsFileImagePath, localImageFilePath);
  }

  // Generates text with multiple images
  public static String generateContent(
      String modelId, String gcsFileImagePath, String localImageFilePath) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (Client client =
        Client.builder()
            .location("global")
            .vertexAI(true)
            .httpOptions(HttpOptions.builder().apiVersion("v1").build())
            .build()) {

      // Read content from a local file.
      byte[] localFileImgBytes = Files.readAllBytes(Paths.get(localImageFilePath));

      GenerateContentResponse response =
          client.models.generateContent(
              modelId,
              Content.fromParts(
                  Part.fromText("Generate a list of all the objects contained in both images"),
                  Part.fromBytes(localFileImgBytes, "image/jpeg"),
                  Part.fromUri(gcsFileImagePath, "image/jpeg")),
              null);

      System.out.print(response.text());
      // Example response:
      // Okay, here's the list of objects present in both images:
      //
      // **Image 1 (Scones):**
      //
      // *   Scones
      // *   Plate
      // *   Jam/Preserve
      // *   Cream/Butter
      // *   Table/Surface
      // *   Napkin/Cloth (possibly)
      //
      // **Image 2 (Latte):**
      //
      // *   Latte/Coffee cup
      // *   Saucer
      // *   Spoon
      // *   Table/Surface
      // *   Foam/Latte art
      //
      // **Objects potentially in both (depending on interpretation and specific items):**
      //
      // *   Plate/Saucer (both are serving dishes)
      // *   Table/Surface
      return response.text();
    }
  }
}

REST

Une fois que vous avez configuré votre environnement, vous pouvez utiliser REST pour tester un prompt textuel. L'exemple suivant envoie une requête au point de terminaison du modèle de l'éditeur.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • PROJECT_ID : .
  • FILE_URI1 : 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.

    Si vous ne disposez pas de fichier image dans Cloud Storage, vous pouvez utiliser le fichier suivant, disponible publiquement : gs://cloud-samples-data/vertex-ai/llm/prompts/landmark1.png (type MIME : image/png). Pour afficher cette image, ouvrez l'exemple de fichier image.

  • MIME_TYPE : 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 plus de simplicité, cet exemple utilise le même type de contenu pour les trois images d'entrée.
  • TEXT1 : instructions textuelles à inclure dans la requête. Exemple : city: Rome, Landmark: the Colosseum
  • FILE_URI2 : 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.

    Si vous ne disposez pas de fichier image dans Cloud Storage, vous pouvez utiliser le fichier suivant, disponible publiquement : gs://cloud-samples-data/vertex-ai/llm/prompts/landmark2.png (type MIME : image/png). Pour afficher cette image, ouvrez l'exemple de fichier image.

  • TEXT2 : instructions textuelles à inclure dans la requête. Exemple : city: Beijing, Landmark: Forbidden City
  • FILE_URI3 : 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.

    Si vous ne disposez pas de fichier image dans Cloud Storage, vous pouvez utiliser le fichier suivant, disponible publiquement : gs://cloud-samples-data/vertex-ai/llm/prompts/landmark3.png (type MIME : image/png). Pour afficher cette image, ouvrez l'exemple de fichier image.

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

cat > request.json << 'EOF'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI1",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT1"
      },
      {
        "fileData": {
          "fileUri": "FILE_URI2",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT2"
      },
      {
        "fileData": {
          "fileUri": "FILE_URI3",
          "mimeType": "MIME_TYPE"
        }
      }
    ]
  }
}
EOF

Exécutez ensuite la commande suivante pour envoyer votre requête REST :

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-2.5-flash:generateContent"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

@'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI1",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT1"
      },
      {
        "fileData": {
          "fileUri": "FILE_URI2",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT2"
      },
      {
        "fileData": {
          "fileUri": "FILE_URI3",
          "mimeType": "MIME_TYPE"
        }
      }
    ]
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Exécutez ensuite la commande suivante pour envoyer votre requête REST :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-2.5-flash:generateContent" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON semblable à la suivante.

Notez les points suivants dans l'URL de cet exemple :
  • Utilisez la méthode generateContent pour demander que la réponse soit renvoyée une fois qu'elle a été entièrement générée. Pour réduire la perception de la latence auprès d'un public humain, affichez la réponse progressivement à mesure qu'elle est générée à l'aide de la méthode streamGenerateContent.
  • L'ID du modèle multimodal se trouve à la fin de l'URL avant la méthode (par exemple, gemini-2.0-flash). Cet exemple peut également s'appliquer à d'autres modèles.

Définir des paramètres de modèle facultatifs

Chaque modèle est associé à un ensemble de paramètres facultatifs que vous pouvez définir. Pour en savoir plus, consultez Paramètres de génération de contenu.

Tokenisation d'images

Voici comment les jetons sont calculés pour les images :

  • Si les deux dimensions d'une image sont inférieures ou égales à 384 pixels, 258 jetons sont utilisés.
  • Si l'une des dimensions d'une image est supérieure à 384 pixels, l'image est recadrée en vignettes. Chaque taille de vignette est définie par défaut sur la plus petite dimension (largeur ou hauteur), divisée par 1,5. Si nécessaire, chaque vignette est ajustée pour qu'elle ne soit pas inférieure à 256 pixels et ne dépasse pas 768 pixels. Chaque vignette est ensuite redimensionnée au format 768 x 768 et utilise 258 jetons.

Bonnes pratiques

Lorsque vous utilisez des images, suivez les bonnes pratiques et informations suivantes pour obtenir des résultats optimaux :

  • Si vous souhaitez détecter du texte dans une image, utilisez des requêtes avec une seule image pour obtenir de meilleurs résultats qu'avec des requêtes comportant plusieurs images.
  • Si votre requête contient une seule image, placez cette image avant la requête textuelle.
  • Si votre requête contient plusieurs images, et que vous souhaitez les référencer ultérieurement dans votre requête ou demander au modèle de les référencer dans la réponse du modèle, il peut être utile d'ajouter un index avant chaque image. Utilisez a b c ou image 1 image 2 image 3 pour votre index. Voici un exemple d'utilisation d'images indexées dans une requête :
    image 1 
    image 2 
    image 3 
    
    Write a blogpost about my day using image 1 and image 2. Then, give me ideas
    for tomorrow based on image 3.
  • Utilisez des images d'une résolution plus élevée pour obtenir de meilleurs résultats.
  • Incluez quelques exemples dans la requête.
  • Faites pivoter les images dans l'orientation appropriée avant de les ajouter à la requête.
  • Évitez les images floues.

Limites

Bien que les modèles multimodaux Gemini soient performants dans de nombreux cas d'utilisation multimodaux, il est important de comprendre leurs limites :

  • Modération de contenus : les modèles refusent de fournir des réponses sur des images qui ne respectent pas nos règles de sécurité.
  • Raisonnement spatial : les modèles ne parviennent pas à localiser précisément du texte ou des objets dans des images. Ils peuvent ne renvoyer que des décomptes approximatifs d'objets.
  • Utilisations médicales : les modèles ne conviennent pas à l'interprétation d'images médicales (par exemple, les radiographies et les scanners), ni à la fourniture de conseils médicaux.
  • Reconnaissance de personnes : les modèles ne sont pas conçus pour identifier des personnes qui ne sont pas des célébrités sur des images.
  • Justesse : les modèles peuvent halluciner ou faire des erreurs lors de l'interprétation d'images de mauvaise qualité, pivotées ou dont la résolution est extrêmement basse. Les modèles peuvent également halluciner lors de l'interprétation de texte manuscrit dans des images.

Étapes suivantes