Requête avec des fichiers multimédias


Afficher sur ai.google.dev Exécuter dans Google Colab Consulter le code source sur GitHub

L'API Gemini accepte les requêtes comportant des données textuelles, illustrées, audio et vidéo, également appelées requêtes multimodales, ce qui signifie que vous pouvez inclure ces types de fichiers multimédias dans vos requêtes. Pour les petits fichiers, vous pouvez pointer le modèle Gemini directement vers un fichier local lorsque vous envoyez une requête. Importez des fichiers plus volumineux avec l'API File avant de les inclure dans les requêtes.

L'API File vous permet de stocker jusqu'à 20 Go de fichiers par projet, la taille de chaque fichier ne dépassant pas 2 Go. Les fichiers sont stockés pendant 48 heures. Vous pouvez y accéder avec votre clé API pour être générés pendant cette période et ne peuvent pas être téléchargés à partir de l'API. L'API Files est disponible sans frais dans toutes les régions où l'API Gemini est disponible.

L'API File gère les entrées qui peuvent être utilisées pour générer du contenu avec model.generateContent ou model.streamGenerateContent. Pour en savoir plus sur les formats de fichiers valides (types MIME) et les modèles compatibles, consultez la page Formats de fichiers compatibles.

Ce guide explique comment utiliser l'API File pour importer des fichiers multimédias et les inclure dans un appel GenerateContent à l'API Gemini. Pour en savoir plus, consultez les exemples de code.

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

Avant d'appeler l'API Gemini (ou son API File), vous devez configurer votre projet et votre clé API.

Requêtes avec images

Dans ce tutoriel, vous allez importer un exemple d'image à l'aide de l'API File, puis l'utiliser pour générer du contenu.

Importer un fichier image

Reportez-vous à la section Annexe pour savoir comment importer votre propre fichier.

  1. Préparez un exemple d'image à importer:

      curl -o image.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg
    
  2. Importez ce fichier à l'aide de media.upload pour pouvoir y accéder avec d'autres appels d'API:

    sample_file = genai.upload_file(path="image.jpg",
                                display_name="Sample drawing")
    
    print(f"Uploaded file '{sample_file.display_name}' as: {sample_file.uri}")
    

response indique que l'image importée est stockée avec le display_name spécifié et qu'il possède un uri pour référencer le fichier dans les appels d'API Gemini. Utilisez le response pour suivre la façon dont les fichiers importés sont mappés aux URI.

Selon votre cas d'utilisation, vous pouvez stocker les URI dans des structures telles que dict ou une base de données.

Obtenir les métadonnées du fichier image

Après avoir importé le fichier, vous pouvez vérifier que l'API l'a bien stocké et obtenir ses métadonnées en appelant files.get via le SDK.

Cette méthode vous permet d'obtenir les métadonnées d'un fichier importé associé au projet Google Cloud associé à votre clé API. Seuls les name (et par extension, les uri) sont uniques. Utilisez display_name pour identifier les fichiers uniquement si vous gérez vous-même l'unicité.

file = genai.get_file(name=sample_file.name)
print(f"Retrieved file '{file.display_name}' as: {sample_file.uri}")

Générer du contenu à l'aide du fichier image importé

Après avoir importé l'image, vous pouvez effectuer des requêtes GenerateContent qui font référence à uri dans la réponse (en important le fichier ou en obtenant directement les métadonnées du fichier).

Dans cet exemple, vous créez une requête qui commence par un texte, suivi de la référence d'URI du fichier importé:

# The Gemini 1.5 models are versatile and work with multimodal prompts
model = genai.GenerativeModel(model_name="models/gemini-1.5-flash")

response = model.generate_content([sample_file, "Describe the image with a creative description."])

Markdown(">" + response.text)

Supprimer le fichier image

Les fichiers sont automatiquement supprimés au bout de 48 heures. Vous pouvez également les supprimer manuellement à l'aide de files.delete via le SDK.

genai.delete_file(sample_file.name)
print(f'Deleted {sample_file.display_name}.')

Requêtes avec des vidéos

Dans ce tutoriel, vous allez importer un exemple de vidéo à l'aide de l'API File, puis l'utiliser pour générer du contenu.

Importer un fichier vidéo

L'API Gemini accepte directement les formats de fichiers vidéo. Cet exemple reprend le court-métrage "Big Buck Bunny".

"Big Buck Bunny" est (c) copyright 2008, Blender Foundation / www.bigbuckbunny.org, et concédé sous licence Creative Commons Attribution 3.0.

Reportez-vous à la section Annexe pour savoir comment importer votre propre fichier.

  1. Préparez l'exemple de fichier vidéo à mettre en ligne:

    wget https://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4
    
  2. Importez ce fichier à l'aide de media.upload pour pouvoir y accéder avec d'autres appels d'API:

    video_file_name = "BigBuckBunny_320x180.mp4"
    
    print(f"Uploading file...")
    video_file = genai.upload_file(path=video_file_name)
    print(f"Completed upload: {video_file.uri}")
    

Vérifier l'état d'importation du fichier vidéo

Vérifiez que l'API a bien importé le fichier vidéo en appelant la méthode files.get via le SDK.

Les fichiers vidéo comportent un champ State de l'API File. Lorsqu'une vidéo est mise en ligne, elle est à l'état PROCESSING jusqu'à ce qu'elle soit prête pour l'inférence. Seuls ACTIVE fichiers peuvent être utilisés pour l'inférence de modèle.

import time

while video_file.state.name == "PROCESSING":
    print('.', end='')
    time.sleep(10)
    video_file = genai.get_file(video_file.name)

if video_file.state.name == "FAILED":
  raise ValueError(video_file.state.name)

Obtenir les métadonnées du fichier vidéo

Vous pouvez obtenir les métadonnées du fichier vidéo importé à tout moment en appelant la méthode files.get via le SDK.

Cette méthode vous permet d'obtenir les métadonnées d'un fichier importé associé au projet Google Cloud associé à votre clé API. Seuls les name (et par extension, les uri) sont uniques. Utilisez display_name pour identifier les fichiers uniquement si vous gérez vous-même l'unicité.

file = genai.get_file(name=video_file.name)
print(f"Retrieved file '{file.display_name}' as: {video_file.uri}")

Générer du contenu à l'aide du fichier vidéo importé

Après avoir mis en ligne la vidéo, vous pouvez effectuer des requêtes GenerateContent qui font référence à uri dans la réponse (soit en important le fichier, soit en obtenant directement les métadonnées du fichier).

Assurez-vous d'avoir vérifié l'état d'importation du fichier vidéo (voir la section ci-dessus) avant d'exécuter l'inférence sur la vidéo.

# Create the prompt.
prompt = "Describe this video."

# The Gemini 1.5 models are versatile and work with multimodal prompts
model = genai.GenerativeModel(model_name="models/gemini-1.5-flash")

# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([video_file, prompt],
                                  request_options={"timeout": 600})
print(response.text)

Supprimer le fichier vidéo

Les fichiers sont automatiquement supprimés au bout de 48 heures. Vous pouvez également les supprimer manuellement à l'aide de files.delete via le SDK.

genai.delete_file(file_response.name)
print(f'Deleted file {file_response.uri}')

Formats de fichiers acceptés

Les modèles Gemini acceptent les requêtes comportant plusieurs formats de fichiers. Cette section explique les considérations liées à l'utilisation de formats multimédias généraux pour les requêtes, en particulier les fichiers image, audio, vidéo et texte brut. Vous ne pouvez utiliser des fichiers multimédias que pour les requêtes avec des versions de modèle spécifiques, comme indiqué dans le tableau suivant.

Modèle Images Audio Vidéo Texte brut
Gemini 1.5 Pro (versions 008 et ultérieures) ✔ (3 600 fichiers image au maximum)

Formats illustrés

Vous pouvez utiliser des données d'image pour envoyer des requêtes avec les modèles Gemini 1.5. Lorsque vous utilisez des images pour des requêtes, elles sont soumises aux limites et exigences suivantes:

  • Les images doivent appartenir à l'un des types MIME de données d'image suivants :
    • PNG : image/png
    • JPEG : image/jpeg
    • WEBP : Image/webp
    • HEIC : image/heic
    • HEIF : image/heif
  • 3 600 images maximum pour les modèles Gemini 1.5.
  • Aucune limite spécifique au nombre de pixels d'une image. Toutefois, les images plus grandes sont réduites pour s'adapter à une résolution maximale de 3 072 x 3 072, tout en conservant leur format d'origine.

Formats audio

Vous pouvez utiliser des données audio pour envoyer des requêtes avec les modèles Gemini 1.5. Lorsque vous utilisez du contenu audio pour les requêtes, ils sont soumis aux limites et exigences suivantes:

  • Les données audio sont compatibles avec les types MIME courants suivants :
    • WAV – audio/wav
    • MP3 (audio/mp3)
    • AIFF : audio/aiff
    • AAC : audio/aac
    • OGG Vorbis – audio/ogg
    • FLAC (audio/flac)
  • La durée maximale autorisée pour les données audio dans une seule requête est de 9,5 heures.
  • Les fichiers audio sont rééchantillonnés à une résolution de données de 16 kbit/s, et plusieurs canaux audio sont combinés en un seul canal.
  • Il n'y a pas de limite spécifique au nombre de fichiers audio dans une seule requête.Toutefois, la durée totale combinée de tous les fichiers audio d'une même requête ne peut pas dépasser 9,5 heures.

Formats vidéo

Vous pouvez utiliser des données vidéo pour envoyer des requêtes avec les modèles Gemini 1.5.

  • Les données vidéo sont compatibles avec les types MIME courants des formats vidéo suivants:

    • video/mp4
    • video/mpeg
    • vidéo/mov
    • vidéo/avi
    • video/x-flv
    • vidéo/mpg
    • vidéo/webm
    • Vidéo/WMV
    • vidéo/3gpp
  • Le service de l'API File échantillonne des vidéos dans des images avec une fréquence d'images de 1 image par seconde (FPS) et peut être modifié afin de fournir la meilleure qualité d'inférence. Les images individuelles occupent 258 jetons, quelles que soient la résolution et la qualité.

Formats en texte brut

L'API File permet d'importer des fichiers en texte brut avec les types MIME suivants:

  • text/plain
  • text/html
  • text/css
  • text/javascript
  • application/x-javascript
  • texte/x-typescript
  • application/x-typescript
  • texte/csv
  • texte/Markdown
  • text/x-python
  • application/x-python-code
  • application/json
  • text/xml
  • application/rtf
  • texte/rtf

Pour les fichiers en texte brut dont le type MIME ne figure pas dans la liste, vous pouvez essayer de spécifier manuellement l'un des types MIME ci-dessus.

Annexe: Importer des fichiers dans Colab

Ce notebook utilise l'API File avec les fichiers téléchargés depuis Internet. Si vous exécutez ceci dans Colab et que vous souhaitez utiliser vos propres fichiers, vous devez d'abord les importer dans l'instance Colab.

Tout d'abord, cliquez sur Fichiers dans la barre latérale gauche, puis sur le bouton Importer:

Vous allez ensuite importer ce fichier dans l'API File. Dans le formulaire de la cellule de code ci-dessous, saisissez le nom du fichier que vous avez importé et indiquez un nom à afficher approprié pour le fichier, puis exécutez la cellule.

my_filename = "gemini_logo.png" # @param {type:"string"}
my_file_display_name = "Gemini Logo" # @param {type:"string"}

my_file = genai.upload_file(path=my_filename,
                            display_name=my_file_display_name)
print(f"Uploaded file '{my_file.display_name}' as: {my_file.uri}")