![]() |
![]() |
![]() |
Gemini API mendukung pembuatan perintah dengan data teks, gambar, audio, dan video, yang juga dikenal sebagai pembuatan perintah multimodal, yang berarti Anda dapat menyertakan jenis file media tersebut dalam perintah Anda. Untuk file kecil, Anda bisa mengarahkan model Gemini langsung ke file lokal saat memberikan perintah. Upload file yang lebih besar dengan File API sebelum menyertakannya pada perintah.
Dengan File API, Anda dapat menyimpan file hingga 20 GB per project, dengan setiap file berukuran tidak melebihi 2 GB. File disimpan selama 48 jam dan dapat diakses dengan kunci API Anda untuk dibuat dalam jangka waktu tersebut, dan tidak dapat didownload dari API. Files API tersedia secara gratis di semua wilayah tempat Gemini API tersedia.
File API menangani input yang dapat digunakan untuk menghasilkan konten dengan
model.generateContent
atau model.streamGenerateContent
. Untuk mengetahui informasi tentang
format file yang valid (jenis MIME) dan model yang didukung, lihat Format file
yang didukung.
Panduan ini menunjukkan cara menggunakan File API untuk mengupload file media dan menyertakannya
dalam panggilan GenerateContent
ke Gemini API. Untuk mengetahui informasi selengkapnya, lihat
contoh
kode.
Sebelum memulai: Siapkan project dan kunci API Anda
Sebelum memanggil Gemini API (atau File API-nya), Anda perlu menyiapkan project dan mengonfigurasi kunci API.
Perintah dengan gambar
Dalam tutorial ini, Anda akan mengupload gambar contoh menggunakan File API, lalu menggunakannya untuk membuat konten.
Upload file gambar
Lihat bagian Lampiran untuk mempelajari cara mengupload file Anda sendiri.
Siapkan gambar contoh yang akan diupload:
curl -o image.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg
Upload file tersebut menggunakan
media.upload
agar Anda dapat mengaksesnya dengan panggilan API lainnya: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
menunjukkan bahwa gambar yang diupload disimpan dengan display_name
yang ditentukan dan memiliki uri
untuk merujuk file dalam panggilan Gemini API. Gunakan
response
untuk melacak cara file yang diupload dipetakan ke URI.
Bergantung pada kasus penggunaan, Anda dapat menyimpan URI dalam struktur, seperti
dict
atau database.
Mendapatkan metadata file gambar
Setelah mengupload file, Anda dapat memverifikasi bahwa API berhasil menyimpan file
dan mendapatkan metadatanya dengan memanggil files.get
melalui SDK.
Metode ini memungkinkan Anda mendapatkan metadata untuk file yang diupload yang terkait dengan project Google Cloud yang ditautkan ke kunci API Anda. Hanya name
(dan dengan demikian juga
uri
) yang unik. Gunakan display_name
untuk mengidentifikasi file hanya jika Anda
mengelola keunikan Anda sendiri.
file = genai.get_file(name=sample_file.name)
print(f"Retrieved file '{file.display_name}' as: {sample_file.uri}")
Membuat konten menggunakan file gambar yang diupload
Setelah mengupload gambar, Anda dapat membuat permintaan GenerateContent
yang
mereferensikan uri
dalam respons (dari mengupload file atau langsung
mendapatkan metadata file).
Dalam contoh ini, Anda membuat perintah yang dimulai dengan teks, diikuti dengan referensi URI untuk file yang diupload:
# 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)
Menghapus file gambar
File akan otomatis dihapus setelah 48 jam. Anda juga dapat menghapusnya secara manual
menggunakan files.delete
melalui SDK.
genai.delete_file(sample_file.name)
print(f'Deleted {sample_file.display_name}.')
Meminta dengan video
Dalam tutorial ini, Anda akan mengupload video sampel menggunakan File API, lalu menggunakannya untuk membuat konten.
Upload file video
Gemini API menerima format file video secara langsung. Contoh ini menggunakan film pendek "Big Buck Bunny".
"Big Buck Bunny" adalah (c) hak cipta 2008, Blender Foundation / www.bigbuckbunny.org dan dilisensikan berdasarkan Lisensi Creative Commons Attribution 3.0.
Lihat bagian Lampiran untuk mempelajari cara mengupload file Anda sendiri.
Siapkan file video sampel untuk diupload:
wget https://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4
Upload file tersebut menggunakan
media.upload
agar Anda dapat mengaksesnya dengan panggilan API lainnya: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}")
Memverifikasi status upload file video
Pastikan API telah berhasil mengupload file video dengan memanggil
metode files.get
melalui SDK.
File video memiliki kolom State
dari File API. Saat diupload, video akan berada
dalam status PROCESSING
hingga siap untuk inferensi. Hanya file ACTIVE
yang dapat digunakan untuk inferensi model.
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)
Mendapatkan metadata file video
Anda bisa mendapatkan metadata file video yang diupload kapan saja dengan memanggil
metode files.get
melalui SDK.
Metode ini memungkinkan Anda mendapatkan metadata untuk file yang diupload yang terkait dengan project Google Cloud yang ditautkan ke kunci API Anda. Hanya name
(dan dengan demikian juga
uri
) yang unik. Gunakan display_name
untuk mengidentifikasi file hanya jika Anda
mengelola keunikan Anda sendiri.
file = genai.get_file(name=video_file.name)
print(f"Retrieved file '{file.display_name}' as: {video_file.uri}")
Membuat konten menggunakan file video yang diupload
Setelah mengupload video, Anda dapat membuat permintaan GenerateContent
yang
mereferensikan uri
dalam respons (dari mengupload file atau langsung
mendapatkan metadata file).
Pastikan Anda telah memverifikasi status upload file video (bagian di atas) sebelum menjalankan inferensi pada video.
# 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)
Menghapus file video
File akan otomatis dihapus setelah 48 jam. Anda juga dapat menghapusnya secara manual
menggunakan files.delete
melalui SDK.
genai.delete_file(file_response.name)
print(f'Deleted file {file_response.uri}')
Format file yang didukung
Model Gemini mendukung pembuatan perintah dengan berbagai format file. Bagian ini menjelaskan pertimbangan dalam menggunakan format media umum untuk permintaan, khususnya file gambar, audio, video, dan teks biasa. Anda dapat menggunakan file media hanya untuk perintah dengan versi model tertentu, seperti yang ditunjukkan pada tabel berikut.
Model | Gambar | Audio | Video | Teks biasa |
---|---|---|---|---|
Gemini 1.5 Pro (rilis 008 dan yang lebih baru) | ✔ (file gambar maksimal 3600) | ✔ | ✔ | ✔ |
Format gambar
Anda dapat menggunakan data gambar untuk membuat perintah dengan model Gemini 1.5. Saat Anda menggunakan gambar untuk perintah, hal tersebut tunduk pada batasan dan persyaratan berikut:
- Gambar harus berupa salah satu jenis
MIME data gambar berikut:
- PNG - gambar/png
- JPEG - gambar/jpeg
- WEBP - gambar/webp
- HEIC - image/heic
- HEIF - gambar/heif
- Maksimum 3600 gambar untuk model Gemini 1.5.
- Tidak ada batasan khusus untuk jumlah piksel dalam gambar; namun, gambar yang lebih besar akan diperkecil agar sesuai dengan resolusi maksimum 3072 x 3072 dengan mempertahankan rasio aspek aslinya.
Format audio
Anda dapat menggunakan data audio untuk membuat perintah dengan model Gemini 1.5. Saat Anda menggunakan audio untuk membuat perintah, keduanya tunduk pada batasan dan persyaratan berikut:
- Data audio didukung dalam jenis
MIME format audio umum berikut:
- WAV - audio/wav
- MP3 - audio/mp3
- AIFF - audio/aiff
- AAC - audio/aac
- OGG Vorbis - audio/ogg
- FLAC - audio/flac
- Panjang data audio maksimum yang didukung dalam satu perintah adalah 9,5 jam.
- File audio diambil ulang sampelnya menjadi resolusi data 16 Kbps, dan beberapa saluran audio digabungkan ke dalam satu saluran.
- Tidak ada batasan khusus untuk jumlah file audio dalam satu perintah; tetapi total durasi gabungan semua file audio dalam satu prompt tidak boleh melebihi 9, 5 jam.
Format video
Anda dapat menggunakan data video untuk membuat perintah dengan model Gemini 1.5.
Data video didukung dalam jenis MIME format video umum berikut:
- video/mp4
- video/mpeg
- video/mov
- video/avi
- video/x-flv
- video/mpg
- video/webm
- video/wmv
- video/3gpp
Layanan File API mengambil sampel video ke dalam gambar pada 1 frame per detik (FPS) dan dapat berubah sewaktu-waktu untuk memberikan kualitas inferensi terbaik. Setiap gambar menggunakan 258 token terlepas dari resolusi dan kualitas.
Format teks biasa
File API mendukung upload file teks biasa dengan jenis MIME berikut:
- text/plain
- text/html
- text/css
- text/javascript
- application/x-javascript
- teks/jenis skrip x
- aplikasi/x-typescript
- teks/csv
- teks/markdown
- teks/python-x
- application/x-python-code
- application/json
- text/xml
- aplikasi/rtf
- teks/rtf
Untuk file teks biasa dengan jenis MIME tidak ada dalam daftar, Anda dapat mencoba menentukan salah satu jenis MIME di atas secara manual.
Lampiran: Mengupload file ke Colab
Notebook ini menggunakan File API dengan file yang didownload dari internet. Jika Anda menjalankan ini di Colab dan ingin menggunakan file Anda sendiri, Anda harus menguploadnya ke instance Colab terlebih dahulu.
Pertama, klik File di sidebar kiri, lalu klik tombol Upload:
Selanjutnya, Anda akan mengupload file tersebut ke File API. Dalam formulir untuk sel kode di bawah, masukkan nama file untuk file yang Anda upload dan berikan nama tampilan yang sesuai untuk file tersebut, lalu jalankan sel.
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}")