Pytania dotyczące plików multimedialnych


Wyświetl na ai.google.dev Uruchom w Google Colab Wyświetl źródło w GitHubie

Interfejs Gemini API obsługuje prompty zawierające dane tekstowe, graficzne, dźwiękowe i wideo, nazywane też promptami multimodalnymi, co oznacza, że możesz uwzględniać w promptach takie typy plików multimedialnych. W przypadku małych plików, podając prompt, możesz wskazać modelowi Gemini bezpośrednio plik lokalny. Zanim umieścisz większe pliki w promptach, prześlij je za pomocą interfejsu File API.

Interfejs File API umożliwia przechowywanie do 20 GB plików na projekt, przy czym rozmiar każdego pliku nie przekracza 2 GB. Pliki są przechowywane przez 48 godzin i można uzyskać do nich dostęp za pomocą klucza interfejsu API i wygenerować je w tym okresie. Nie można ich pobrać z interfejsu API. Interfejs Files API jest dostępny bezpłatnie we wszystkich regionach, w których dostępny jest interfejs Gemini API.

Interfejs File API obsługuje dane wejściowe, których można używać do generowania treści za pomocą funkcji model.generateContent lub model.streamGenerateContent. Informacje o prawidłowych formatach plików (typach MIME) i obsługiwanych modelach znajdziesz w artykule Obsługiwane formaty plików.

Z tego przewodnika dowiesz się, jak przesyłać pliki multimedialne za pomocą interfejsu File API i uwzględniać je w wywołaniu GenerateContent do interfejsu Gemini API. Więcej informacji znajdziesz w przykładowym kodzie.

Zanim zaczniesz: skonfiguruj projekt i klucz interfejsu API

Zanim wywołasz Gemini API (lub jego interfejs File API), musisz skonfigurować swój projekt i klucz interfejsu API.

Prompty obrazami

W tym samouczku prześlesz przykładowy obraz za pomocą interfejsu File API, a potem użyjesz go do wygenerowania treści.

Prześlij plik obrazu

Informacje o tym, jak przesłać własny plik, znajdziesz w sekcji Dodatek.

  1. Przygotowanie przykładowego obrazu do przesłania:

      curl -o image.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg
    
  2. Prześlij ten plik za pomocą narzędzia media.upload, aby mieć do niego dostęp przy użyciu innych wywołań interfejsu 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 wskazuje, że przesłany obraz jest przechowywany z podaną wartością display_name i że zawiera uri odwołujący się do pliku w wywołaniach interfejsu Gemini API. response pozwala śledzić sposób mapowania przesłanych plików na identyfikatory URI.

W zależności od przypadku użycia możesz przechowywać identyfikatory URI w strukturach, np. dict lub baza danych.

Pobieranie metadanych pliku obrazu

Po przesłaniu pliku możesz sprawdzić, czy interfejs API prawidłowo go zapisał i uzyskać jego metadane, wywołując files.get za pomocą pakietu SDK.

Ta metoda umożliwia pobranie metadanych przesłanego pliku powiązanego z projektem Google Cloud połączonym z Twoim kluczem interfejsu API. Tylko name (i uri) są unikalne. display_name służy do identyfikowania plików tylko wtedy, gdy samodzielnie zarządzasz niepowtarzalnością.

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

Generowanie treści na podstawie przesłanego pliku graficznego

Po przesłaniu obrazu możesz wysyłać żądania GenerateContent, które będą odnosić się do elementu uri w odpowiedzi (poprzez przesłanie pliku lub bezpośrednie uzyskanie jego metadanych).

W tym przykładzie utworzysz prompt rozpoczynający się od tekstu, po którym następuje odwołanie do identyfikatora URI przesłanego pliku:

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

Usuń plik obrazu

Pliki są automatycznie usuwane po 48 godzinach. Możesz też usunąć je ręcznie, korzystając z files.delete za pomocą pakietu SDK.

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

Prompty wideo

W tym samouczku prześlesz przykładowy film za pomocą interfejsu File API, a potem użyjesz go do wygenerowania treści.

Prześlij plik wideo

Interfejs Gemini API akceptuje bezpośrednio formaty plików wideo. W tym przykładzie wykorzystano krótki film „Big Buck Bunny”.

„Big Buck Bunny” jest (c) prawami autorskimi z 2008 r., Blender Foundation / www.bigbuckbunny.org i licencjonowany na licencji Creative Commons Uznanie autorstwa 3.0.

Informacje o tym, jak przesłać własny plik, znajdziesz w sekcji Dodatek.

  1. Przygotuj przykładowy plik wideo do przesłania:

    wget https://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4
    
  2. Prześlij ten plik za pomocą narzędzia media.upload, aby mieć do niego dostęp przy użyciu innych wywołań interfejsu 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}")
    

Sprawdzanie stanu przesyłania pliku wideo

Sprawdź, czy interfejs API przesłał plik wideo, wywołując metodę files.get za pomocą pakietu SDK.

Pliki wideo zawierają pole State z interfejsu File API. Po przesłaniu film będzie w stanie PROCESSING, dopóki nie będzie gotowy do wnioskowania. Do wnioskowania modelu można używać tylko plików ACTIVE.

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)

Pobieranie metadanych pliku wideo

W każdej chwili możesz pobrać metadane przesłanego pliku wideo, wywołując metodę files.get za pomocą pakietu SDK.

Ta metoda umożliwia pobranie metadanych przesłanego pliku powiązanego z projektem Google Cloud połączonym z Twoim kluczem interfejsu API. Tylko name (i uri) są unikalne. display_name służy do identyfikowania plików tylko wtedy, gdy samodzielnie zarządzasz niepowtarzalnością.

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

Generowanie treści na podstawie przesłanego pliku wideo

Po przesłaniu filmu możesz wysyłać żądania GenerateContent, które odwołują się w odpowiedzi do elementu uri (przesyłając plik lub bezpośrednio uzyskując jego metadane).

Zanim uruchomisz wnioskowanie na temat filmu, sprawdź, czy został zweryfikowany stan przesyłania pliku wideo (sekcja powyżej).

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

Usuń plik wideo

Pliki są automatycznie usuwane po 48 godzinach. Możesz też usunąć je ręcznie, korzystając z files.delete za pomocą pakietu SDK.

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

Obsługiwane formaty plików

Modele Gemini obsługują prompty w różnych formatach plików. W tej sekcji omawiamy aspekty używania ogólnych formatów multimedialnych do tworzenia promptów, w szczególności w plikach graficznych, audio, wideo i zwykłych tekstach. Plików multimedialnych możesz używać do wyświetlania promptów tylko w przypadku określonych wersji modelu, jak pokazano w tabeli poniżej.

Model Obrazy, Dźwięk Film Zwykły tekst
Gemini 1.5 Pro (wersja 008 i nowsze) ✔ (pliki graficzne obsługujące maks. 3600 pikseli)

Formaty graficzne

Do tworzenia promptów w modelach Gemini 1.5 możesz używać danych graficznych. Gdy używasz obrazów do tworzenia promptów, obowiązują te ograniczenia i wymagania:

  • Obrazy muszą być zapisane w jednym z tych typów MIME danych obrazu:
    • PNG – obraz/png
    • JPEG – obraz/jpeg
    • WEBP – obraz/webp
    • HEIC – image/heic
    • HEIF – obraz/heif
  • Maksymalnie 3600 obrazów w przypadku modeli Gemini 1.5.
  • Nie ma konkretnych ograniczeń co do liczby pikseli na obrazie. Jednak większe obrazy są skalowane w dół, by pasowały do maksymalnej rozdzielczości 3072 x 3072 piksele, zachowując jednocześnie oryginalne proporcje.

Formaty audio

Do tworzenia promptów w modelach Gemini 1.5 możesz używać danych dźwiękowych. Jeśli do wyświetlania promptów używasz dźwięku, podlegają one tym ograniczeniom i wymaganiom:

  • Dane audio są obsługiwane w następujących typach audio:
    • WAV – audio/WAV
    • MP3 – audio/mp3
    • AIFF – audio/aiff
    • AAC – audio/AAC
    • OGG Vorbis – audio/ogg
    • FLAC – audio/flac
  • Maksymalna obsługiwana długość danych audio w pojedynczym promptie to 9,5 godziny.
  • Pliki audio są przeformatowane do 16 kb/s w rozdzielczości danych, a wiele kanałów audio jest połączonych w jeden kanał.
  • Nie ma konkretnego limitu liczby plików audio w jednym promptie, jednak łączna długość wszystkich plików audio w jednym promptie nie może przekraczać 9,5 godziny.

Formaty reklam w kampaniach wideo

Do wyświetlania promptów w modelach Gemini 1.5 możesz używać danych wideo.

  • Dane wideo są obsługiwane w następujących typach MIME wideo:

    • video/mp4
    • film/mpeg
    • wideo/ruchome
    • wideo/avi
    • video/x-flv
    • film/mpg
    • wideo/webm
    • wideo/wmv
    • wideo/3GPP
  • Usługa File API próbkuje filmy w obrazy z szybkością 1 klatki na sekundę (FPS) i może ulec zmianie w celu zapewnienia najlepszej jakości wnioskowania. Pojedyncze obrazy zajmują 258 tokenów niezależnie od rozdzielczości i jakości.

Formaty zwykłego tekstu

Interfejs File API obsługuje przesyłanie zwykłych plików tekstowych w tych typach MIME:

  • tekstowa/zwykły
  • text/html
  • text/css
  • text/javascript
  • application/x-javascript
  • text/x-typescript
  • aplikacja/x-typescript
  • tekst/csv
  • tekst/znaczniki
  • tekst/x-python
  • application/x-python-code
  • application/json
  • text/xml
  • aplikacja/rtf
  • tekst/rtf

W przypadku plików tekstowych, których typ MIME nie znajduje się na liście, możesz spróbować ręcznie określić jeden z powyższych typów MIME.

Dodatek: przesyłanie plików do Colab

Ten notatnik korzysta z interfejsu File API do obsługi plików pobranych z internetu. Jeśli uruchamiasz tę funkcję w Colab i chcesz używać własnych plików, musisz najpierw przesłać je do instancji Colab.

Najpierw kliknij Pliki na lewym pasku bocznym, a potem kliknij przycisk Prześlij:

Następnie prześlij ten plik do interfejsu File API. W formularzu komórki z kodem wpisz nazwę przesłanego pliku i odpowiednią wyświetlaną nazwę, a następnie uruchom komórkę.

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