Meminta dengan file media


Lihat di ai.google.dev Berjalan di Google Colab Lihat sumber di GitHub

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.

  1. Siapkan gambar contoh yang akan diupload:

      curl -o image.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg
    
  2. 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.

  1. Siapkan file video sampel untuk diupload:

    wget https://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4
    
  2. 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}")