Aufforderung mit Mediendateien


Auf ai.google.dev ansehen In Google Colab ausführen Quelle auf GitHub ansehen

Die Gemini API unterstützt Prompts mit Text-, Bild-, Audio- und Videodaten, was auch als multimodale Prompts bezeichnet wird. Das bedeutet, dass Sie diese Arten von Mediendateien in Ihre Prompts aufnehmen können. Bei kleinen Dateien können Sie das Gemini-Modell direkt auf eine lokale Datei verweisen, wenn Sie einen Prompt eingeben. Lade größere Dateien mit der File API hoch, bevor du sie in Prompts einfügst.

Mit der File API können Sie bis zu 20 GB an Dateien pro Projekt speichern, wobei jede Datei nicht größer als 2 GB ist. Dateien werden 48 Stunden gespeichert und können innerhalb dieses Zeitraums mit Ihrem API-Schlüssel generiert werden. Sie können nicht von der API heruntergeladen werden. Die Files API ist in allen Regionen, in denen die Gemini API verfügbar ist, kostenlos verfügbar.

Die File API verarbeitet Eingaben, die zum Generieren von Inhalten mit model.generateContent oder model.streamGenerateContent verwendet werden können. Informationen zu gültigen Dateiformaten (MIME-Typen) und unterstützten Modellen finden Sie unter Unterstützte Dateiformate.

In diesem Leitfaden wird beschrieben, wie du mit der File API Mediendateien hochlädst und sie in einen GenerateContent-Aufruf an die Gemini API einfügst. Weitere Informationen finden Sie in den Codebeispielen.

Hinweis: Projekt und API-Schlüssel einrichten

Bevor Sie die Gemini API (oder deren File API) aufrufen, müssen Sie Ihr Projekt einrichten und Ihren API-Schlüssel konfigurieren.

Prompts mit Bildern

In dieser Anleitung laden Sie mithilfe der File API ein Beispielbild hoch und verwenden es dann zum Generieren von Inhalten.

Bilddatei hochladen

Informationen zum Hochladen Ihrer eigenen Datei finden Sie im Abschnitt „Anhang“.

  1. Bereiten Sie ein Beispielbild zum Hochladen vor:

      curl -o image.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg
    
  2. Laden Sie diese Datei mit media.upload hoch, damit Sie mit anderen API-Aufrufen darauf zugreifen können:

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

Der response zeigt, dass das hochgeladene Bild mit der angegebenen display_name gespeichert wird und eine uri hat, um in Gemini API-Aufrufen auf die Datei zu verweisen. Mit response können Sie verfolgen, wie hochgeladene Dateien URIs zugeordnet werden.

Je nach Anwendungsfall können Sie die URIs in Strukturen wie dict oder einer Datenbank speichern.

Metadaten der Bilddatei abrufen

Nach dem Hochladen der Datei können Sie prüfen, ob die API die Datei erfolgreich gespeichert hat und ihre Metadaten abrufen kann. Dazu rufen Sie files.get über das SDK auf.

Mit dieser Methode können Sie die Metadaten für eine hochgeladene Datei abrufen, die dem Google Cloud-Projekt zugeordnet ist, das mit Ihrem API-Schlüssel verknüpft ist. Nur die name (und damit auch die uri) sind eindeutig. Verwenden Sie display_name nur dann, um Dateien 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}")

Inhalte mit der hochgeladenen Bilddatei erstellen

Nach dem Hochladen des Bildes können Sie GenerateContent-Anfragen stellen, die in der Antwort auf uri verweisen (entweder durch Hochladen der Datei oder direkt durch Abrufen der Metadaten der Datei).

In diesem Beispiel erstellen Sie einen Prompt, der mit Text beginnt, gefolgt vom URI-Verweis für die hochgeladene Datei:

# 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)

Bilddatei löschen

Dateien werden nach 48 Stunden automatisch gelöscht. Sie können sie auch manuell mit files.delete über das SDK löschen.

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

Prompts mit Videos

In dieser Anleitung laden Sie ein Beispielvideo mithilfe der File API hoch und generieren damit Inhalte.

Videodatei hochladen

Die Gemini API akzeptiert direkt Videodateiformate. In diesem Beispiel wird der Kurzfilm „Big Buck Bunny“ verwendet.

"Big Buck Bunny" ist (c) Copyright 2008, Blender Foundation / www.bigbuckbunny.org und unter der Creative Commons Attribution 3.0 License lizenziert.

Informationen zum Hochladen Ihrer eigenen Datei finden Sie im Abschnitt „Anhang“.

  1. Bereite die Beispielvideodatei für den Upload vor:

    wget https://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4
    
  2. Laden Sie diese Datei mit media.upload hoch, damit Sie mit anderen API-Aufrufen darauf zugreifen können:

    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}")
    

Uploadstatus der Videodatei prüfen

Prüfen Sie, ob die Videodatei in die API hochgeladen wurde. Rufen Sie dazu die Methode files.get über das SDK auf.

Videodateien haben das Feld State aus der File API. Wenn ein Video hochgeladen wird, hat es den Status PROCESSING, bis es für die Inferenz bereit ist. Für die Modellinferenz können nur ACTIVE-Dateien verwendet werden.

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)

Metadaten der Videodatei abrufen

Sie können die Metadaten der hochgeladenen Videodatei jederzeit abrufen, indem Sie die Methode files.get über das SDK aufrufen.

Mit dieser Methode können Sie die Metadaten für eine hochgeladene Datei abrufen, die dem Google Cloud-Projekt zugeordnet ist, das mit Ihrem API-Schlüssel verknüpft ist. Nur die name (und damit auch die uri) sind eindeutig. Verwenden Sie display_name nur dann, um Dateien zu identifizieren, wenn Sie die Eindeutigkeit selbst verwalten.

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

Inhalte mit der hochgeladenen Videodatei erstellen

Nach dem Hochladen des Videos kannst du GenerateContent-Anfragen stellen, die in der Antwort auf uri verweisen (entweder durch Hochladen der Datei oder durch direktes Abrufen der Metadaten der Datei).

Prüfen Sie, ob Sie den Uploadstatus der Videodatei überprüft haben (siehe Abschnitt oben), bevor Sie eine Inferenz für das Video ausführen.

# 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)

Videodatei löschen

Dateien werden nach 48 Stunden automatisch gelöscht. Sie können sie auch manuell mit files.delete über das SDK löschen.

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

Unterstützte Dateiformate

Gemini-Modelle unterstützen Prompts in mehreren Dateiformaten. In diesem Abschnitt werden Überlegungen zur Verwendung allgemeiner Medienformate für Prompts erläutert, insbesondere Bild-, Audio-, Video- und Nur-Text-Dateien. Sie können Mediendateien nur bei bestimmten Modellversionen für Prompts verwenden, wie in der folgenden Tabelle gezeigt.

Modell Bilder Audio Video Nur-Text
Gemini 1.5 Pro (Version 008 und höher) ✔ (max. 3.600 Bilddateien)

Bildformate

Sie können Bilddaten für Prompts in Gemini 1.5-Modellen verwenden. Wenn Sie Bilder für Prompts verwenden, unterliegen sie den folgenden Einschränkungen und Anforderungen:

  • Bilder müssen einem der folgenden MIME-Typen für Bilddaten entsprechen:
    • PNG - image/png
    • JPEG - image/jpeg
    • WEBP - image/webp
    • HEIC - image/heic
    • HEIF - image/heif
  • Maximal 3.600 Bilder für die Gemini 1.5-Modelle.
  • Es gibt keine spezifischen Beschränkungen für die Anzahl der Pixel in einem Bild. Größere Bilder werden jedoch so verkleinert, dass sie eine maximale Auflösung von 3.072 × 3.072 erreichen und ihr ursprüngliches Seitenverhältnis erhalten bleibt.

Audioformate

Sie können Audiodaten für Prompts bei Gemini 1.5-Modellen verwenden. Wenn Sie Audio für Prompts verwenden, unterliegen sie den folgenden Einschränkungen und Anforderungen:

  • Für Audiodaten werden die folgenden gängigen MIME-Typen für das Audioformat unterstützt:
    • WAV – Audio/WAV
    • MP3 – Audio/MP3
    • AIFF – Audio/AIFF
    • AAC – Audio/AAC
    • OGG Vorbis – Audio/OGG
    • FLAC – Audio/FLAC
  • Die maximal unterstützte Länge von Audiodaten in einem einzelnen Prompt beträgt 9,5 Stunden.
  • Audiodateien werden auf eine Datenauflösung von 16 Kbit/s neu gesampelt und mehrere Audiokanäle werden zu einem einzigen Kanal zusammengefasst.
  • Die Anzahl der Audiodateien in einem einzelnen Prompt ist nicht begrenzt.Die Gesamtlänge aller Audiodateien in einem einzelnen Prompt darf jedoch 9, 5 Stunden nicht überschreiten.

Videoformate

Sie können Videodaten für Prompts mit den Gemini 1.5-Modellen verwenden.

  • Videodaten werden in den folgenden gängigen MIME-Typen für Videoformate unterstützt:

    • video/mp4
    • video/mpeg
    • Video/MOV
    • Video/AVI
    • video/x-flv
    • Video/mpg
    • Video/WebM
    • Video/WMV
    • Video/3GPP
  • Der File API-Dienst analysiert Videos mit 1 Frame pro Sekunde (fps) und kann Änderungen unterliegen, um die beste Inferenzqualität zu erzielen. Einzelne Bilder benötigen unabhängig von Auflösung und Qualität 258 Tokens.

Nur-Text-Formate

Die File API unterstützt das Hochladen von Nur-Text-Dateien mit den folgenden MIME-Typen:

  • text/plain
  • text/html
  • text/css
  • text/javascript
  • application/x-javascript
  • Text/X-Typskript
  • Anwendung/X-Typscript
  • text/csv
  • Text/Markierung
  • Text/X-Python
  • application/x-python-code
  • application/json
  • text/xml
  • Anwendung/RTF
  • Text/RTF

Für reine Textdateien mit einem MIME-Typ, der nicht in der Liste aufgeführt ist, können Sie versuchen, einen der oben genannten MIME-Typen manuell anzugeben.

Anhang: Dateien in Colab hochladen

Dieses Notebook verwendet die File API mit Dateien, die aus dem Internet heruntergeladen wurden. Wenn Sie dies in Colab ausführen und Ihre eigenen Dateien verwenden möchten, müssen Sie sie zuerst auf die Colab-Instanz hochladen.

Klicken Sie zuerst in der linken Seitenleiste auf Dateien und dann auf die Schaltfläche Hochladen:

Als Nächstes laden Sie diese Datei in die File API hoch. Geben Sie im Formular für die Codezelle unten den Dateinamen für die hochgeladene Datei ein und geben Sie einen entsprechenden Anzeigenamen für die Datei an. Führen Sie dann die Zelle aus.

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}")