Gemini API'yi kullanarak metin oluşturma

Gemini API, giriş olarak metin, resim, video ve ses sağlandığında metin çıkışı oluşturabilir.

Bu kılavuzda, generateContent ve streamGenerateContent yöntemleri kullanılarak metnin nasıl oluşturulacağı gösterilmektedir. Gemini'nin görüntü ve ses özellikleriyle çalışma hakkında bilgi edinmek için Görüntü ve Ses kılavuzlarına bakın.

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ı yapılandırmanız gerekir.

Yalnızca metin girişinden metin oluşturma

Gemini API'yi kullanarak metin oluşturmanın en basit yolu, modele bu örnekte gösterildiği gibi tek bir yalnızca metin girişi sağlamaktır:

model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("Write a story about a magic backpack.")
print(response.text)

Bu durumda istem ("Sihirli bir sırt çantasıyla ilgili bir hikaye yaz"), çıkış örnekleri, sistem talimatları veya biçimlendirme bilgileri içermez. Bu, sıfır görevli bir yaklaşımdır. Bazı kullanım durumlarında tek seferlik veya birkaç çekim istemi, kullanıcı beklentileriyle daha uyumlu çıktılar üretebilir. Bazı durumlarda, modelin görevi anlamasına veya belirli yönergeleri uygulamasına yardımcı olmak için sistem talimatları sağlamak da isteyebilirsiniz.

Metin ve resim girişinden metin oluştur

Gemini API, metni medya dosyalarıyla birleştiren çok formatlı girişleri destekler. Aşağıdaki örnekte, metin ve resim girişinden nasıl metin oluşturulacağı gösterilmektedir:

import PIL.Image

model = genai.GenerativeModel("gemini-1.5-flash")
organ = PIL.Image.open(media / "organ.jpg")
response = model.generate_content(["Tell me about this instrument", organ])
print(response.text)

Yalnızca metin istemlerinde olduğu gibi, çoklu modal istemler de çeşitli yaklaşımlar ve ayrıntılar içerebilir. Bu örnekteki çıktıya bağlı olarak isteminize adımlar ekleyebilir veya talimatlarınızda daha net olabilirsiniz. Daha fazla bilgi edinmek için Dosya istemi stratejileri başlıklı makaleyi inceleyin.

Metin akışı oluşturma

Varsayılan olarak model, metin oluşturma sürecinin tamamını tamamladıktan sonra bir yanıt döndürür. Sonucun tamamını beklemek yerine kısmi sonuçları işlemek için akış özelliğini kullanarak daha hızlı etkileşimler elde edebilirsiniz.

Aşağıdaki örnekte yalnızca metin giriş isteminden metin oluşturmak için streamGenerateContent yöntemini kullanarak akışın nasıl uygulanacağı gösterilmektedir.

model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("Write a story about a magic backpack.", stream=True)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Etkileşimli sohbet oluşturma

Kullanıcılarınıza etkileşimli sohbet deneyimleri sunmak için Gemini API'yi kullanabilirsiniz. API'nin sohbet özelliğini kullanarak birden fazla soru ve yanıt toplarsınız. Böylece kullanıcılar, yanıtlara adım adım yaklaşabilir veya birden fazla bölümden oluşan sorunlarla ilgili yardım alabilir. Bu özellik, chatbot'lar, etkileşimli eğitmenler veya müşteri desteği asistanları gibi sürekli iletişim gerektiren uygulamalar için idealdir.

Aşağıdaki kod örneğinde temel bir sohbet uygulaması gösterilmektedir:

model = genai.GenerativeModel("gemini-1.5-flash")
chat = model.start_chat(
    history=[
        {"role": "user", "parts": "Hello"},
        {"role": "model", "parts": "Great to meet you. What would you like to know?"},
    ]
)
response = chat.send_message("I have 2 dogs in my house.")
print(response.text)
response = chat.send_message("How many paws are in my house?")
print(response.text)

Sohbet yayınını etkinleştirme

Aşağıdaki örnekte gösterildiği gibi, canlı yayını sohbet ile de kullanabilirsiniz:

model = genai.GenerativeModel("gemini-1.5-flash")
chat = model.start_chat(
    history=[
        {"role": "user", "parts": "Hello"},
        {"role": "model", "parts": "Great to meet you. What would you like to know?"},
    ]
)
response = chat.send_message("I have 2 dogs in my house.", stream=True)
for chunk in response:
    print(chunk.text)
    print("_" * 80)
response = chat.send_message("How many paws are in my house?", stream=True)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

print(chat.history)

Metin oluşturmayı yapılandırma

Modele gönderdiğiniz her istem, modelin yanıtları nasıl oluşturduğunu kontrol eden parametreler içerir. Bu parametreleri yapılandırmak için GenerationConfig kullanabilirsiniz. Parametreleri yapılandırmazsanız model, varsayılan seçenekleri kullanır. Bu seçenekler modele göre değişebilir.

Aşağıdaki örnekte, kullanılabilir seçeneklerden bazılarının nasıl yapılandırılacağı gösterilmektedir.

model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content(
    "Tell me a story about a magic backpack.",
    generation_config=genai.types.GenerationConfig(
        # Only one candidate for now.
        candidate_count=1,
        stop_sequences=["x"],
        max_output_tokens=20,
        temperature=1.0,
    ),
)

print(response.text)

candidateCount, döndürülecek oluşturulmuş yanıtların sayısını belirtir. Bu değer şu anda yalnızca 1 olarak ayarlanabilir. Politika ayarlanmadan bırakılırsa varsayılan olarak 1 değerine ayarlanır.

stopSequences, çıkış oluşturmayı durduracak karakter dizisi grubunu (en fazla 5) belirtir. Belirtilirse API, bir stop_sequence ilk göründüğünde durur. Durdurma sırası yanıta dahil edilmez.

maxOutputTokens, bir adayda eklenecek maksimum jeton sayısını belirler.

temperature, çıktının rastgeleliğini kontrol eder. Daha yaratıcı yanıtlar için daha yüksek, daha kesin yanıtlar için daha düşük değerler kullanın. Değerler [0,0; 2,0] aralığında olabilir.

generateContent için ayrı ayrı aramalar da yapılandırabilirsiniz:

response = model.generate_content(
    'Write a story about a magic backpack.',
    generation_config = genai.GenerationConfig(
        max_output_tokens=1000,
        temperature=0.1,
    )
)

Tekil çağrıda ayarlanan tüm değerler, model oluşturucudaki değerleri geçersiz kılar.

Sırada ne var?

Gemini API'nin temel özelliklerini incelediğinize göre şunları deneyebilirsiniz:

  • Görsel yorumlama: Görüntüleri ve videoları işlemek için Gemini'nin yerel görsel yorumlamasını nasıl kullanacağınızı öğrenin.
  • Sistem talimatları: Sistem talimatları, modelin davranışını belirli ihtiyaçlarınıza ve kullanım alanlarınıza göre yönlendirmenize olanak tanır.
  • Sesi anlama: Ses dosyalarını işlemek için Gemini'ın yerel ses anlama özelliğini nasıl kullanacağınızı öğrenin.