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 Vision ve Ses kılavuzlarına bakın.

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:

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[{"text": "Write a story about a magic backpack."}]
        }]
       }' 2> /dev/null

Bu durumda istem ("Yapay zekanın nasıl çalıştığını açıklayın") herhangi bir çıkış örneği, sistem talimatı veya biçimlendirme bilgisi içermez. Bu, sıfır görevli bir yaklaşımdır. Bazı kullanım alanları için tek atış veya az sayıda atış istemi, kullanıcı beklentilerine daha uygun sonuçlar verebilir. Bazı durumlarda, modelin görevi anlamasına veya belirli yönergeleri uygulamasına yardımcı olmak için sistem talimatları da sağlayabilirsiniz.

Metin ve resim girişinden metin oluşturma

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:

# Use a temporary file to hold the base64 encoded image data
TEMP_B64=$(mktemp)
trap 'rm -f "$TEMP_B64"' EXIT
base64 $B64FLAGS $IMG_PATH > "$TEMP_B64"

# Use a temporary file to hold the JSON payload
TEMP_JSON=$(mktemp)
trap 'rm -f "$TEMP_JSON"' EXIT

cat > "$TEMP_JSON" << EOF
{
  "contents": [{
    "parts":[
      {"text": "Tell me about this instrument"},
      {
        "inline_data": {
          "mime_type":"image/jpeg",
          "data": "$(cat "$TEMP_B64")"
        }
      }
    ]
  }]
}
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d "@$TEMP_JSON" 2> /dev/null

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 eklemek veya talimatlarınızda daha net olmak isteyebilirsiniz. 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 içeren bir giriş isteminden metin oluşturmak için streamGenerateContent yöntemini kullanarak akışın nasıl uygulanacağı gösterilmektedir.

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:streamGenerateContent?alt=sse&key=${GOOGLE_API_KEY}" \
        -H 'Content-Type: application/json' \
        --no-buffer \
        -d '{ "contents":[{"parts":[{"text": "Write a story about a magic backpack."}]}]}'

Etkileşimli sohbet oluşturma

Gemini SDK'sı, birden fazla soru ve yanıt toplamanıza olanak tanır. 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 SDK özelliği, görüşme geçmişini takip etmek için bir arayüz sağlar ancak arka planda yanıt oluşturmak için aynı generateContentyöntemini kullanır.

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

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Hello"}]},
        {"role": "model",
         "parts":[{
           "text": "Great to meet you. What would you like to know?"}]},
        {"role":"user",
         "parts":[{
           "text": "I have two dogs in my house. How many paws are in my house?"}]},
      ]
    }' 2> /dev/null | grep "text"

Sohbet aktarımını etkinleştirme

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

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:streamGenerateContent?alt=sse&key=$GOOGLE_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Hello"}]},
        {"role": "model",
         "parts":[{
           "text": "Great to meet you. What would you like to know?"}]},
        {"role":"user",
         "parts":[{
           "text": "I have two dogs in my house. How many paws are in my house?"}]},
      ]
    }' 2> /dev/null | grep "text"

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, modele göre değişiklik gösterebilen varsayılan seçenekleri kullanır.

Aşağıdaki örnekte, mevcut seçeneklerden birkaçının nasıl yapılandırılacağı gösterilmektedir.

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
        "contents": [{
            "parts":[
                {"text": "Write a story about a magic backpack."}
            ]
        }],
        "safetySettings": [
            {
                "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
                "threshold": "BLOCK_ONLY_HIGH"
            }
        ],
        "generationConfig": {
            "stopSequences": [
                "Title"
            ],
            "temperature": 1.0,
            "maxOutputTokens": 800,
            "topP": 0.8,
            "topK": 10
        }
    }'  2> /dev/null | grep "text"

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

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.

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

topP, modelin çıkış için jetonları nasıl seçtiğini değiştirir. Jetonlar, olasılıklarının toplamı topP değerine eşit olana kadar en yüksekten en düşüğe doğru seçilir. Varsayılan topP değeri 0,95'tir.

topK, modelin çıkış için jetonları nasıl seçtiğini değiştirir. 1 değerine sahip bir topK, seçilen jetonun modelin kelime haznesindeki tüm jetonlar arasında en olası olduğu anlamına gelir. 3 değerine sahip bir topK ise sonraki jetonun, sıcaklık kullanılarak en olası 3 jeton arasından seçildiği anlamına gelir. Jetonlar, topP'ye göre daha da filtrelenir ve nihai jeton, sıcaklık örnekleme kullanılarak seçilir.

Sistem talimatları ekleme

Sistem talimatları, bir modelin davranışını belirli ihtiyaçlarınıza ve kullanım alanlarınıza göre yönlendirmenize olanak tanır.

Modele sistem talimatları vererek modeli, görevi anlamak, daha özelleştirilmiş yanıtlar oluşturmak ve kullanıcının modelle olan tüm etkileşimi boyunca belirli yönergelere uymak için ek bağlam bilgisi sağlarsınız. Son kullanıcılar tarafından sağlanan istemlerden ayrı olarak sistem talimatları ayarlayarak ürün düzeyinde davranış da belirtebilirsiniz.

Modelinizi başlatırken sistem talimatları ayarlayabilirsiniz:

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{ "system_instruction": {
    "parts":
      { "text": "You are a cat. Your name is Neko."}},
    "contents": {
      "parts": {
        "text": "Hello there"}}}'

Sistem talimatlarını kullanmayla ilgili etkileşimli bir uçtan uca örnek için Colab sistem talimatları başlıklı makaleyi inceleyin.

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.
  • Ses anlama: Ses dosyalarını işlemek için Gemini'nin doğal ses anlama özelliğini nasıl kullanacağınızı öğrenin.