ai.google.dev'de görüntüleyin | Colab not defterini deneyin | GitHub'da not defterini görüntüle |
Gemini API, kendisine geçirilen görüntüler ve videolar üzerinde çıkarım yapabilir. Geçildiğinde bir resim, bir dizi resim veya video kullanıyorsanız Gemini şunları yapabilir:
- İçerikle ilgili soruları açıklayın veya yanıtlayın.
- İçeriği özetleyin
- İçerikten çıkarım yapın
Bu eğitimde, Gemini API'yi kullanarak istemde bulunmanın bazı olası yolları gösterilmektedir resim ve video girişi. Tüm çıktılar yalnızca metin şeklindedir.
Başlamadan önce: Projenizi ve API anahtarınızı oluşturun
Gemini API'yi çağırmadan önce projenizi ayarlamanız ve API anahtarınız.
Resimlerle istem gönderme
Bu eğiticide, görüntüleri File API'yi kullanarak veya satır içi veri olarak yükleyeceksiniz. ve bu resimlere göre içerik oluşturabilirsiniz.
Teknik ayrıntılar (resimler)
Gemini 1.5 Pro ve 1.5 Flash en fazla 3.600 resim dosyasını destekler.
Resimler aşağıdaki resim verisi MIME türlerinden birinde olmalıdır:
- PNG -
image/png
- JPEG -
image/jpeg
- WEBP -
image/webp
- HEIC -
image/heic
- HEIF -
image/heif
Her resim, 258 jetona eşdeğerdir.
Bir resimde piksel sayısı için özel bir sınırlama olmasa da daha büyük görseller küçültülür ve böylece modelin bağlam penceresine 3072x3072 çözünürlükteki orijinal en boy oranı korunurken daha küçük resimler 768x768 piksele kadar ölçeklendirilir. Maliyet indirimi yok bant genişliği dışında daha düşük boyutlardaki resimler için veya performans iyileştirmesi yüksek çözünürlüklü resimler için.
En iyi sonuçlar için:
- Yüklemeden önce resimleri doğru yönde döndürün.
- Bulanık resimler kullanmaktan kaçının.
- Tek bir resim kullanıyorsanız metin istemini görselin arkasına yerleştirin.
File API'yi kullanarak resim dosyası yükleme
İstediğiniz boyutta bir resim yüklemek için File API'yi kullanın. ( göndermek istediğiniz dosya ve sistem talimatlarının birleşimi 20 MB'tan büyük olmalıdır.)
Bunu indirerek başlayın jetpack çizimi.
!curl -o jetpack.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg
Resmi şununla yükleyin:
media.upload
ve Gemini API çağrılarında referans olarak kullanılan URI'yı yazdırabilirsiniz.
# 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}")
Resim dosyası yüklemesini doğrulama ve meta verileri alma
API'nin yüklenen dosyayı başarıyla depoladığını doğrulayabilir ve dosyanın
files.get
yöntemini çağırarak meta verileri
bunu SDK'da yapabilirsiniz. Yalnızca name
(ve buna bağlı olarak uri
) benzersizdir. Tekliflerinizi otomatikleştirmek ve optimize etmek için
Yalnızca benzersizliği kendiniz yönetiyorsanız dosyaları tanımlamak için display_name
.
file = genai.get_file(name=sample_file.name)
print(f"Retrieved file '{file.display_name}' as: {sample_file.uri}")
Kullanım alanınıza bağlı olarak URI'ları yapılarda depolayabilirsiniz:
dict
veya bir veritabanı.
Yüklenen resim ve metinle sor
Dosyayı yükledikten sonra referans içeren GenerateContent
istekte bulunabilirsiniz
File API URI'sı. Üretken modeli seçip metin istemiyle gönderin.
ve yüklenen resimdir.
# 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)
Yerel olarak depolanan bir veya daha fazla resim dosyasını yükleyin
Alternatif olarak, kendi dosyalarınızı da yükleyebilirsiniz. Bizimle iletişime geçmek için çizimleri piranha istilalı sular ve kedi ve itfaiyeci.
Göndermeyi planladığınız dosya ve sistem talimatları kombinasyonu dosya boyutu 20 MB'tan büyükse, bu dosyaları yüklemek için File API daha önce gösterildi. Daha küçük dosyalar bunun yerine Gemini API'si:
import PIL.Image
sample_file_2 = PIL.Image.open('piranha.jpg')
sample_file_3 = PIL.Image.open('firefighter.jpg')
Bu satır içi veri çağrılarının, kullanılabilecek özelliklerin çoğunu içermediğini unutmayın. Örneğin Dosya API'si üzerinden dosya meta verilerini, listeleme veya dosyaları silme.
Birden fazla resim içeren istem
Gemini API'ye istediğiniz resim ve metin kombinasyonunu modelin bağlam penceresine sığdırır. Bu örnekte tek bir kısa metin istemi ve daha önce yüklenen üç resmi gösterir.
# 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)
Bir nesne için sınırlayıcı kutu alma
Modelden, nesnelere ilişkin sınırlayıcı kutuların koordinatlarını isteyebilirsiniz.
görsellerdir. Gemini modeli, nesne algılama için
bu koordinatlar, [0,1]
aralığındaki göreli genişlik veya yükseklik olarak,
ve bir tam sayıya dönüştürülür. Verilen koordinatlar, doğru şekilde,
ve orijinal resmin 1000x1000 boyutundaki
orijinal resmin boyutlarını içerir.
# 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)
Bu koordinatları orijinal resmin boyutlarına dönüştürmek için:
- Her çıkış koordinatını 1000'e bölün.
- X koordinatlarını orijinal resmin genişliğiyle çarpın.
- Y koordinatlarını orijinal resmin yüksekliğiyle çarpın.
Video ile istem giriliyor
Bu eğiticide, File API'yi kullanarak bir video yükleyecek ve bu görsellere dayalı içerikler oluşturabilirsiniz.
Teknik ayrıntılar (video)
Gemini 1.5 Pro ve Flash, yaklaşık bir saate kadar video verilerini destekler.
Video, aşağıdaki video biçimi MIME türlerinden birinde olmalıdır:
video/mp4
video/mpeg
video/mov
video/avi
video/x-flv
video/mpg
video/webm
video/wmv
video/3gpp
File API hizmeti, videolardan resim çerçevelerini saniyede 1 kare hızında ayıklar (FPS) ve 1 Kb/sn. ses, tek kanalda, saniye başına zaman damgaları eklenir. Çıkarımdaki iyileştirmeler için bu oranlar gelecekte değiştirilebilir.
Bağımsız kareler 258 jetondur ve ses saniyede 32 jetondur. Entegre meta verilerde videonun her saniyesi yaklaşık 300 jetona dönüşür, yani 1 milyon içerik pencere bir saatten biraz daha kısa bir videoya sığabilir.
Zaman damgası bulunan yerler hakkında soru sormak için MM:SS
biçimini kullanın. Burada
ilk iki basamak dakikayı, son iki basamak ise dakikayı temsil eder
saniye.
En iyi sonuçlar için:
- İstem başına bir video kullanın.
- Tek bir video kullanıyorsanız videonun arkasına metin istemini yerleştirin.
File API'yi kullanarak video dosyası yükleme
File API, video dosyası biçimlerini doğrudan kabul eder. Bu örnekte, SSCS'nin kısa NASA filmi "Jupiter'in Büyük Kırmızı Noktası Küçülen ve Büyüyor". Kaynak: Goddard Space Flight Center (GSFC)/David Ladd (2018).
"Jupiter'in Büyük Kırmızı Noktası Küçülen ve Büyüyor" kamu alanındadır ve bir video reklam göstermeyin. (NASA görüntü ve medya kullanım yönergeleri.)
Kısa videoyu alarak başlayın:
!wget https://storage.googleapis.com/generativeai-downloads/images/GreatRedSpot.mp4
Videoyu File API'yi kullanarak yükleyin ve URI'yı yazdırın.
# 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}")
Dosya yüklemesini doğrulama ve durumu kontrol etme
files.get
yöntemini kullanabilirsiniz.
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)
Video ve metinle sor
Yüklenen video ACTIVE
durumuna geçtikten sonra GenerateContent
yapabilirsiniz.
bu videonun File API URI'sini belirten isteklerdir. Üretken yapay zekayı
modeli ile birlikte yüklenen videoyu ve metin istemini sağlayın.
# 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)
İçerikteki zaman damgalarına dikkat edin.
Şurada belirli anlara referans vermek için MM:SS
formunun zaman damgalarını kullanabilirsiniz:
videosunu izleyin.
# 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)
Videoyu metne dönüştürün ve görsel açıklamalar ekleyin
Video yüksek tempolu değilse (videonun saniyede yalnızca 1 karesinden örnek alınırsa) her çekimde görsel açıklamalarla videoyu metne dönüştürmek mümkün.
# 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)
Dosyaları listeleme
File API kullanılarak yüklenen tüm dosyaları ve bunların URI’lerini
files.list_files()
# List all files
for file in genai.list_files():
print(f"{file.display_name}, URI: {file.uri}")
Dosya silme
File API kullanılarak yüklenen dosyalar 2 gün sonra otomatik olarak silinir. Siz
bunları files.delete()
kullanarak manuel olarak da silebilirsiniz.
# Delete file
genai.delete_file(video_file.name)
print(f'Deleted file {video_file.uri}')
Sırada ne var?
Bu kılavuzda,
generateContent
ve
resim ve video girişlerinden metin çıkışları oluşturmak için kullanılır. Daha fazla bilgi edinmek için
şu kaynaklara göz atın:
- Medya dosyalarıyla istem kullanma: Gemini API, istemlerin yanı sıra metin, resim, ses ve video verilerini de çok modlu istem olarak adlandırılır.
- Sistem talimatları: Sistem talimatlar, modelin davranışını verilerinize göre yönlendirmenizi sağlar. kullanım alanlarını ele aldık.
- Güvenlik rehberliği: Bazen üretken yapay zeka modeller, hatalı çıkışlar gibi beklenmedik çıkışlar üretir. veya rahatsız edici tavırlar ortaya koyar. Değerlendirme süreci, proje yöneticileri için bu tür çıkışların zarar verme riskini azaltır.