Gemini düşüncesi

Gemini 2.5 serisi modeller, akıl yürütme ve çok adımlı planlama yeteneklerini önemli ölçüde artıran dahili bir "düşünme süreci" kullanır. Bu sayede kodlama, ileri düzey matematik ve veri analizi gibi karmaşık görevler için son derece etkili olurlar.

Bu kılavuzda, Gemini API'yi kullanarak Gemini'nin düşünme özellikleriyle nasıl çalışabileceğiniz açıklanmaktadır.

Başlamadan önce

Düşünme için desteklenen bir 2.5 serisi model kullandığınızdan emin olun. API'ye geçmeden önce AI Studio'da bu modelleri keşfetmeniz faydalı olabilir:

Düşünerek içerik üretme

Düşünme modeli içeren bir istek başlatmak, diğer içerik oluşturma isteklerine benzer. Aradaki temel fark, aşağıdaki metin oluşturma örneğinde gösterildiği gibi model alanında düşünme desteğine sahip modellerden birini belirtmektir:

Python

from google import genai

client = genai.Client()
prompt = "Explain the concept of Occam's Razor and provide a simple, everyday example."
response = client.models.generate_content(
    model="gemini-2.5-pro",
    contents=prompt
)

print(response.text)

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

async function main() {
  const prompt = "Explain the concept of Occam's Razor and provide a simple, everyday example.";

  const response = await ai.models.generateContent({
    model: "gemini-2.5-pro",
    contents: prompt,
  });

  console.log(response.text);
}

main();

Go

package main

import (
  "context"
  "fmt"
  "log"
  "os"
  "google.golang.org/genai"
)

func main() {
  ctx := context.Background()
  client, err := genai.NewClient(ctx, nil)
  if err != nil {
      log.Fatal(err)
  }

  prompt := "Explain the concept of Occam's Razor and provide a simple, everyday example."
  model := "gemini-2.5-pro"

  resp, _ := client.Models.GenerateContent(ctx, model, genai.Text(prompt), nil)

  fmt.Println(resp.Text())
}

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent" \
 -H "x-goog-api-key: $GEMINI_API_KEY" \
 -H 'Content-Type: application/json' \
 -X POST \
 -d '{
   "contents": [
     {
       "parts": [
         {
           "text": "Explain the concept of Occam\'s Razor and provide a simple, everyday example."
         }
       ]
     }
   ]
 }'
 ```

Bütçeleri düşünme

thinkingBudget parametresi, modele yanıt oluştururken kullanılacak düşünme jetonlarının sayısı konusunda yol gösterir. Daha yüksek jeton sayısı genellikle daha ayrıntılı akıl yürütme sağlar. Bu da daha karmaşık görevlerle başa çıkmak için yararlı olabilir. Gecikme daha önemliyse daha düşük bir bütçe kullanın veya thinkingBudget değerini 0 olarak ayarlayarak düşünmeyi devre dışı bırakın. thinkingBudget değerini -1 olarak ayarlamak dinamik düşünmeyi etkinleştirir. Bu durumda model, bütçeyi isteğin karmaşıklığına göre ayarlar.

thinkingBudget yalnızca Gemini 2.5 Flash, 2.5 Pro ve 2.5 Flash-Lite'ta desteklenir. İstemlere bağlı olarak model, jeton bütçesini aşabilir veya bütçenin altında kalabilir.

Aşağıda, her model türüne ilişkin thinkingBudget yapılandırma ayrıntıları verilmiştir.

Model Varsayılan ayar
(Düşünme bütçesi ayarlanmadı)
Aralık Düşünme sürecini devre dışı bırakma Dinamik düşünmeyi etkinleştirme
2.5 Pro Dinamik düşünme: Ne zaman ve ne kadar düşüneceğine model karar verir 128 - 32768 Yok: Düşünme devre dışı bırakılamaz thinkingBudget = -1
2,5 Flash Dinamik düşünme: Ne zaman ve ne kadar düşüneceğine model karar verir 0 - 24576 thinkingBudget = 0 thinkingBudget = -1
2.5 Flash Lite Model düşünmüyor 512 - 24576 thinkingBudget = 0 thinkingBudget = -1

Python

from google import genai
from google.genai import types

client = genai.Client()

response = client.models.generate_content(
    model="gemini-2.5-pro",
    contents="Provide a list of 3 famous physicists and their key contributions",
    config=types.GenerateContentConfig(
        thinking_config=types.ThinkingConfig(thinking_budget=1024)
        # Turn off thinking:
        # thinking_config=types.ThinkingConfig(thinking_budget=0)
        # Turn on dynamic thinking:
        # thinking_config=types.ThinkingConfig(thinking_budget=-1)
    ),
)

print(response.text)

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

async function main() {
  const response = await ai.models.generateContent({
    model: "gemini-2.5-pro",
    contents: "Provide a list of 3 famous physicists and their key contributions",
    config: {
      thinkingConfig: {
        thinkingBudget: 1024,
        // Turn off thinking:
        // thinkingBudget: 0
        // Turn on dynamic thinking:
        // thinkingBudget: -1
      },
    },
  });

  console.log(response.text);
}

main();

Go

package main

import (
  "context"
  "fmt"
  "google.golang.org/genai"
  "os"
)

func main() {
  ctx := context.Background()
  client, err := genai.NewClient(ctx, nil)
  if err != nil {
      log.Fatal(err)
  }

  thinkingBudgetVal := int32(1024)

  contents := genai.Text("Provide a list of 3 famous physicists and their key contributions")
  model := "gemini-2.5-pro"
  resp, _ := client.Models.GenerateContent(ctx, model, contents, &genai.GenerateContentConfig{
    ThinkingConfig: &genai.ThinkingConfig{
      ThinkingBudget: &thinkingBudgetVal,
      // Turn off thinking:
      // ThinkingBudget: int32(0),
      // Turn on dynamic thinking:
      // ThinkingBudget: int32(-1),
    },
  })

fmt.Println(resp.Text())
}

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
  "contents": [
    {
      "parts": [
        {
          "text": "Provide a list of 3 famous physicists and their key contributions"
        }
      ]
    }
  ],
  "generationConfig": {
    "thinkingConfig": {
          "thinkingBudget": 1024
          # Thinking off:
          # "thinkingBudget": 0
          # Turn on dynamic thinking:
          # "thinkingBudget": -1
    }
  }
}'

Düşünce özetleri

Düşünce özetlerinin, modelin ham düşüncelerinin sentetik sürümleridir ve modelin dahili akıl yürütme süreci hakkında bilgi verir. Düşünme bütçelerinin düşünce özetlerine değil, modelin ham düşüncelerine uygulandığını unutmayın.

İstek yapılandırmanızdaki includeThoughts değerini true olarak ayarlayarak düşünce özetlerini etkinleştirebilirsiniz. Ardından, response parametresinin parts öğesini iterleyerek ve thought doğru değerini kontrol ederek özete erişebilirsiniz.

Akış olmadan düşünce özetlerinin nasıl etkinleştirileceğini ve alınacağını gösteren bir örnek aşağıda verilmiştir. Bu örnekte, yanıtla birlikte tek bir nihai düşünce özeti döndürülür:

Python

from google import genai
from google.genai import types

client = genai.Client()
prompt = "What is the sum of the first 50 prime numbers?"
response = client.models.generate_content(
  model="gemini-2.5-pro",
  contents=prompt,
  config=types.GenerateContentConfig(
    thinking_config=types.ThinkingConfig(
      include_thoughts=True
    )
  )
)

for part in response.candidates[0].content.parts:
  if not part.text:
    continue
  if part.thought:
    print("Thought summary:")
    print(part.text)
    print()
  else:
    print("Answer:")
    print(part.text)
    print()

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

async function main() {
  const response = await ai.models.generateContent({
    model: "gemini-2.5-pro",
    contents: "What is the sum of the first 50 prime numbers?",
    config: {
      thinkingConfig: {
        includeThoughts: true,
      },
    },
  });

  for (const part of response.candidates[0].content.parts) {
    if (!part.text) {
      continue;
    }
    else if (part.thought) {
      console.log("Thoughts summary:");
      console.log(part.text);
    }
    else {
      console.log("Answer:");
      console.log(part.text);
    }
  }
}

main();

Go

package main

import (
  "context"
  "fmt"
  "google.golang.org/genai"
  "os"
)

func main() {
  ctx := context.Background()
  client, err := genai.NewClient(ctx, nil)
  if err != nil {
      log.Fatal(err)
  }

  contents := genai.Text("What is the sum of the first 50 prime numbers?")
  model := "gemini-2.5-pro"
  resp, _ := client.Models.GenerateContent(ctx, model, contents, &genai.GenerateContentConfig{
    ThinkingConfig: &genai.ThinkingConfig{
      IncludeThoughts: true,
    },
  })

  for _, part := range resp.Candidates[0].Content.Parts {
    if part.Text != "" {
      if part.Thought {
        fmt.Println("Thoughts Summary:")
        fmt.Println(part.Text)
      } else {
        fmt.Println("Answer:")
        fmt.Println(part.Text)
      }
    }
  }
}

Aşağıda, oluşturma sırasında artan özetler döndüren akışla düşünmeyi kullanan bir örnek verilmiştir:

Python

from google import genai
from google.genai import types

client = genai.Client()

prompt = """
Alice, Bob, and Carol each live in a different house on the same street: red, green, and blue.
The person who lives in the red house owns a cat.
Bob does not live in the green house.
Carol owns a dog.
The green house is to the left of the red house.
Alice does not own a cat.
Who lives in each house, and what pet do they own?
"""

thoughts = ""
answer = ""

for chunk in client.models.generate_content_stream(
    model="gemini-2.5-pro",
    contents=prompt,
    config=types.GenerateContentConfig(
      thinking_config=types.ThinkingConfig(
        include_thoughts=True
      )
    )
):
  for part in chunk.candidates[0].content.parts:
    if not part.text:
      continue
    elif part.thought:
      if not thoughts:
        print("Thoughts summary:")
      print(part.text)
      thoughts += part.text
    else:
      if not answer:
        print("Thoughts summary:")
      print(part.text)
      answer += part.text

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

const prompt = `Alice, Bob, and Carol each live in a different house on the same
street: red, green, and blue. The person who lives in the red house owns a cat.
Bob does not live in the green house. Carol owns a dog. The green house is to
the left of the red house. Alice does not own a cat. Who lives in each house,
and what pet do they own?`;

let thoughts = "";
let answer = "";

async function main() {
  const response = await ai.models.generateContentStream({
    model: "gemini-2.5-pro",
    contents: prompt,
    config: {
      thinkingConfig: {
        includeThoughts: true,
      },
    },
  });

  for await (const chunk of response) {
    for (const part of chunk.candidates[0].content.parts) {
      if (!part.text) {
        continue;
      } else if (part.thought) {
        if (!thoughts) {
          console.log("Thoughts summary:");
        }
        console.log(part.text);
        thoughts = thoughts + part.text;
      } else {
        if (!answer) {
          console.log("Answer:");
        }
        console.log(part.text);
        answer = answer + part.text;
      }
    }
  }
}

await main();

Go

package main

import (
  "context"
  "fmt"
  "log"
  "os"
  "google.golang.org/genai"
)

const prompt = `
Alice, Bob, and Carol each live in a different house on the same street: red, green, and blue.
The person who lives in the red house owns a cat.
Bob does not live in the green house.
Carol owns a dog.
The green house is to the left of the red house.
Alice does not own a cat.
Who lives in each house, and what pet do they own?
`

func main() {
  ctx := context.Background()
  client, err := genai.NewClient(ctx, nil)
  if err != nil {
      log.Fatal(err)
  }

  contents := genai.Text(prompt)
  model := "gemini-2.5-pro"

  resp := client.Models.GenerateContentStream(ctx, model, contents, &genai.GenerateContentConfig{
    ThinkingConfig: &genai.ThinkingConfig{
      IncludeThoughts: true,
    },
  })

  for chunk := range resp {
    for _, part := range chunk.Candidates[0].Content.Parts {
      if len(part.Text) == 0 {
        continue
      }

      if part.Thought {
        fmt.Printf("Thought: %s\n", part.Text)
      } else {
        fmt.Printf("Answer: %s\n", part.Text)
      }
    }
  }
}

Fiyatlandırma

Düşünme etkinleştirildiğinde yanıt fiyatlandırması, çıkış jetonlarının ve düşünme jetonlarının toplamıdır. Oluşturulan düşünme jetonlarının toplam sayısını thoughtsTokenCount alanından alabilirsiniz.

Python

# ...
print("Thoughts tokens:",response.usage_metadata.thoughts_token_count)
print("Output tokens:",response.usage_metadata.candidates_token_count)

JavaScript

// ...
console.log(`Thoughts tokens: ${response.usageMetadata.thoughtsTokenCount}`);
console.log(`Output tokens: ${response.usageMetadata.candidatesTokenCount}`);

Go

// ...
usageMetadata, err := json.MarshalIndent(response.UsageMetadata, "", "  ")
if err != nil {
  log.Fatal(err)
}
fmt.Println("Thoughts tokens:", string(usageMetadata.thoughts_token_count))
fmt.Println("Output tokens:", string(usageMetadata.candidates_token_count))

Düşünme modelleri, nihai yanıtın kalitesini artırmak için tam düşünceler oluşturur ve ardından düşünce süreciyle ilgili bilgi sağlamak için özet çıkarır. Bu nedenle, API'den yalnızca özet döndürülmesine rağmen fiyatlandırma, modelin özet oluşturmak için oluşturması gereken tam düşünce jetonlarına dayanır.

Jetonlar hakkında daha fazla bilgiyi Jeton sayma kılavuzunda bulabilirsiniz.

Desteklenen modeller

Düşünme özellikleri, 2.5 serisi modellerin tamamında desteklenir. Tüm model özelliklerini modele genel bakış sayfasında bulabilirsiniz.

En iyi uygulamalar

Bu bölümde, düşünme modellerini verimli bir şekilde kullanmayla ilgili bazı yönergeler yer almaktadır. Her zaman olduğu gibi, istemlerle ilgili kılavuzlarımızı ve en iyi uygulamalarımızı uygulayarak en iyi sonuçları elde edebilirsiniz.

Hata ayıklama ve yönlendirme

  • Mantığı inceleme: Düşünme modellerinden beklediğiniz yanıtı almadığınızda Gemini'nin düşünce özetlerini dikkatlice incelemek faydalı olabilir. Görevi nasıl böldüğünü ve sonuca nasıl ulaştığını görebilir ve doğru sonuçları elde etmek için bu bilgileri kullanabilirsiniz.

  • Mantık yürütme konusunda yol gösterin: Özellikle uzun bir sonuç elde etmek istiyorsanız modelin kullandığı düşünme miktarını kısıtlamak için isteminizde yol gösterici bilgiler verebilirsiniz. Bu sayede, jeton çıkışının daha fazlasını yanıtınız için ayırabilirsiniz.

Görev karmaşıklığı

  • Kolay Görevler (Düşünme KAPALI olabilir): Bilgi alma veya sınıflandırma gibi karmaşık akıl yürütme gerektirmeyen basit istekler için düşünme gerekli değildir. Örnekler:
    • "DeepMind nerede kuruldu?"
    • "Bu e-postada toplantı isteğinde mi bulunuluyor yoksa sadece bilgi mi veriliyor?"
  • Orta düzey görevler (Varsayılan/Biraz Düşünme): Yaygın isteklerin çoğu, adım adım işleme veya daha derin bir anlayıştan yararlanır. Gemini, aşağıdakiler gibi görevler için düşünme özelliğini esnek bir şekilde kullanabilir:
    • Fotosentezi ve büyümeyi karşılaştırın.
    • Elektrikli arabalar ile hibrit arabaları karşılaştırın.
  • Zor Görevler (Maksimum Düşünme Kapasitesi): Karmaşık matematik problemlerini çözme veya kodlama görevleri gibi gerçekten karmaşık zorluklar için yüksek bir düşünme bütçesi belirlemenizi öneririz. Bu tür görevler, modelin tüm akıl yürütme ve planlama özelliklerini kullanmasını gerektirir. Bu da genellikle yanıt vermeden önce birçok dahili adımı içerir. Örnekler:
    • AIME 2025'teki 1. problemi çöz: 17b, 97b'nin böleni olan 9'dan büyük tüm tam sayı tabanlarının toplamını bulun.
    • Kullanıcı kimlik doğrulaması da dahil olmak üzere anlık borsa verilerini görselleştiren bir web uygulaması için Python kodu yazın. Mümkün olduğunca verimli hale getirin.

Araçlar ve özelliklerle düşünme

Düşünme modelleri, Gemini'nin tüm araç ve özellikleriyle çalışır. Bu sayede modeller, harici sistemlerle etkileşim kurabilir, kod çalıştırabilir veya gerçek zamanlı bilgilere erişebilir. Sonuçları, mantık yürütme ve nihai yanıtlarına dahil edebilir.

  • Arama aracı, modelin güncel bilgileri veya eğitim verilerinin ötesindeki bilgileri bulmak için Google Arama'yı sorgulamasına olanak tanır. Bu, son olaylar veya son derece spesifik konularla ilgili sorular için yararlıdır.

  • Kod yürütme aracı, modelin hesaplama yapmak, verileri değiştirmek veya algoritmik olarak en iyi şekilde ele alınan sorunları çözmek için Python kodu oluşturmasını ve çalıştırmasını sağlar. Model, kodun çıkışını alır ve yanıtında kullanabilir.

  • Yapılandırılmış çıkış ile Gemini'yi JSON ile yanıt vermeye zorlayabilirsiniz. Bu, özellikle modelin çıktısını uygulamalara entegre etmek için yararlıdır.

  • İşlev çağırma, düşünme modelini harici araçlara ve API'lere bağlar. Böylece doğru işlevin ne zaman çağrılacağı ve hangi parametrelerin sağlanacağı hakkında mantık yürütebilir.

  • URL Bağlamı, isteminiz için ek bağlam olarak modele URL'ler sağlar. Ardından model, URL'lerden içerik alabilir ve bu içeriği yanıtını şekillendirmek için kullanabilir.

Düşünme yemek kitabındaki araçları düşünme modelleriyle kullanma örneklerini deneyebilirsiniz.

Sırada ne var?

  • Aşağıdakiler gibi daha ayrıntılı örnekleri incelemek için:

    • Araçları bilinçli kullanma
    • Düşünerek yayın yapma
    • Farklı sonuçlar için düşünme bütçesini ayarlama

    ve daha fazlası için Düşünme yemek kitabımızı deneyin.

  • Düşünme kapsamı artık OpenAI Uyumluluğu rehberimizde mevcuttur.

  • Gemini 2.5 Pro, Gemini Flash 2.5 ve Gemini 2.5 Flash-Lite hakkında daha fazla bilgi için model sayfasını ziyaret edin.