<ph type="x-smartling-placeholder">
Auf ai.google.dev ansehen | Colab-Notebook testen | Notebook auf GitHub ansehen |
Die Gemini API kann Inferenzen auf Bilder und Videos ausführen, die an sie übergeben werden. Wenn bestanden eine Reihe von Bildern oder Videos enthält, kann Gemini Folgendes tun:
- Fragen zum Inhalt beschreiben oder beantworten
- Inhalt zusammenfassen
- Extrapolation aus dem Inhalt
In diesem Tutorial werden einige Möglichkeiten gezeigt, wie Sie die Gemini API mit Bild- und Videoeingabe. Die Ausgabe erfolgt ausschließlich in Textform.
Hinweis: Projekt und API-Schlüssel einrichten
Bevor Sie die Gemini API aufrufen, müssen Sie Ihr Projekt einrichten und konfigurieren Ihren API-Schlüssel.
Prompts mit Bildern
In dieser Anleitung laden Sie Bilder über die File API oder als Inline-Daten hoch. und Inhalte auf der Grundlage dieser Bilder zu generieren.
Technische Details (Bilder)
Gemini 1.5 Pro und Flash 1.5 unterstützen maximal 3.600 Bilddateien.
Bilder müssen einen der folgenden MIME-Typen für Bilddaten haben:
- PNG -
image/png
- JPEG -
image/jpeg
- WebP –
image/webp
- HEIC –
image/heic
- HEIF –
image/heif
Jedes Image entspricht 258 Tokens.
Es gibt keine spezifischen Beschränkungen für die Anzahl der Pixel in einem Bild, außer des Kontextfensters des Modells ab, werden größere Bilder auf ein Maximum mit einer Auflösung von 3072 x 3072 unter Beibehaltung des ursprünglichen Seitenverhältnisses, während kleinere Bilder auf 768 x 768 Pixel skaliert werden. Es gibt keine Kostensenkung. für Bilder mit niedrigeren Größen als Bandbreite oder Leistungsverbesserung. für Bilder mit höherer Auflösung.
Für optimale Ergebnisse:
- Drehen Sie Bilder vor dem Hochladen in die richtige Ausrichtung.
- Vermeiden Sie verschwommene Bilder.
- Wenn du ein einzelnes Bild verwendest, platziere den Text-Prompt nach dem Bild.
Bilddatei mithilfe der File API hochladen
Verwenden Sie die File API, um ein Bild beliebiger Größe hochzuladen. (Verwenden Sie in den folgenden Fällen immer die File API. Die Kombination aus Dateien und Systemanweisungen, die Sie senden möchten, ist größer als 20 MB ist.
Laden Sie zuerst Folgendes herunter: Skizze eines Jetpacks.
!curl -o jetpack.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg
Laden Sie das Bild mit
media.upload
und geben Sie den URI aus, der als Referenz in Gemini API-Aufrufen verwendet wird.
# 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}")
Upload von Bilddateien überprüfen und Metadaten abrufen
Sie können prüfen, ob die API die hochgeladene Datei erfolgreich gespeichert hat und
durch Aufrufen von files.get
über das SDK. Nur die name
(und somit auch die uri
) sind eindeutig. Verwenden Sie
display_name
, um Dateien nur zu identifizieren, wenn Sie die Eindeutigkeit selbst verwalten.
file = genai.get_file(name=sample_file.name)
print(f"Retrieved file '{file.display_name}' as: {sample_file.uri}")
Je nach Anwendungsfall können Sie die URIs in Strukturen wie einem
dict
oder eine Datenbank.
Aufforderung mit dem hochgeladenen Bild und Text
Nach dem Hochladen der Datei können Sie GenerateContent
-Anfragen stellen, die darauf verweisen
Datei-API-URI Generatives Modell auswählen und mit einem Text-Prompt versehen
und das hochgeladene Bild.
# 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)
Eine oder mehrere lokal gespeicherte Bilddateien hochladen
Alternativ können Sie Ihre eigenen Dateien hochladen. Sie können unsere Zeichnungen von von Piranha geprägte Gewässer und Feuerwehrmann mit Katze.
Wenn die Kombination aus Dateien und Systemanweisungen, die Sie senden möchten, größer als 20 MB ist, verwenden Sie zum Hochladen dieser Dateien das File API. die zuvor angezeigt wurden. Kleinere Dateien können stattdessen lokal aus dem Gemini API:
import PIL.Image
sample_file_2 = PIL.Image.open('piranha.jpg')
sample_file_3 = PIL.Image.open('firefighter.jpg')
Beachten Sie, dass diese Inline-Datenaufrufe nicht viele der verfügbaren Funktionen über die File API, z. B. das Abrufen von Dateimetadaten, Einträge oder Löschen von Dateien.
Prompt mit mehreren Bildern
Sie können der Gemini API eine beliebige Kombination aus Bildern und Text zur Verfügung stellen, in das Kontextfenster des Modells passen. Dieses Beispiel enthält einen kurzen Text, und die drei zuvor hochgeladenen Bilder.
# 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)
Begrenzungsrahmen für ein Objekt abrufen
Sie können das Modell nach den Koordinaten von Begrenzungsrahmen für Objekte fragen.
in Bildern. Für die Objekterkennung wurde das Gemini-Modell so trainiert,
diese Koordinaten als relative Breiten oder Höhen im Bereich [0,1]
, skaliert um
1000 und in eine Ganzzahl konvertiert. Die angegebenen Koordinaten beziehen sich
1000 x 1000 große Version des Originalbilds. Das Bild muss in das Format
Abmessungen des Originalbilds.
# 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)
So konvertieren Sie diese Koordinaten in die Abmessungen des Originalbilds:
- Teilen Sie jede Ausgabekoordinate durch 1.000.
- Die X-Koordinaten werden mit der ursprünglichen Bildbreite multipliziert.
- Die Y-Koordinaten werden mit der Höhe des ursprünglichen Bildes multipliziert.
Prompt per Video
In dieser Anleitung laden Sie ein Video über die File API hoch und generieren auf diesen Bildern basieren.
Technische Details (Video)
Gemini 1.5 Pro und Flash unterstützen Videodaten von bis zu einer Stunde.
Das Video muss in einem der folgenden MIME-Typen für Videos vorliegen:
video/mp4
video/mpeg
video/mov
video/avi
video/x-flv
video/mpg
video/webm
video/wmv
video/3gpp
Der File API-Dienst extrahiert Bilder mit einem Frame pro Sekunde aus Videos. (fps) und Audio mit 1 Kbit/s, einzelner Kanal, wobei jede Sekunde Zeitstempel hinzugefügt werden. Diese Preise können sich aufgrund von Verbesserungen bei der Inferenz in Zukunft ändern.
Einzelne Frames belaufen sich auf 258 Tokens und Audios mit 32 Tokens pro Sekunde. Mit wird jede Sekunde des Videos zu ~300 Tokens, was bedeutet, Fenster können etwas weniger als eine Stunde Videomaterial passen.
Wenn Sie Fragen zu Orten mit Zeitstempel stellen möchten, verwenden Sie das Format MM:SS
, wobei
die ersten beiden Ziffern Minuten und die letzten beiden Ziffern
Sekunden.
Für optimale Ergebnisse:
- Verwende ein Video pro Prompt.
- Wenn du nur ein Video verwendest, platziere die Textaufforderung nach dem Video.
Videodatei mithilfe der File API hochladen
Die File API akzeptiert direkt Videodateiformate. In diesem Beispiel wird die Methode Kurzfilm über die NASA „Jupiter's Great Red Spot Shrinks and Grows“. Bildrechte: Goddard Space Flight Center (GSFC)/David Ladd (2018).
„Jupiter's Great Red Fleck schrumpft und wächst“ ist frei von Urheberrechten. keine identifizierbaren Personen zu sehen sind. (NASA-Richtlinien zur Verwendung von Bildern und Medien)
Rufen Sie zuerst das kurze Video ab:
!wget https://storage.googleapis.com/generativeai-downloads/images/GreatRedSpot.mp4
Lade das Video über die File API hoch und gib den URI aus.
# 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}")
Datei-Upload und Status prüfen
Prüfen Sie, ob die API die Dateien erfolgreich erhalten hat, indem Sie die Methode
files.get
-Methode.
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)
Prompt mit einem Video und Text
Sobald das hochgeladene Video den Status ACTIVE
hat, kannst du GenerateContent
-Anfragen, in denen der File API-URI für dieses Video angegeben wird. Generatives Modell auswählen
und stellen Sie das hochgeladene Video sowie einen Text-Prompt bereit.
# 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)
Zeitstempel im Inhalt
Du kannst Zeitstempel im Format MM:SS
verwenden, um auf bestimmte Momente im
Video.
# 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)
Video transkribieren und visuelle Beschreibungen bereitstellen
Wenn das Video nicht schnelllebig ist (nur 1 Frame pro Sekunde des Videos wird verwendet), kann das Video mit visuellen Beschreibungen für jede Aufnahme transkribiert werden.
# 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)
Dateien auflisten
Sie können alle mit der File API hochgeladenen Dateien und ihre URIs mit dem Befehl
files.list_files()
# List all files
for file in genai.list_files():
print(f"{file.display_name}, URI: {file.uri}")
Dateien löschen
Dateien, die mit der File API hochgeladen wurden, werden nach zwei Tagen automatisch gelöscht. Ich
können sie auch manuell mit files.delete()
löschen.
# Delete file
genai.delete_file(video_file.name)
print(f'Deleted file {video_file.uri}')
Nächste Schritte
In diesem Leitfaden erfahren Sie, wie Sie
generateContent
und
zum Generieren von Textausgaben aus Bild- und Videoeingaben. Weitere Informationen
finden Sie in den folgenden Ressourcen:
- Prompts mit Mediendateien: Die Die Gemini API unterstützt Prompts mit Text-, Bild-, Audio- und Videodaten sowie als multimodale Prompts.
- Systemanleitung: System können Sie das Verhalten des Modells auf Ihre spezifischen Anforderungen und Anwendungsfälle.
- Sicherheitshinweise: Manchmal mit generativer KI dass Modelle unerwartete Ausgaben erzeugen, z. B. ungenaue, voreingenommen oder anstößig ist. Die Nachbearbeitung und menschliche Bewertung sind das Risiko von Schäden durch solche Ausgaben zu begrenzen.