![]() |
![]() |
![]() |
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.
Przygotowanie przykładowego obrazu do przesłania:
curl -o image.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg
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.
Przygotuj przykładowy plik wideo do przesłania:
wget https://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4
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}")