Lihat di ai.google.dev | Coba notebook Colab | Lihat notebook di GitHub |
Gemini API dapat menjalankan inferensi pada gambar dan video yang diteruskan ke Gemini API. Jika lulus gambar, serangkaian gambar, atau video, Gemini dapat:
- Jelaskan atau jawab pertanyaan tentang konten
- Rangkum konten
- Ekstrapolasi dari konten
Tutorial ini menunjukkan beberapa kemungkinan cara untuk menjalankan perintah Gemini API dengan input gambar dan video. Semua output hanya berupa teks.
Sebelum memulai: Siapkan project dan kunci API Anda
Sebelum memanggil Gemini API, Anda perlu menyiapkan project dan mengonfigurasi kunci API Anda.
Perintah dengan gambar
Dalam tutorial ini, Anda akan mengupload gambar menggunakan File API atau sebagai data inline serta membuat konten berdasarkan gambar tersebut.
Detail teknis (gambar)
Gemini 1.5 Pro dan 1.5 Flash mendukung maksimum 3.600 file gambar.
Gambar harus dalam salah satu jenis MIME data gambar berikut:
- PNG -
image/png
- JPEG -
image/jpeg
- WEBP -
image/webp
- HEIC -
image/heic
- HEIF -
image/heif
Setiap gambar setara dengan 258 token.
Meskipun tidak ada batasan khusus untuk jumlah {i>pixel<i} dalam sebuah gambar selain jendela konteks model, gambar yang lebih besar diperkecil skalanya hingga resolusi 3072x3072 dengan tetap mempertahankan rasio aspek aslinya, sekaligus gambar yang lebih kecil diskalakan hingga 768x768 {i>pixel<i}. Tidak ada pengurangan biaya untuk gambar dengan ukuran yang lebih rendah, selain bandwidth, atau peningkatan performa untuk gambar dengan resolusi lebih tinggi.
Untuk hasil terbaik:
- Putar gambar ke orientasi yang benar sebelum mengupload.
- Hindari gambar yang buram.
- Jika menggunakan satu gambar, tempatkan perintah teks setelah gambar.
Mengupload file gambar menggunakan File API
Gunakan File API untuk mengupload gambar dalam berbagai ukuran. (Selalu gunakan File API saat kombinasi file dan instruksi sistem yang ingin Anda kirim adalah lebih dari 20 MB.)
Mulai dengan mendownload ini sketsa jetpack.
!curl -o jetpack.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg
Upload gambar menggunakan
media.upload
dan mencetak URI, yang digunakan sebagai referensi dalam panggilan Gemini API.
# Upload the file and print a confirmation.
sample_file = genai.upload_file(path="jetpack.jpg",
display_name="Jetpack drawing")
print(f"Uploaded file '{sample_file.display_name}' as: {sample_file.uri}")
Memverifikasi upload file gambar dan mendapatkan metadata
Anda dapat memverifikasi bahwa API berhasil menyimpan file yang diupload dan mendapatkan
metadata dengan memanggil files.get
melalui SDK. Hanya name
(dan dengan demikian, uri
) yang unik. Gunakan
display_name
untuk mengidentifikasi file hanya jika Anda mengelola keunikan sendiri.
file = genai.get_file(name=sample_file.name)
print(f"Retrieved file '{file.display_name}' as: {sample_file.uri}")
Bergantung pada kasus penggunaan, Anda bisa menyimpan URI dalam struktur, seperti
dict
atau database.
Perintah dengan gambar dan teks yang diupload
Setelah mengupload file, Anda dapat membuat GenerateContent
permintaan referensi tersebut
URI File API. Pilih model generatif dan berikan perintah teks
dan gambar yang diupload.
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Prompt the model with text and the previously uploaded image.
response = model.generate_content([sample_file, "Describe how this product might be manufactured."])
Markdown(">" + response.text)
Upload satu atau beberapa file gambar yang disimpan secara lokal
Atau, Anda dapat mengupload file Anda sendiri. Anda dapat mendownload dan menggunakan gambar perairan yang dipenuhi piranha dan pemadam kebakaran dengan seekor kucing.
Saat kombinasi file dan petunjuk sistem yang ingin Anda kirim berukuran lebih dari 20 MB, gunakan File API untuk mengunggah file tersebut, yang ditampilkan sebelumnya. File yang lebih kecil dapat dipanggil secara lokal dari API Gemini:
import PIL.Image
sample_file_2 = PIL.Image.open('piranha.jpg')
sample_file_3 = PIL.Image.open('firefighter.jpg')
Perlu diketahui bahwa panggilan data inline ini tidak menyertakan banyak fitur yang tersedia melalui File API, seperti mendapatkan metadata file, listingan, atau menghapus file.
Perintah dengan beberapa gambar
Anda dapat menyediakan Gemini API dengan kombinasi gambar dan teks yang sesuai dengan jendela konteks model. Contoh ini memberikan satu teks singkat dan tiga gambar yang telah diupload sebelumnya.
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
prompt = "Write an advertising jingle showing how the product in the first image could solve the problems shown in the second two images."
response = model.generate_content([prompt, sample_file, sample_file_2, sample_file_3])
Markdown(">" + response.text)
Mendapatkan kotak pembatas untuk suatu objek
Anda bisa meminta koordinat model untuk kotak pembatas objek
gambar. Untuk deteksi objek, model Gemini telah dilatih untuk memberikan
koordinat ini sebagai lebar atau tinggi relatif dalam rentang [0,1]
, yang diskalakan oleh
1000 dan dikonversi menjadi bilangan bulat. Secara efektif, koordinat yang diberikan adalah untuk
versi 1000x1000 dari gambar asli, dan harus dikonversi kembali ke
gambar asli.
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
prompt = "Return a bounding box for the piranha. \n [ymin, xmin, ymax, xmax]"
response = model.generate_content([piranha, prompt])
print(response.text)
Untuk mengonversi koordinat ini ke dimensi gambar asli:
- Bagi setiap koordinat output dengan 1000.
- Kalikan koordinat x dengan lebar gambar asli.
- Kalikan koordinat y dengan tinggi gambar asli.
Meminta dengan video
Dalam tutorial ini, Anda akan mengupload video menggunakan File API dan membuat konten berdasarkan gambar tersebut.
Detail teknis (video)
Gemini 1.5 Pro dan Flash mendukung hingga sekitar satu jam data video.
Video harus dalam salah satu jenis MIME format video berikut:
video/mp4
video/mpeg
video/mov
video/avi
video/x-flv
video/mpg
video/webm
video/wmv
video/3gpp
Layanan File API mengekstrak frame gambar dari video pada 1 frame per detik (FPS) dan audio dengan kecepatan 1 Kbps, satu saluran, dan menambahkan stempel waktu setiap detik. Kecepatan ini dapat berubah di masa mendatang untuk peningkatan inferensi.
Frame individu adalah 258 token, dan audio adalah 32 token per detik. Dengan metadata, setiap detik video menjadi ~300 token, yang berarti 1 juta konteks dapat memuat sedikit kurang dari satu jam video.
Untuk mengajukan pertanyaan tentang lokasi berstempel waktu, gunakan format MM:SS
, dengan
dua digit pertama mewakili menit
dan dua digit terakhir mewakili
detik.
Untuk hasil terbaik:
- Gunakan satu video per perintah.
- Jika menggunakan satu video, tempatkan perintah teks setelah video.
Mengupload file video menggunakan File API
File API menerima format file video secara langsung. Contoh ini menggunakan film pendek NASA "Titik Merah Besar Jupiter Menyusut dan Tumbuh". Kredit: Goddard Space Flight Center (GSFC)/David Ladd (2018).
"Titik Merah Besar Jupiter Menyusut dan Tumbuh" berada di domain publik dan tidak menampilkan orang yang dapat diidentifikasi. (Panduan penggunaan gambar dan media NASA.)
Memulai dengan mengambil video singkat:
!wget https://storage.googleapis.com/generativeai-downloads/images/GreatRedSpot.mp4
Upload video menggunakan File API dan cetak URI.
# Upload the video and print a confirmation.
video_file_name = "GreatRedSpot.mp4"
print(f"Uploading file...")
video_file = genai.upload_file(path=video_file_name)
print(f"Completed upload: {video_file.uri}")
Memverifikasi upload file dan memeriksa status
Verifikasi bahwa API sudah berhasil menerima file dengan memanggil
Metode files.get
.
import time
# Check whether the file is ready to be used.
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)
Perintah dengan video dan teks
Setelah video yang diupload memiliki status ACTIVE
, Anda dapat membuat GenerateContent
yang menetapkan URI File API untuk video tersebut. Pilih model
dan menyediakannya dengan video yang diupload dan prompt teks.
# Create the prompt.
prompt = "Summarize this video. Then create a quiz with answer key based on the information in the video."
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([video_file, prompt],
request_options={"timeout": 600})
# Print the response, rendering any Markdown
Markdown(response.text)
Lihat stempel waktu dalam konten
Anda dapat menggunakan stempel waktu formulir MM:SS
untuk merujuk ke momen tertentu dalam
video Anda.
# Create the prompt.
prompt = "What are the examples given at 01:05 and 01:19 supposed to show us?"
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([prompt, video_file],
request_options={"timeout": 600})
print(response.text)
Transkripsikan video dan berikan deskripsi visual
Jika video tidak tempo cepat (hanya 1 frame per detik dari video yang diambil sampelnya), Anda dapat mentranskripsikan video dengan deskripsi visual untuk setiap adegan.
# Create the prompt.
prompt = "Transcribe the audio, giving timestamps. Also provide visual descriptions."
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([prompt, video_file],
request_options={"timeout": 600})
print(response.text)
Mencantumkan file
Anda dapat menampilkan daftar semua file yang diupload menggunakan File API dan URI-nya menggunakan
files.list_files()
.
# List all files
for file in genai.list_files():
print(f"{file.display_name}, URI: {file.uri}")
Menghapus file
File yang diupload menggunakan File API akan otomatis dihapus setelah 2 hari. Anda
juga dapat menghapusnya secara manual menggunakan files.delete()
.
# Delete file
genai.delete_file(video_file.name)
print(f'Deleted file {video_file.uri}')
Langkah berikutnya
Panduan ini menunjukkan cara menggunakan
generateContent
dan
untuk menghasilkan output teks dari input gambar dan video. Untuk mempelajari lebih lanjut,
lihat referensi berikut:
- Membuat perintah dengan file media: Gemini API mendukung pembuatan perintah dengan data teks, gambar, audio, dan video, yang dikenal sebagai multimodal prompting.
- Petunjuk sistem: Sistem memungkinkan Anda mengarahkan perilaku model berdasarkan kebutuhan dan kasus penggunaan Anda.
- Panduan keamanan: Terkadang AI generatif menghasilkan output yang tidak diharapkan, misalnya output yang tidak akurat, bias, atau menyinggung. Pascapemrosesan dan evaluasi manual sangat penting untuk membatasi risiko bahaya dari {i>output<i} tersebut.