Gemini API ile görüş özelliklerini keşfedin

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:

  1. Her çıkış koordinatını 1000'e bölün.
  2. X koordinatlarını orijinal resmin genişliğiyle çarpın.
  3. 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.