Düşünüyorum

Gemini 3 ve Gemini 2.5 modelleri, akıl yürütme ve çok adımlı planlama becerilerini önemli ölçüde geliştiren dahili bir "düşünme süreci" kullanabilir. Bu sayede kodlama, ileri matematik ve veri analizi gibi karmaşık görevlerde oldukça etkili olurlar.

Düşünme modelleri aşağıdaki yapılandırmaları ve seçenekleri sunar:

  • Düşünme miktarını kontrol etme
    Bir modelin ne kadar "düşünebileceğini" yapılandırabilirsiniz. Bu yapılandırma, özellikle gecikmeyi veya maliyeti azaltmak öncelikli olduğunda önemlidir. Ayrıca, bir modelin düşünme yeteneğine ne kadar ihtiyacı olabileceğine karar vermek için görev zorluklarının karşılaştırmasını inceleyin.

    Bu yapılandırmayı düşünme seviyeleri (Gemini 3 ve sonraki modeller) veya düşünme bütçeleri (Gemini 2.5 modeller) ile kontrol edin.

  • Düşünce özetleri alma
    Oluşturulan yanıta düşünce özetlerini ekleyebilirsiniz. Bu özetler, modelin ham düşüncelerinin sentezlenmiş versiyonlarıdır ve modelin dahili akıl yürütme süreci hakkında bilgiler sunar.

  • Düşünce imzalarını işleme
    Firebase AI Logic SDK'ları, düşünce imzalarını sizin için otomatik olarak işler. Bu sayede, özellikle işlev çağrısı kullanılırken modelin önceki dönüşlerdeki düşünce bağlamına erişmesi sağlanır.

Düşünme modellerini kullanmayla ilgili en iyi uygulamaları ve istem yönergelerini incelediğinizden emin olun.



Düşünme modeli kullanma

Diğer Gemini modellerini kullandığınız gibi bir düşünme modeli kullanın.

Düşünce modellerinden en iyi şekilde yararlanmak için bu sayfanın ilerleyen bölümlerinde Düşünce modellerini kullanmaya yönelik en iyi uygulamalar ve istem kılavuzu başlıklı makaleyi inceleyin.

Bu özelliği destekleyen modeller

Bu özellik yalnızca Gemini 3 ve Gemini 2.5 modellerinde desteklenir.

  • gemini-3-pro-preview
  • gemini-3-pro-image-preview (diğer adıyla "nano banana pro")
  • gemini-3-flash-preview
  • gemini-2.5-pro
  • gemini-2.5-flash
  • gemini-2.5-flash-lite

Düşünce modellerini kullanmayla ilgili en iyi uygulamalar ve istem kılavuzu

Tam düşünce sürecini görebileceğiniz Google AI Studio veya Vertex AI Studio içinde isteminizi test etmenizi öneririz. Modelin hatalı olabileceği alanları belirleyerek istemlerinizi daha tutarlı ve doğru yanıtlar alacak şekilde düzenleyebilirsiniz.

İstenen sonucu açıklayan genel bir istemle başlayın ve modelin yanıtını nasıl belirlediğiyle ilgili ilk düşüncelerini gözlemleyin. Yanıt beklendiği gibi değilse aşağıdaki istem tekniklerinden herhangi birini kullanarak modelin daha iyi bir yanıt oluşturmasına yardımcı olun:

  • Adım adım talimatlar verin
  • Giriş-çıkış çiftleriyle ilgili birkaç örnek verin.
  • Çıktı ve yanıtların nasıl ifade edilmesi ve biçimlendirilmesi gerektiği konusunda rehberlik et
  • Belirli doğrulama adımları sağlama

İstem oluşturmanın yanı sıra aşağıdaki önerileri de kullanabilirsiniz:

  • Sistem talimatları ayarlayın. Bu talimatlar, model istemden veya son kullanıcıdan başka talimatlar almadan önce eklediğiniz bir "giriş" gibidir. Bu parametreler, modelin davranışını özel ihtiyaçlarınıza ve kullanım alanlarınıza göre yönlendirmenize olanak tanır.

  • Modelin ne kadar düşünebileceğini kontrol etmek için bir düşünme düzeyi (veya Gemini 2.5 modelleri için düşünme bütçesi) belirleyin. Yüksek bir düzey belirlerseniz model gerekirse daha fazla düşünebilir. Daha düşük bir değer belirlerseniz model yanıtını "fazla düşünmez". Ayrıca, toplam jeton çıkışı sınırının daha fazlasını gerçek yanıt için ayırır ve gecikmeyi ve maliyeti azaltmaya yardımcı olabilir.

  • Düşünme jetonlarının sayısını ve düşünme özelliğinin etkinleştirildiği isteklerinizin gecikme süresini izlemek için Firebase konsolunda yapay zeka izlemeyi etkinleştirin. Düşünce özetleri etkinse bunlar, istemlerinizde hata ayıklamanıza ve istemlerinizi iyileştirmenize yardımcı olmak için modelin ayrıntılı gerekçelendirmesini inceleyebileceğiniz konsolda gösterilir.



Düşünme miktarını kontrol etme

Bir modelin yanıt döndürmeden önce ne kadar "düşünebileceğini" ve akıl yürütebileceğini yapılandırabilirsiniz. Bu yapılandırma, özellikle gecikmeyi veya maliyeti azaltmak öncelikli olduğunda önemlidir.

Bir modelin düşünme yeteneğine ne kadar ihtiyacı olabileceğine karar vermek için görev zorluklarının karşılaştırmasını inceleyin. Aşağıda genel bir rehberlik sunulmaktadır:

  • Daha az karmaşık görevler için veya gecikmeyi ya da maliyeti azaltmak sizin için öncelikliyse daha düşük bir düşünme değeri ayarlayın.
  • Daha karmaşık görevler için daha yüksek bir düşünme değeri ayarlayın.

Bu yapılandırmayı düşünme seviyeleri (Gemini 3 ve sonraki modeller) veya düşünme bütçeleri (Gemini 2.5 modeller) ile kontrol edin.

Düşünme seviyeleri (Gemini 3 modeller)

Gemini 3 modelinin yanıtını oluşturmak için ne kadar düşünebileceğini kontrol etmek istiyorsanız kullanmasına izin verilen düşünme parçalarının miktarı için bir düşünme düzeyi belirleyebilirsiniz.

Düşünme düzeyini ayarlama

Bu sayfada sağlayıcıya özel içerikleri ve kodu görüntülemek için Gemini API sağlayıcınızı tıklayın.

GenerationConfig modelinin Gemini 3 örneğini oluştururken GenerativeModel içinde düşünme düzeyini ayarlayın. Yapılandırma, örneğin kullanım süresi boyunca korunur. Farklı istekler için farklı düşünce düzeyleri kullanmak istiyorsanız her düzeyle yapılandırılmış GenerativeModel örnekleri oluşturun.

Bu bölümün ilerleyen kısımlarında düşünce düzeyi için desteklenen değerler hakkında bilgi edinebilirsiniz.

Swift

GenerativeModel örneği oluşturma sürecinde GenerationConfig'da düşünme düzeyini ayarlayın.


// ...

// Set the thinking configuration
// Use a thinking level value appropriate for your model (example value shown here)
let generationConfig = GenerationConfig(
  thinkingConfig: ThinkingConfig(thinkingLevel: .low)
)

// Specify the config as part of creating the `GenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
  modelName: "GEMINI_3_MODEL_NAME",
  generationConfig: generationConfig
)

// ...

Kotlin

GenerativeModel örneği oluşturma kapsamında GenerationConfig içindeki parametrelerin değerlerini ayarlayın.


// ...

// Set the thinking configuration
// Use a thinking level value appropriate for your model (example value shown here)
val generationConfig = generationConfig {
  thinkingConfig = thinkingConfig {
      thinkingLevel = ThinkingLevel.LOW
  }
}

// Specify the config as part of creating the `GenerativeModel` instance
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
  modelName = "GEMINI_3_MODEL_NAME",
  generationConfig,
)

// ...

Java

GenerativeModel örneği oluşturma kapsamında GenerationConfig içindeki parametrelerin değerlerini ayarlayın.


// ...

// Set the thinking configuration
// Use a thinking level value appropriate for your model (example value shown here)
ThinkingConfig thinkingConfig = new ThinkingConfig.Builder()
    .setThinkingLevel(ThinkingLevel.LOW)
    .build();

GenerationConfig generationConfig = GenerationConfig.builder()
    .setThinkingConfig(thinkingConfig)
    .build();

// Specify the config as part of creating the `GenerativeModel` instance
GenerativeModelFutures model = GenerativeModelFutures.from(
        FirebaseAI.getInstance(GenerativeBackend.googleAI())
                .generativeModel(
                  /* modelName */ "GEMINI_3_MODEL_NAME",
                  /* generationConfig */ generationConfig
                );
);

// ...

Web

GenerativeModel örneği oluşturma kapsamında GenerationConfig içindeki parametrelerin değerlerini ayarlayın.


// ...

const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// Set the thinking configuration
// Use a thinking level value appropriate for your model (example value shown here)
const generationConfig = {
  thinkingConfig: {
    thinkingLevel: ThinkingLevel.LOW
  }
};

// Specify the config as part of creating the `GenerativeModel` instance
const model = getGenerativeModel(ai, { model: "GEMINI_3_MODEL_NAME", generationConfig });

// ...

Dart

GenerativeModel örneği oluşturma kapsamında bir GenerationConfig içindeki parametrelerin değerlerini ayarlayın.


// ...

// Set the thinking configuration
// Use a thinking level value appropriate for your model (example value shown here)
final thinkingConfig = ThinkingConfig.withThinkingLevel(ThinkingLevel.low);

final generationConfig = GenerationConfig(
  thinkingConfig: thinkingConfig
);

// Specify the config as part of creating the `GenerativeModel` instance
final model = FirebaseAI.googleAI().generativeModel(
  model: 'GEMINI_3_MODEL_NAME',
  config: generationConfig,
);

// ...

Unity

GenerativeModel örneği oluşturma kapsamında GenerationConfig içindeki parametrelerin değerlerini ayarlayın.


// ...

// Set the thinking configuration
// Use a thinking level value appropriate for your model (example value shown here)
var thinkingConfig = new ThinkingConfig(thinkingLevel: ThinkingLevel.Low);

var generationConfig = new GenerationConfig(
  thinkingConfig: thinkingConfig
);

// Specify the config as part of creating the `GenerativeModel` instance
var model = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI()).GetGenerativeModel(
  modelName: "GEMINI_3_MODEL_NAME",
  generationConfig: generationConfig
);

// ...

Desteklenen düşünce düzeyi değerleri

Aşağıdaki tabloda, modelin thinkingLevel yapılandırılmasıyla her model için ayarlayabileceğiniz düşünce düzeyi değerleri listelenmektedir.

MINIMAL LOW MEDIUM HIGH
  • Model, mümkün olduğunca az jeton kullanır ve neredeyse hiç düşünmez.
  • Düşük karmaşıklıkta görevler
  • Model daha az jeton kullanır, gecikmeyi ve maliyeti en aza indirir.
  • Basit görevler ve yüksek işleme hızlı görevler
  • Model dengeli bir yaklaşım kullanıyor
  • Orta düzeyde karmaşık görevler
  • Model, maksimum düzeyine kadar jeton kullanıyor
  • Derin akıl yürütme gerektiren karmaşık istemler
Gemini 3 Pro (varsayılan)
Gemini 3 Pro Image ("nano banana pro") (varsayılan)
Gemini 3 Flash (varsayılan)



Düşünme bütçeleri (Gemini 2.5 modelleri)

Gemini 2.5 modelinin yanıtını oluşturmak için ne kadar düşünebileceğini kontrol etmek istiyorsanız kullanmasına izin verilen düşünme parçalarının miktarı için bir düşünme bütçesi belirleyebilirsiniz.

Düşünme bütçesini ayarlama

Bu sayfada sağlayıcıya özel içerikleri ve kodu görüntülemek için Gemini API sağlayıcınızı tıklayın.

Gemini 2.5 modeli için GenerativeModel örneği oluşturma kapsamında GenerationConfig içinde düşünme bütçesini ayarlayın. Yapılandırma, örneğin kullanım ömrü boyunca korunur. Farklı istekler için farklı düşünme bütçeleri kullanmak istiyorsanız her bütçeyle yapılandırılmış GenerativeModel örnekleri oluşturun.

Bu bölümün ilerleyen kısımlarında düşünme bütçesi için desteklenen değerler hakkında bilgi edinebilirsiniz.

Swift

GenerativeModel örneği oluşturma sürecinde GenerationConfig içinde düşünme bütçesini ayarlayın.


// ...

// Set the thinking configuration
// Use a thinking budget value appropriate for your model (example value shown here)
let generationConfig = GenerationConfig(
  thinkingConfig: ThinkingConfig(thinkingBudget: 1024)
)

// Specify the config as part of creating the `GenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
  modelName: "GEMINI_2.5_MODEL_NAME",
  generationConfig: generationConfig
)

// ...

Kotlin

GenerativeModel örneği oluşturma kapsamında GenerationConfig içindeki parametrelerin değerlerini ayarlayın.


// ...

// Set the thinking configuration
// Use a thinking budget value appropriate for your model (example value shown here)
val generationConfig = generationConfig {
  thinkingConfig = thinkingConfig {
      thinkingBudget = 1024
  }
}

// Specify the config as part of creating the `GenerativeModel` instance
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
  modelName = "GEMINI_2.5_MODEL_NAME",
  generationConfig,
)

// ...

Java

GenerativeModel örneği oluşturma kapsamında GenerationConfig içindeki parametrelerin değerlerini ayarlayın.


// ...

// Set the thinking configuration
// Use a thinking budget value appropriate for your model (example value shown here)
ThinkingConfig thinkingConfig = new ThinkingConfig.Builder()
    .setThinkingBudget(1024)
    .build();

GenerationConfig generationConfig = GenerationConfig.builder()
    .setThinkingConfig(thinkingConfig)
    .build();

// Specify the config as part of creating the `GenerativeModel` instance
GenerativeModelFutures model = GenerativeModelFutures.from(
        FirebaseAI.getInstance(GenerativeBackend.googleAI())
                .generativeModel(
                  /* modelName */ "GEMINI_2.5_MODEL_NAME",
                  /* generationConfig */ generationConfig
                );
);

// ...

Web

GenerativeModel örneği oluşturma kapsamında GenerationConfig içindeki parametrelerin değerlerini ayarlayın.


// ...

const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// Set the thinking configuration
// Use a thinking budget value appropriate for your model (example value shown here)
const generationConfig = {
  thinkingConfig: {
    thinkingBudget: 1024
  }
};

// Specify the config as part of creating the `GenerativeModel` instance
const model = getGenerativeModel(ai, { model: "GEMINI_2.5_MODEL_NAME", generationConfig });

// ...

Dart

GenerativeModel örneği oluşturma kapsamında bir GenerationConfig içindeki parametrelerin değerlerini ayarlayın.


// ...

// Set the thinking configuration
// Use a thinking budget value appropriate for your model (example value shown here)
final thinkingConfig = ThinkingConfig.withThinkingBudget(1024);

final generationConfig = GenerationConfig(
  thinkingConfig: thinkingConfig
);

// Specify the config as part of creating the `GenerativeModel` instance
final model = FirebaseAI.googleAI().generativeModel(
  model: 'GEMINI_2.5_MODEL_NAME',
  config: generationConfig,
);

// ...

Unity

GenerativeModel örneği oluşturma kapsamında GenerationConfig içindeki parametrelerin değerlerini ayarlayın.


// ...

// Set the thinking configuration
// Use a thinking budget value appropriate for your model (example value shown here)
var thinkingConfig = new ThinkingConfig(thinkingBudget: 1024);

var generationConfig = new GenerationConfig(
  thinkingConfig: thinkingConfig
);

// Specify the config as part of creating the `GenerativeModel` instance
var model = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI()).GetGenerativeModel(
  modelName: "GEMINI_2.5_MODEL_NAME",
  generationConfig: generationConfig
);

// ...

Desteklenen düşünme bütçesi değerleri

Aşağıdaki tabloda, modelin thinkingBudget yapılandırılarak her model için ayarlayabileceğiniz düşünme bütçesi değerleri listelenmektedir.

Model Varsayılan değer Düşünme bütçesi için kullanılabilir aralık
Düşünmeyi devre dışı bırakacak değer

Dinamik düşünmeyi etkinleştirme değeri
Minimum değer Maksimum değer
Gemini 2.5 Pro 8,192 128 32,768 devre dışı bırakılamaz -1
Gemini 2.5 Flash 8,192 1 24,576 0 -1
Gemini 2.5 Flash‑Lite 0
(düşünme özelliği varsayılan olarak devre dışıdır)
512 24,576 0
(veya düşünme bütçesini hiç yapılandırmayın)
-1



Tüm düşünme modelleri için görev karmaşıklığı

  • Kolay görevler: Düşünmek o kadar da gerekli değildir
    Karmaşık akıl yürütme gerektirmeyen basit istekler (ör. bilgi alma veya sınıflandırma). Örnekler:

    • "DeepMind nerede kuruldu?"
    • "Bu e-postada toplantı mı isteniyor yoksa sadece bilgi mi veriliyor?"
  • Orta düzeyde zorluktaki görevler: Biraz düşünmek gerekebilir
    Adım adım işlemeye veya daha derin bir anlayışa ihtiyaç duyulan yaygın istekler. Örnekler:

    • "Fotosentez ile büyüme arasında bir benzetme yap."
    • "Elektrikli arabalar ile hibrit arabaları karşılaştırın."
  • Zorlu görevler: Maksimum düşünme gücü gerekebilir
    Karmaşık matematik problemlerini çözme veya kodlama görevleri gibi gerçekten karmaşık zorluklar. Bu tür görevler, modelin tam akıl yürütme ve planlama yeteneklerini kullanmasını gerektirir. Bu görevler, yanıt vermeden önce genellikle birçok dahili adım içerir. Örnekler:

    • "AIME 2025'teki 1. problemi çöz: 17b'nin 97b'nin bir böleni olduğu tüm b > 9 tam sayı tabanlarının toplamını bulun."
    • "Kullanıcı kimlik doğrulaması da dahil olmak üzere gerçek zamanlı borsa verilerini görselleştiren bir web uygulaması için Python kodu yaz. Mümkün olduğunca verimli hale getir."



Düşünce özetleri

Düşünce özetleri, modelin ham düşüncelerinin sentezlenmiş versiyonlarıdır ve modelin dahili muhakeme süreci hakkında bilgiler sunar.

Yanıtlarınıza düşünce özetleri eklemenin bazı nedenleri:

  • Düşünce özetini uygulamanızın kullanıcı arayüzünde gösterebilir veya kullanıcılarınızın erişimine açabilirsiniz. Düşünce özeti, yanıtta ayrı bir bölüm olarak döndürülür. Böylece, uygulamanızda nasıl kullanılacağı konusunda daha fazla kontrol sahibi olursunuz.

  • Firebase konsolunda yapay zeka izlemeyi de etkinleştirirseniz düşünce özetleri konsolda gösterilir. Burada, istemlerinizde hata ayıklamanıza ve istemlerinizi iyileştirmenize yardımcı olması için modelin ayrıntılı gerekçesini inceleyebilirsiniz.

Düşünce özetleri hakkında bilmeniz gereken bazı önemli noktalar:

  • Düşünce özetleri, düşünce bütçeleri tarafından kontrol edilmez (bütçeler yalnızca modelin ham düşünceleri için geçerlidir). Ancak düşünme özelliği devre dışıysa model, düşünce özeti döndürmez.

  • Düşünce özetleri, modelin normal oluşturulmuş metin yanıtının bir parçası olarak kabul edilir ve çıkış jetonu olarak sayılır.

Düşünce özetlerini etkinleştirme

Bu sayfada sağlayıcıya özel içerikleri ve kodu görüntülemek için Gemini API sağlayıcınızı tıklayın.

Model yapılandırmanızda includeThoughts değerini true olarak ayarlayarak düşünce özetlerini etkinleştirebilirsiniz. Ardından, yanıttaki thoughtSummary alanını kontrol ederek özete erişebilirsiniz.

Aşağıda, yanıtta düşünce özetlerinin nasıl etkinleştirileceği ve alınacağı gösterilmektedir:

Swift

GenerativeModel örneği oluşturma sürecinde GenerationConfig bölümünde düşünce özetlerini etkinleştirin.


// ...

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
let generationConfig = GenerationConfig(
  thinkingConfig: ThinkingConfig(includeThoughts: true)
)

// Specify the config as part of creating the `GenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
  modelName: "GEMINI_MODEL_NAME",
  generationConfig: generationConfig
)

let response = try await model.generateContent("solve x^2 + 4x + 4 = 0")

// Handle the response that includes thought summaries
if let thoughtSummary = response.thoughtSummary {
  print("Thought Summary: \(thoughtSummary)")
}
guard let text = response.text else {
  fatalError("No text in response.")
}
print("Answer: \(text)")

Kotlin

GenerativeModel örneği oluşturma sürecinde GenerationConfig bölümünde düşünce özetlerini etkinleştirin.


// ...

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
val generationConfig = generationConfig {
  thinkingConfig = thinkingConfig {
      includeThoughts = true
  }
}

// Specify the config as part of creating the `GenerativeModel` instance
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
  modelName = "GEMINI_MODEL_NAME",
  generationConfig,
)

val response = model.generateContent("solve x^2 + 4x + 4 = 0")

// Handle the response that includes thought summaries
response.thoughtSummary?.let {
    println("Thought Summary: $it")
}
response.text?.let {
    println("Answer: $it")
}

Java

GenerativeModel örneği oluşturma sürecinde GenerationConfig bölümünde düşünce özetlerini etkinleştirin.


// ...

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
ThinkingConfig thinkingConfig = new ThinkingConfig.Builder()
    .setIncludeThoughts(true)
    .build();

GenerationConfig generationConfig = GenerationConfig.builder()
    .setThinkingConfig(thinkingConfig)
    .build();

// Specify the config as part of creating the `GenerativeModel` instance
GenerativeModelFutures model = GenerativeModelFutures.from(
        FirebaseAI.getInstance(GenerativeBackend.googleAI())
                .generativeModel(
                  /* modelName */ "GEMINI_MODEL_NAME",
                  /* generationConfig */ generationConfig
                );
);

// Handle the response that includes thought summaries
ListenableFuture responseFuture = model.generateContent("solve x^2 + 4x + 4 = 0");
Futures.addCallback(responseFuture, new FutureCallback() {
    @Override
    public void onSuccess(GenerateContentResponse response) {
        if (response.getThoughtSummary() != null) {
            System.out.println("Thought Summary: " + response.getThoughtSummary());
        }
        if (response.getText() != null) {
            System.out.println("Answer: " + response.getText());
        }
    }

    @Override
    public void onFailure(Throwable t) {
        // Handle error
    }
}, MoreExecutors.directExecutor());

Web

GenerativeModel örneği oluşturma sürecinde GenerationConfig bölümünde düşünce özetlerini etkinleştirin.


// ...

const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
const generationConfig = {
  thinkingConfig: {
    includeThoughts: true
  }
};

// Specify the config as part of creating the `GenerativeModel` instance
const model = getGenerativeModel(ai, { model: "GEMINI_MODEL_NAME", generationConfig });

const result = await model.generateContent("solve x^2 + 4x + 4 = 0");
const response = result.response;

// Handle the response that includes thought summaries
if (response.thoughtSummary()) {
    console.log(`Thought Summary: ${response.thoughtSummary()}`);
}
const text = response.text();
console.log(`Answer: ${text}`);

Dart

GenerativeModel örneği oluşturma sürecinde GenerationConfig bölümünde düşünce özetlerini etkinleştirin.


// ...

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
final thinkingConfig = ThinkingConfig(includeThoughts: true);

final generationConfig = GenerationConfig(
  thinkingConfig: thinkingConfig
);

// Specify the config as part of creating the `GenerativeModel` instance
final model = FirebaseAI.googleAI().generativeModel(
  model: 'GEMINI_MODEL_NAME',
  generationConfig: generationConfig,
);

final response = await model.generateContent('solve x^2 + 4x + 4 = 0');

// Handle the response that includes thought summaries
if (response.thoughtSummary != null) {
  print('Thought Summary: ${response.thoughtSummary}');
}
if (response.text != null) {
  print('Answer: ${response.text}');
}

Unity

GenerativeModel örneği oluşturma sürecinde GenerationConfig bölümünde düşünce özetlerini etkinleştirin.


// ...

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
var thinkingConfig = new ThinkingConfig(includeThoughts: true);

var generationConfig = new GenerationConfig(
  thinkingConfig: thinkingConfig
);

// Specify the config as part of creating the `GenerativeModel` instance
var model = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI()).GetGenerativeModel(
  modelName: "GEMINI_MODEL_NAME",
  generationConfig: generationConfig
);

var response = await model.GenerateContentAsync("solve x^2 + 4x + 4 = 0");

// Handle the response that includes thought summaries
if (response.ThoughtSummary != null) {
    Debug.Log($"Thought Summary: {response.ThoughtSummary}");
}
if (response.Text != null) {
    Debug.Log($"Answer: {response.Text}");
}

Düşünce özetlerini yayınlama

generateContentStream kullanarak yanıtı akış halinde görüntülemeyi seçerseniz düşünce özetlerini de görebilirsiniz. Bu işlem, yanıt oluşturma sırasında ilerleyen, artımlı özetler döndürür.

Swift

GenerativeModel örneği oluşturma sürecinde GenerationConfig bölümünde düşünce özetlerini etkinleştirin.


// ...

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
let generationConfig = GenerationConfig(
  thinkingConfig: ThinkingConfig(includeThoughts: true)
)

// Specify the config as part of creating the `GenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
  modelName: "GEMINI_MODEL_NAME",
  generationConfig: generationConfig
)

let stream = try model.generateContentStream("solve x^2 + 4x + 4 = 0")

// Handle the streamed response that includes thought summaries
var thoughts = ""
var answer = ""
for try await response in stream {
  if let thought = response.thoughtSummary {
    if thoughts.isEmpty {
      print("--- Thoughts Summary ---")
    }
    print(thought)
    thoughts += thought
  }

  if let text = response.text {
    if answer.isEmpty {
      print("--- Answer ---")
    }
    print(text)
    answer += text
  }
}

Kotlin

GenerativeModel örneği oluşturma sürecinde GenerationConfig bölümünde düşünce özetlerini etkinleştirin.


// ...

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
val generationConfig = generationConfig {
  thinkingConfig = thinkingConfig {
      includeThoughts = true
  }
}

// Specify the config as part of creating the `GenerativeModel` instance
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
  modelName = "GEMINI_MODEL_NAME",
  generationConfig,
)

// Handle the streamed response that includes thought summaries
var thoughts = ""
var answer = ""
model.generateContentStream("solve x^2 + 4x + 4 = 0").collect { response ->
    response.thoughtSummary?.let {
        if (thoughts.isEmpty()) {
            println("--- Thoughts Summary ---")
        }
        print(it)
        thoughts += it
    }
    response.text?.let {
        if (answer.isEmpty()) {
            println("--- Answer ---")
        }
        print(it)
        answer += it
    }
}

Java

GenerativeModel örneği oluşturma sürecinde GenerationConfig bölümünde düşünce özetlerini etkinleştirin.


// ...

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
ThinkingConfig thinkingConfig = new ThinkingConfig.Builder()
    .setIncludeThoughts(true)
    .build();

GenerationConfig generationConfig = GenerationConfig.builder()
    .setThinkingConfig(thinkingConfig)
    .build();

// Specify the config as part of creating the `GenerativeModel` instance
GenerativeModelFutures model = GenerativeModelFutures.from(
        FirebaseAI.getInstance(GenerativeBackend.googleAI())
                .generativeModel(
                  /* modelName */ "GEMINI_MODEL_NAME",
                  /* generationConfig */ generationConfig
                );
);

// Streaming with Java is complex and depends on the async library used.
// This is a conceptual example using a reactive stream.
Flowable responseStream = model.generateContentStream("solve x^2 + 4x + 4 = 0");

// Handle the streamed response that includes thought summaries
StringBuilder thoughts = new StringBuilder();
StringBuilder answer = new StringBuilder();

responseStream.subscribe(response -> {
    if (response.getThoughtSummary() != null) {
        if (thoughts.length() == 0) {
            System.out.println("--- Thoughts Summary ---");
        }
        System.out.print(response.getThoughtSummary());
        thoughts.append(response.getThoughtSummary());
    }
    if (response.getText() != null) {
        if (answer.length() == 0) {
            System.out.println("--- Answer ---");
        }
        System.out.print(response.getText());
        answer.append(response.getText());
    }
}, throwable -> {
    // Handle error
});

Web

GenerativeModel örneği oluşturma sürecinde GenerationConfig bölümünde düşünce özetlerini etkinleştirin.


// ...

const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
const generationConfig = {
  thinkingConfig: {
    includeThoughts: true
  }
};

// Specify the config as part of creating the `GenerativeModel` instance
const model = getGenerativeModel(ai, { model: "GEMINI_MODEL_NAME", generationConfig });

const result = await model.generateContentStream("solve x^2 + 4x + 4 = 0");

// Handle the streamed response that includes thought summaries
let thoughts = "";
let answer = "";
for await (const chunk of result.stream) {
  if (chunk.thoughtSummary()) {
    if (thoughts === "") {
      console.log("--- Thoughts Summary ---");
    }
    // In Node.js, process.stdout.write(chunk.thoughtSummary()) could be used
    // to avoid extra newlines.
    console.log(chunk.thoughtSummary());
    thoughts += chunk.thoughtSummary();
  }

  const text = chunk.text();
  if (text) {
    if (answer === "") {
      console.log("--- Answer ---");
    }
    // In Node.js, process.stdout.write(text) could be used.
    console.log(text);
    answer += text;
  }
}

Dart

GenerativeModel örneği oluşturma sürecinde GenerationConfig bölümünde düşünce özetlerini etkinleştirin.


// ...

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
final thinkingConfig = ThinkingConfig(includeThoughts: true);

final generationConfig = GenerationConfig(
  thinkingConfig: thinkingConfig
);

// Specify the config as part of creating the `GenerativeModel` instance
final model = FirebaseAI.googleAI().generativeModel(
  model: 'GEMINI_MODEL_NAME',
  generationConfig: generationConfig,
);

final responses = model.generateContentStream('solve x^2 + 4x + 4 = 0');

// Handle the streamed response that includes thought summaries
var thoughts = '';
var answer = '';
await for (final response in responses) {
  if (response.thoughtSummary != null) {
    if (thoughts.isEmpty) {
      print('--- Thoughts Summary ---');
    }
    thoughts += response.thoughtSummary!;
  }
  if (response.text != null) {
    if (answer.isEmpty) {
      print('--- Answer ---');
    }
    answer += response.text!;
  }
}

Unity

GenerativeModel örneği oluşturma sürecinde GenerationConfig bölümünde düşünce özetlerini etkinleştirin.


// ...

// Set the thinking configuration
// Optionally enable thought summaries in the generated response (default is false)
var thinkingConfig = new ThinkingConfig(includeThoughts: true);

var generationConfig = new GenerationConfig(
  thinkingConfig: thinkingConfig
);

// Specify the config as part of creating the `GenerativeModel` instance
var model = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI()).GetGenerativeModel(
  modelName: "GEMINI_MODEL_NAME",
  generationConfig: generationConfig
);

var stream = model.GenerateContentStreamAsync("solve x^2 + 4x + 4 = 0");

// Handle the streamed response that includes thought summaries
var thoughts = "";
var answer = "";
await foreach (var response in stream)
{
    if (response.ThoughtSummary != null)
    {
        if (string.IsNullOrEmpty(thoughts))
        {
            Debug.Log("--- Thoughts Summary ---");
        }
        Debug.Log(response.ThoughtSummary);
        thoughts += response.ThoughtSummary;
    }
    if (response.Text != null)
    {
        if (string.IsNullOrEmpty(answer))
        {
            Debug.Log("--- Answer ---");
        }
        Debug.Log(response.Text);
        answer += response.Text;
    }
}



Düşünce imzaları

Çok turlu etkileşimlerde düşünme özelliğini kullanırken model, önceki turlardaki düşünce bağlamına erişemez. Ancak işlev çağrısı kullanıyorsanız dönüşler arasında düşünce bağlamını korumak için düşünce imzalarından yararlanabilirsiniz. Düşünce imzaları, modelin dahili düşünce sürecinin şifrelenmiş temsilleridir ve düşünme ve işlev çağrısı kullanılırken kullanılabilir. Düşünce imzaları özellikle şu durumlarda oluşturulur:

  • Düşünme özelliği etkinleştirilir ve düşünceler üretilir.
  • İstek, işlev bildirimleri içeriyor.

Düşünce imzalarından yararlanmak için işlev çağrısını normal şekilde kullanın. Firebase AI Logic SDK'ları, durumu yöneterek ve düşünce imzalarını sizin için otomatik olarak işleyerek süreci basitleştirir. SDK'lar, oluşturulan düşünce imzalarını Chat oturumundaki sonraki sendMessage veya sendMessageStream çağrıları arasında otomatik olarak iletir.



Fiyatlandırma ve düşünce jetonlarını sayma

Düşünme jetonları, metin çıkışı jetonlarıyla aynı fiyatlandırmaya tabidir. Düşünce özetlerini etkinleştirirseniz bunlar düşünce jetonu olarak kabul edilir ve buna göre fiyatlandırılır.

Düşünme özelliğinin etkinleştirildiği istekler için düşünme jetonlarının sayısını izlemek üzere Firebase konsolunda yapay zeka izlemeyi etkinleştirebilirsiniz.

Düşünme jetonlarının toplam sayısını, yanıttaki usageMetadata özelliğinin thoughtsTokenCount alanından alabilirsiniz:

Swift

// ...

let response = try await model.generateContent("Why is the sky blue?")

if let usageMetadata = response.usageMetadata {
  print("Thoughts Token Count: \(usageMetadata.thoughtsTokenCount)")
}

Kotlin

// ...

val response = model.generateContent("Why is the sky blue?")

response.usageMetadata?.let { usageMetadata ->
    println("Thoughts Token Count: ${usageMetadata.thoughtsTokenCount}")
}

Java

// ...

ListenableFuture<GenerateContentResponse> response =
    model.generateContent("Why is the sky blue?");

Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
    @Override
    public void onSuccess(GenerateContentResponse result) {
        String usageMetadata = result.getUsageMetadata();
        if (usageMetadata != null) {
            System.out.println("Thoughts Token Count: " +
                usageMetadata.getThoughtsTokenCount());
        }
    }

    @Override
    public void onFailure(Throwable t) {
        t.printStackTrace();
    }
}, executor);

Web

// ...

const response = await model.generateContent("Why is the sky blue?");

if (response?.usageMetadata?.thoughtsTokenCount != null) {
    console.log(`Thoughts Token Count: ${response.usageMetadata.thoughtsTokenCount}`);
}

Dart

// ...

final response = await model.generateContent(
  Content.text("Why is the sky blue?"),
]);

if (response?.usageMetadata case final usageMetadata?) {
  print("Thoughts Token Count: ${usageMetadata.thoughtsTokenCount}");
}

Unity

// ...

var response = await model.GenerateContentAsync("Why is the sky blue?");

if (response.UsageMetadata != null)
{
    UnityEngine.Debug.Log($"Thoughts Token Count: {response.UsageMetadata?.ThoughtsTokenCount}");
}

Jetonlar hakkında daha fazla bilgiyi Jetonları sayma kılavuzu'nda bulabilirsiniz.