<ph type="x-smartling-placeholder">
Afficher sur ai.google.dev | Essayer un notebook Colab | Afficher le notebook sur GitHub |
L'API Gemini peut exécuter des inférences sur les images et les vidéos qui lui sont transmises. Après réussite une image, une série d'images ou une vidéo, Gemini peut:
- Décrivez ou répondez aux questions sur le contenu
- Résumer le contenu
- Extrapoler à partir du contenu
Ce tutoriel présente plusieurs façons d'envoyer une requête à l'API Gemini avec des images et des entrées vidéo. Tous les résultats ne contiennent que du texte.
Avant de commencer: configurer votre projet et votre clé API
Avant d'appeler l'API Gemini, vous devez configurer votre projet et configurer votre clé API.
Requêtes avec images
Dans ce tutoriel, vous allez importer des images à l'aide de l'API File ou en tant que données intégrées. et générer des contenus à partir de ces images.
Détails techniques (images)
Gemini 1.5 Pro et 1.5 Flash acceptent jusqu'à 3 600 fichiers image.
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
Chaque image équivaut à 258 jetons.
Bien qu'il n'y ait aucune limite spécifique au nombre de pixels dans une image en dehors la fenêtre de contexte du modèle, les grandes images sont réduites résolution de 3 072 x 3 072 tout en conservant le format d'origine, les images les plus petites sont mises à l'échelle jusqu'à 768 x 768 pixels. Aucune réduction des coûts pour les images dont la taille est inférieure, en dehors de la bande passante ou de l'amélioration des performances ; pour des images en haute résolution.
Pour des résultats optimaux, procédez comme suit :
- Faites pivoter les images dans la bonne orientation avant de les importer.
- Évitez les images floues.
- Si vous utilisez une seule image, placez la requête textuelle après l'image.
Importer un fichier image à l'aide de l'API File
Utilisez l'API File pour importer une image de n'importe quelle taille. (Utilisez toujours l'API File lorsque la combinaison de fichiers et d'instructions système que vous souhaitez envoyer est supérieure à 20 Mo.)
Commencez par télécharger ce croquis d'un jetpack.
!curl -o jetpack.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg
Importez l'image à l'aide de
media.upload
et imprimer l'URI, qui servira de référence dans les appels de l'API Gemini.
# Upload the file and print a confirmation.
sample_file = genai.upload_file(path="jetpack.jpg",
display_name="Jetpack drawing")
print(f"Uploaded file '{sample_file.display_name}' as: {sample_file.uri}")
Vérifier l'importation du fichier image et obtenir les métadonnées
Vous pouvez vérifier que l'API a bien stocké le fichier importé et obtenir ses
métadonnées en appelant files.get
via le SDK. 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}")
Selon votre cas d'utilisation, vous pouvez stocker les URI dans des structures, telles que
dict
ou une base de données.
Requête avec l'image et le texte importés
Après avoir importé le fichier, vous pouvez effectuer des requêtes GenerateContent
qui font référence
l'URI de l'API File. Sélectionner le modèle génératif et lui fournir une requête textuelle
et l'image importée.
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Prompt the model with text and the previously uploaded image.
response = model.generate_content([sample_file, "Describe how this product might be manufactured."])
Markdown(">" + response.text)
Importez un ou plusieurs fichiers image stockés localement
Vous pouvez également importer vos propres fichiers. Vous pouvez télécharger et utiliser notre dessins de eaux infestées de piranha et un Pompier avec un chat.
Lorsque la combinaison de fichiers et d'instructions système que vous avez l'intention d'envoyer dépasse 20 Mo, importez ces fichiers à l'aide de l'API File, affiché précédemment. Les fichiers plus petits peuvent être appelés localement à partir du API Gemini:
import PIL.Image
sample_file_2 = PIL.Image.open('piranha.jpg')
sample_file_3 = PIL.Image.open('firefighter.jpg')
Notez que ces appels de données intégrés n'incluent pas la plupart des fonctionnalités disponibles via l'API File, par exemple pour obtenir des métadonnées de fichier, une liste ou supprimer des fichiers.
Requête avec plusieurs images
Vous pouvez fournir à l'API Gemini n'importe quelle combinaison d'images et de texte s'adaptent à la fenêtre de contexte du modèle. Cet exemple fournit un texte court et les trois images précédemment importées.
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
prompt = "Write an advertising jingle showing how the product in the first image could solve the problems shown in the second two images."
response = model.generate_content([prompt, sample_file, sample_file_2, sample_file_3])
Markdown(">" + response.text)
Obtenir le cadre de délimitation d'un objet
Vous pouvez demander au modèle les coordonnées des cadres de délimitation des objets.
dans les images. Pour la détection d'objets, le modèle Gemini a été entraîné pour fournir
ces coordonnées sous forme de largeurs ou de hauteurs relatives dans la plage [0,1]
, mises à l'échelle de
1 000 et converti en entier. En effet, les coordonnées fournies correspondent à
la version 1 000 x 1 000 de l'image d'origine, qui doit être reconvertie au format
de l'image d'origine.
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
prompt = "Return a bounding box for the piranha. \n [ymin, xmin, ymax, xmax]"
response = model.generate_content([piranha, prompt])
print(response.text)
Pour convertir ces coordonnées aux dimensions de l'image d'origine:
- Divisez chaque coordonnée de sortie par 1 000.
- Multipliez les coordonnées X par la largeur de l'image d'origine.
- Multipliez les coordonnées Y par la hauteur de l'image d'origine.
Requêtes vidéo
Dans ce tutoriel, vous allez importer une vidéo à l'aide de l'API File et générer à partir de ces images.
Détails techniques (vidéo)
Gemini 1.5 Pro et Flash acceptent jusqu'à environ une heure de données vidéo.
La vidéo doit utiliser l'un des types MIME de format vidéo suivants:
video/mp4
video/mpeg
video/mov
video/avi
video/x-flv
video/mpg
video/webm
video/wmv
video/3gpp
Le service File API extrait des images des vidéos à raison d'une image par seconde (FPS) et audio à 1 kbit/s, avec un seul canal, avec des codes temporels ajoutés toutes les secondes. Ces taux sont susceptibles de changer à l'avenir pour améliorer l'inférence.
Les trames individuelles comptent 258 jetons et l'audio 32 jetons par seconde. Avec métadonnées, chaque seconde de vidéo devient environ 300 jetons, soit un million de contexte peut contenir un peu moins d'une heure de vidéo.
Pour poser des questions sur des lieux horodatés, utilisez le format MM:SS
, où
les deux premiers chiffres représentent les minutes et les deux derniers chiffres représentent
secondes.
Pour des résultats optimaux, procédez comme suit :
- Utilisez une vidéo par requête.
- Si vous utilisez une seule vidéo, placez la requête textuelle après la vidéo.
Importer un fichier vidéo à l'aide de l'API File
L'API File accepte directement les formats de fichiers vidéo. Cet exemple utilise court film de la NASA "Jupiter's Great Red Spots Shrinks and Grows". Crédit: Goddard Space Flight Center (GSFC)/David Ladd (2018).
"La grande tâche rouge de Jupiter rétrécit et grandit" relève du domaine public et ne pas montrer de personnes identifiables. (Consignes relatives à l'utilisation des images et contenus multimédias de la NASA)
Commencez par récupérer le Short:
!wget https://storage.googleapis.com/generativeai-downloads/images/GreatRedSpot.mp4
Importez la vidéo à l'aide de l'API File et imprimez l'URI.
# Upload the video and print a confirmation.
video_file_name = "GreatRedSpot.mp4"
print(f"Uploading file...")
video_file = genai.upload_file(path=video_file_name)
print(f"Completed upload: {video_file.uri}")
Vérifier l'importation du fichier et vérifier l'état
Vérifiez que l'API a bien reçu les fichiers en appelant la méthode
files.get
.
import time
# Check whether the file is ready to be used.
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)
Requête avec une vidéo et du texte
Une fois que la vidéo importée est à l'état ACTIVE
, vous pouvez GenerateContent
qui spécifient l'URI de l'API File pour cette vidéo. Sélectionnez l'IA générative
avec la vidéo importée et une requête textuelle.
# Create the prompt.
prompt = "Summarize this video. Then create a quiz with answer key based on the information in the video."
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([video_file, prompt],
request_options={"timeout": 600})
# Print the response, rendering any Markdown
Markdown(response.text)
Reportez-vous aux codes temporels du contenu.
Vous pouvez utiliser les codes temporels au format MM:SS
pour faire référence à des moments spécifiques du
vidéo.
# Create the prompt.
prompt = "What are the examples given at 01:05 and 01:19 supposed to show us?"
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([prompt, video_file],
request_options={"timeout": 600})
print(response.text)
Transcrire la vidéo et fournir des descriptions visuelles
Si la vidéo n'est pas rythmée (seule une image par seconde est échantillonnée), il est possible de transcrire la vidéo avec des descriptions visuelles pour chaque plan.
# Create the prompt.
prompt = "Transcribe the audio, giving timestamps. Also provide visual descriptions."
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([prompt, video_file],
request_options={"timeout": 600})
print(response.text)
Répertorier les fichiers
Vous pouvez répertorier tous les fichiers importés avec l'API File et leurs URI à l'aide de la méthode
files.list_files()
# List all files
for file in genai.list_files():
print(f"{file.display_name}, URI: {file.uri}")
Supprimer des fichiers
Les fichiers importés à l'aide de l'API File sont automatiquement supprimés au bout de deux jours. Toi
vous pouvez également les supprimer manuellement à l'aide de files.delete()
.
# Delete file
genai.delete_file(video_file.name)
print(f'Deleted file {video_file.uri}')
Étape suivante
Ce guide vous explique comment utiliser
generateContent
et
pour générer des sorties textuelles
à partir d'entrées d'image et de vidéo. Pour en savoir plus,
consultez les ressources suivantes:
- Invite avec des fichiers multimédias: l'option L'API Gemini prend en charge les requêtes contenant du texte, des images, de l'audio et de la vidéo, appelées requêtes multimodales.
- Instructions relatives au système: Système vous permettent de contrôler le comportement du modèle en fonction besoins et cas d'utilisation.
- Conseils de sécurité: parfois, l'IA générative les modèles produisent des résultats inattendus, tels que des résultats inexacts, biaisées ou choquantes. Le post-traitement et l'évaluation humaine sont essentiels pour limiter le risque que ces sorties soient néfastes.