Tüm Gemini modelleri, akıl yürütme ve çok adımlı planlama becerilerini önemli ölçüde geliştiren dahili bir "düşünme süreci" kullanır. Bu sayede kodlama, ileri düzey matematik ve veri analizi gibi karmaşık görevlerde son derece etkili sonuçlar verir.
Düşünebilen modeller aşağıdaki yapılandırmaları ve seçenekleri sunar:
Düşünme miktarını kontrol etme
Bir modelin ne kadar "düşünebileceğini" kontrol etmek için düşünme seviyelerini yapılandırabilirsiniz. Bu yapılandırma, özellikle gecikmeyi veya maliyeti azaltmak öncelikliyse önemlidir. Ayrıca, bir modelin düşünme özelliğine ne kadar ihtiyaç duyabileceğine karar vermek için görev zorluklarının karşılaştırmasını inceleyin.Düşünce özetlerini alma
Üretilen yanıta dahil edilecek düşünce özetlerini etkinleştirebilirsiniz. Bu özetler, modelin ham düşüncelerinin sentezlenmiş versiyonlarıdır ve modelin iç mantık süreci hakkında bilgi verir.Düşünce imzalarını işleme
Firebase AI Logic SDK'ları, düşünce imzalarını sizin için otomatik olarak işler. Bu sayede model, özellikle işlev çağrısı kullanırken önceki sıralardaki düşünce bağlamına erişebilir.
Düşünebilen modelleri kullanmayla ilgili en iyi uygulamaları ve istem oluşturma kılavuzunu inceleyin.
Düşünebilen modelleri kullanmayla ilgili en iyi uygulamalar ve istem kılavuzu
İsteminizi Google AI Studio veya Agent Studio üzerinden test etmenizi öneririz. Bu platformlarda düşünme sürecinin tamamını görebilirsiniz. Modelin yanlış yönlendirilmiş olabileceği alanları belirleyerek istemlerinizi daha tutarlı ve doğru yanıtlar alacak şekilde hassaslaştırabilirsiniz.
İ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 birini kullanarak modelin daha iyi bir yanıt üretmesine yardımcı olun:
- Adım adım talimatlar sağlama
- Birkaç giriş-çıkış çifti örneği verin.
- Çıktı ve yanıtların nasıl ifade edilmesi ve biçimlendirilmesi gerektiği konusunda rehberlik sağlama
- Doğrulama adımlarını ayrıntılı olarak açıklayın.
İstemlere ek olarak aşağıdaki önerileri de kullanabilirsiniz:
Model, istemden veya son kullanıcıdan başka talimatlar almadan önce eklediğiniz "ön talimatlar" gibi olan sistem talimatlarını ayarlayın. Bu sayede, modelin davranışını özel ihtiyaçlarınıza ve kullanım alanlarınıza göre yönlendirebilirsiniz.
Modelin ne kadar düşünebileceğini kontrol etmek için bir düşünme düzeyi ayarlayın. Yüksek bir düzey ayarlarsanız model gerektiğinde daha fazla düşünebilir. Daha düşük bir değer ayarlarsanız model, yanıtı üzerinde "fazla düşünmez" ve toplam jeton çıkış sınırının daha büyük bir kısmını asıl yanıt için ayırır. Bu da gecikmeyi ve maliyeti azaltmaya yardımcı olabilir.
Düşünme özelliğinin etkin olduğu isteklerinizin gecikmesini ve düşünme token'larının sayısını izlemek için Firebase konsolunda yapay zeka kullanım takibini etkinleştirin. Düşünce özetleri etkinleştirildiyse bunlar konsolda gösterilir. Burada, istemlerinizde hata ayıklamanıza ve istemlerinizi hassaslaştırmanıza yardımcı olması için modelin ayrıntılı akıl yürütme sürecini inceleyebilirsiniz.
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 kontrol etmek için düşünme seviyelerini yapılandırabilirsiniz. Bu yapılandırma, özellikle gecikmeyi veya maliyeti azaltmak öncelikliyse önemlidir.
Bir modelin düşünme özelliğine ne kadar ihtiyaç duyabileceğine karar vermek için görev zorluklarının karşılaştırmasını inceleyin. Aşağıda genel bir kılavuz verilmiştir:
- 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.
Düşünme düzeyleri
Bir modelin yanıtını oluşturmak için ne kadar düşünebileceğini kontrol etmek amacıyla, kullanmasına izin verilen düşünme token'ı miktarı için bir düşünme seviyesi belirtebilirsiniz.
Düşünme seviyesini ayarlama
|
Bu sayfada sağlayıcıya özel içerikleri ve kodları görüntülemek için Gemini API sağlayıcınızı tıklayın. |
GenerativeModel örneğini oluştururken GenerationConfig içinde düşünme seviyesini ayarlayın. Yapılandırma, örneğin kullanım ömrü boyunca korunur. Farklı istekler için farklı düşünme seviyeleri kullanmak istiyorsanız her seviye için yapılandırılmış GenerativeModel örnekleri oluşturun.
Düşünme seviyesi için desteklenen değerler hakkında daha fazla bilgiyi bu bölümün ilerleyen kısımlarında bulabilirsiniz.
Swift
GenerativeModel örneği oluştururken GenerationConfig içinde düşünme seviyesini 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.x_MODEL_NAME",
generationConfig: generationConfig
)
// ...
Kotlin
GenerationConfig içindeki parametrelerin değerlerini, GenerativeModel örneği oluşturma işleminin bir parçası olarak 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.x_MODEL_NAME",
generationConfig,
)
// ...
Java
GenerationConfig içindeki parametrelerin değerlerini, GenerativeModel örneği oluşturma işleminin bir parçası olarak 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.x_MODEL_NAME",
/* generationConfig */ generationConfig
);
);
// ...
Web
GenerationConfig içindeki parametrelerin değerlerini, GenerativeModel örneği oluşturma işleminin bir parçası olarak 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.x_MODEL_NAME", generationConfig });
// ...
Dart
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).
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.x_MODEL_NAME',
generationConfig: generationConfig,
);
// ...
Unity
GenerationConfig içindeki parametrelerin değerlerini, GenerativeModel örneği oluşturma işleminin bir parçası olarak 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.x_MODEL_NAME",
generationConfig: generationConfig
);
// ...
Desteklenen düşünme seviyesi değerleri
Aşağıdaki tabloda, modelin thinkingLevel yapılandırarak her model için ayarlayabileceğiniz düşünme düzeyi değerleri listelenmiştir.
MINIMAL |
LOW |
MEDIUM |
HIGH |
|
|---|---|---|---|---|
|
Model mümkün olduğunca az jeton kullanır; neredeyse hiç düşünmez. Düşük karmaşıklık düzeyine sahip görevler |
Model daha az jeton kullanır; gecikmeyi ve maliyeti en aza indirir. Basit görevler ve yüksek gönderim hacimli görevler |
Model, dengeli bir yaklaşım kullanır. Orta düzeyde karmaşık görevler |
Model, maksimum düzeyine kadar jeton kullanır. Derin akıl yürütme gerektiren karmaşık istemler |
|
Gemini 4 Argongemini-4-argon
|
1 | (varsayılan) | ||
Gemini 3.x Progemini-3.1-pro-preview
|
(varsayılan) | |||
Gemini 3.x Flashgemini-3.8-flashgemini-3.7-flashgemini-3.6-flashgemini-3.5-flash
|
gemini-3.8-flashgemini-3.7-flash |
(varsayılan) | ||
Gemini 3.x Flash‑Litegemini-3.5-flash-litegemini-3.1-flash-lite
|
(varsayılan) | |||
Gemini Nano Banana 2.1gemini-nano-banana-2.1
|
(varsayılan) | |||
Gemini Nano Banana 2gemini-3.1-flash-image |
(varsayılan) | |||
Gemini Nano Banana 2 Litegemini-3.1-flash-lite-image |
(varsayılan) | |||
Gemini Nano Banana Progemini-3-pro-image
|
(varsayılan) |
1 gemini-4-argon, gemini-3.8-flash ve gemini-3.7-flash, MINIMAL düşünme düzeyini desteklemez. Düşünme seviyesini MINIMAL olarak ayarlarsanız istek 400 hatasıyla başarısız olur.
Düşünme bütçeleri (Gemini 2.5 model)
Gemini 2.5 modelinin yanıtını oluşturmak için ne kadar düşünebileceğini kontrol etmek amacıyla, kullanmasına izin verilen düşünme token'ı miktarı için bir düşünme bütçesi belirleyebilirsiniz.
Tüm düşünebilen modeller için görev karmaşıklığı
Kolay görevler: Düşünmek o kadar da gerekli değildir
Bilgi alma veya sınıflandırma gibi karmaşık akıl yürütme gerektirmeyen basit istekler. Örnekler:- "DeepMind nerede kuruldu?"
- "Bu e-postada toplantı mı talep ediliyor yoksa yalnızca bilgi mi veriliyor?"
Orta düzey görevler: Biraz düşünmek gerekebilir
Adım adım işleme veya daha derinlemesine anlama gerektiren yaygın istekler. Örnekler:- "Fotosentez ile büyüme arasında bir analoji oluştur."
- "Elektrikli araçlar ile hibrit araçları karşılaştır."
Zor görevler: Maksimum düşünme gerekebilir
Karmaşık matematik problemlerini çözme veya kodlama görevleri gibi gerçekten karmaşık zorluklar. Bu tür görevler, modelin tüm akıl yürütme ve planlama yeteneklerini kullanmasını gerektirir. Model, yanıt vermeden önce genellikle birçok dahili adım gerçekleştirir. Örnekler:- "AIME 2025'teki 1. soruyu çöz: 17b'nin 97b'nin böleni olduğu tüm b > 9 tam sayı tabanlarının toplamını bul."
- "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 getirin."
Düşünce özetleri
Düşünce özetleri, modelin ham düşüncelerinin sentezlenmiş versiyonlarıdır ve modelin iç akıl yürütme süreci hakkında bilgi verir.
Yanıtlara düşünce özetleri eklemenin bazı nedenleri şunlardır:
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ğı üzerinde daha fazla kontrol sahibi olursunuz.
Firebase konsolunda yapay zeka kullanım takibini de etkinleştirirseniz düşünce özetleri konsolda gösterilir. Burada, istemlerinizde hata ayıklamanıza ve istemlerinizi hassaslaştırmanıza yardımcı olması için modelin ayrıntılı akıl yürütme sürecini inceleyebilirsiniz.
Düşünce özetleriyle ilgili bazı önemli noktalar:
Düşünce özetleri, düşünme bütçeleri tarafından kontrol edilmez (bütçeler yalnızca modelin ham düşünceleri için geçerlidir). Ancak düşünme devre dışı bırakılırsa model, düşünce özeti döndürmez.
Düşünce özetleri, modelin normal oluşturulan metin yanıtının bir parçası olarak kabul edilir ve çıkış parçası olarak sayılır.
Düşünce özetlerini etkinleştirme
|
Bu sayfada sağlayıcıya özel içerikleri ve kodları 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ıtla birlikte düşünce özetlerinin nasıl etkinleştirileceğini ve alınacağını gösteren bir örnek verilmiştir:
Swift
GenerativeModel örneği oluştururken GenerationConfig içinde 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ştururken GenerationConfig içinde 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ştururken GenerationConfig içinde 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ştururken GenerationConfig içinde 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ştururken GenerationConfig içinde 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([Content.text('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ştururken GenerationConfig içinde 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 akış şeklinde göster
generateContentStream kullanarak bir yanıtı akış halinde görüntülemeyi seçerseniz düşünce özetlerini de görüntüleyebilirsiniz. Bu, yanıt oluşturma sırasında sürekli ve artımlı özetler döndürür.
Swift
GenerativeModel örneği oluştururken GenerationConfig içinde 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ştururken GenerationConfig içinde 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ştururken GenerationConfig içinde 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ştururken GenerationConfig içinde 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ştururken GenerationConfig içinde 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([Content.text('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ştururken GenerationConfig içinde 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 sıra tabanlı etkileşimlerde düşünce bağlamını korumak için düşünce imzalarından yararlanabilirsiniz. Düşünce imzaları, modelin dahili düşünme 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 etkinleştirildi ve düşünceler oluşturuldu.
- İstek, işlev bildirimleri içerir.
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ı bir Chat oturumundaki sonraki sendMessage veya sendMessageStream çağrıları arasında otomatik olarak iletir.
Düşünme token'larını fiyatlandırma ve sayma
Düşünme token'ları, metin çıkış token'larıyla aynı fiyatlandırmaya tabidir. Düşünce özetlerini etkinleştirirseniz bunlar düşünme token'ı olarak kabul edilir ve buna göre fiyatlandırılır.
Düşünme özelliğinin etkin olduğu isteklerdeki düşünme token'larının sayısını izlemek için Firebase konsolunda yapay zeka kullanım takibini etkinleştirebilirsiniz.
Düşünme token'larının toplam sayısını, yanıtın usageMetadata özelliğindeki thoughtsTokenCount alanından öğrenebilirsiniz:
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 bilgi edinmek için count tokens kılavuzunu inceleyin.