Model Gemini 3 dan Gemini 2.5 dapat menggunakan "proses berpikir" internal yang secara signifikan meningkatkan kemampuan penalaran dan perencanaan multi-langkahnya, sehingga sangat efektif untuk tugas-tugas kompleks seperti coding, matematika tingkat lanjut, dan analisis data.
Model pemikiran menawarkan konfigurasi dan opsi berikut:
Mengontrol jumlah pemikiran
Anda dapat mengonfigurasi jumlah "pemikiran" yang dapat dilakukan model. Konfigurasi ini sangat penting jika pengurangan latensi atau biaya menjadi prioritas. Selain itu, tinjau perbandingan kesulitan tugas untuk memutuskan seberapa besar kemampuan berpikir yang dibutuhkan model.Kontrol konfigurasi ini dengan tingkat pemikiran (model Gemini 3 dan yang lebih baru) atau dengan anggaran pemikiran (model Gemini 2.5).
Mendapatkan ringkasan pemikiran
Anda dapat mengaktifkan ringkasan pemikiran untuk disertakan dalam respons yang dihasilkan. Ringkasan ini adalah versi sintetis dari pemikiran mentah model dan memberikan insight tentang proses penalaran internal model.Menangani tanda tangan pemikiran
SDK Firebase AI Logic secara otomatis menangani tanda tangan pemikiran untuk Anda, yang memastikan bahwa model memiliki akses ke konteks pemikiran dari giliran sebelumnya, khususnya saat menggunakan panggilan fungsi.
Pastikan untuk meninjau praktik terbaik dan panduan perintah untuk menggunakan model pemikiran.
Menggunakan model berpikir
Gunakan model pemikiran seperti Anda menggunakan model Gemini lainnya.
Untuk mengoptimalkan model pemikiran, tinjau Praktik terbaik & panduan perintah untuk menggunakan model pemikiran di halaman ini.
Model yang mendukung kemampuan ini
Hanya model Gemini 3 dan Gemini 2.5 yang mendukung kemampuan ini.
gemini-3-pro-previewgemini-3-pro-image-preview(alias "nano banana pro")gemini-3-flash-previewgemini-2.5-progemini-2.5-flashgemini-2.5-flash-lite
Praktik terbaik & panduan perintah untuk menggunakan model pemikiran
Sebaiknya uji perintah Anda di Google AI Studio atau Vertex AI Studio tempat Anda dapat melihat seluruh proses pemikiran. Anda dapat mengidentifikasi area mana pun yang mungkin membuat model keliru, sehingga Anda dapat menyempurnakan perintah untuk mendapatkan respons yang lebih konsisten dan akurat.
Mulai dengan perintah umum yang menjelaskan hasil yang diinginkan, dan amati pemikiran awal model tentang cara menentukan responsnya. Jika respons tidak sesuai harapan, bantu model menghasilkan respons yang lebih baik dengan menggunakan salah satu teknik perintah berikut:
- Memberikan petunjuk langkah demi langkah
- Berikan beberapa contoh pasangan input-output
- Memberikan panduan tentang cara menyusun dan memformat output dan respons
- Memberikan langkah-langkah verifikasi tertentu
Selain perintah, pertimbangkan untuk menggunakan rekomendasi berikut:
Tetapkan petunjuk sistem, yang seperti "preamble" yang Anda tambahkan sebelum model diekspos ke petunjuk lebih lanjut dari perintah atau pengguna akhir. Dengan begitu, Anda dapat mengarahkan perilaku model berdasarkan kebutuhan dan kasus penggunaan spesifik Anda.
Tetapkan tingkat penalaran (atau anggaran penalaran untuk model Gemini 2.5) untuk mengontrol seberapa banyak penalaran yang dapat dilakukan model. Jika Anda menetapkannya tinggi, model dapat berpikir lebih banyak, jika diperlukan. Jika Anda menyetelnya lebih rendah, model tidak akan "terlalu memikirkan" responsnya, dan juga akan mencadangkan lebih banyak batas output token total untuk respons sebenarnya serta dapat membantu mengurangi latensi dan biaya.
Aktifkan pemantauan AI di Firebase console untuk memantau jumlah token berpikir dan latensi permintaan Anda yang mengaktifkan fitur berpikir. Jika Anda mengaktifkan ringkasan pemikiran, ringkasan tersebut akan ditampilkan di konsol tempat Anda dapat memeriksa alasan mendetail model untuk membantu Anda men-debug dan menyempurnakan perintah.
Mengontrol jumlah pemikiran
Anda dapat mengonfigurasi seberapa banyak "pemikiran" dan penalaran yang dapat dilakukan model sebelum model menampilkan respons. Konfigurasi ini sangat penting jika mengurangi latensi atau biaya menjadi prioritas.
Pastikan untuk meninjau perbandingan kesulitan tugas untuk memutuskan seberapa besar kemampuan berpikir yang dibutuhkan model. Berikut beberapa panduan tingkat tinggi:
- Tetapkan nilai pemikiran yang lebih rendah untuk tugas yang kurang kompleks atau jika mengurangi latensi atau biaya adalah prioritas Anda.
- Tetapkan nilai pemikiran yang lebih tinggi untuk tugas yang lebih kompleks.
Kontrol konfigurasi ini dengan tingkat pemikiran (model Gemini 3 dan yang lebih baru) atau dengan anggaran pemikiran (model Gemini 2.5).
Tingkat pemikiran (model Gemini 3)
Untuk mengontrol seberapa banyak penalaran yang dapat dilakukan model Gemini 3 untuk membuat responsnya, Anda dapat menentukan tingkat penalaran untuk jumlah token penalaran yang diizinkan untuk digunakan.
Menetapkan tingkat penalaran
|
Klik penyedia Gemini API untuk melihat konten dan kode khusus penyedia di halaman ini. |
Tetapkan tingkat pemikiran dalam GenerationConfig sebagai bagian dari pembuatan instance
GenerativeModel untuk model Gemini 3. Konfigurasi dipertahankan selama masa aktif instance. Jika Anda ingin menggunakan tingkat pemikiran yang berbeda untuk permintaan yang berbeda, buat instance GenerativeModel yang dikonfigurasi dengan setiap tingkat.
Pelajari nilai yang didukung untuk tingkat pemikiran di bagian ini.
Swift
Tetapkan tingkat pemikiran dalam
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
// 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
Tetapkan nilai parameter di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
// 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
Tetapkan nilai parameter di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
// 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
Tetapkan nilai parameter di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
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
Tetapkan nilai parameter di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
// 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
Tetapkan nilai parameter di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
// 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
);
// ...
Nilai tingkat pemikiran yang didukung
Tabel berikut mencantumkan nilai tingkat pemikiran yang dapat Anda tetapkan untuk setiap model dengan mengonfigurasi thinkingLevel model.
MINIMAL |
LOW |
MEDIUM |
HIGH |
|
|---|---|---|---|---|
|
|
|
|
|
| Gemini 3 Pro | (default) | |||
| Gemini 3 Pro Image ("nano banana pro") | (default) | |||
| Gemini 3 Flash | (default) |
Anggaran pemikiran (model Gemini 2.5)
Untuk mengontrol seberapa banyak penalaran yang dapat dilakukan model Gemini 2.5 untuk membuat responsnya, Anda dapat menentukan anggaran penalaran untuk jumlah token penalaran yang diizinkan untuk digunakan.
Menetapkan anggaran penalaran
|
Klik penyedia Gemini API untuk melihat konten dan kode khusus penyedia di halaman ini. |
Tetapkan anggaran penalaran di GenerationConfig sebagai bagian dari pembuatan instance
GenerativeModel untuk model Gemini 2.5. Konfigurasi dipertahankan selama masa aktif instance. Jika Anda ingin menggunakan anggaran pemikiran yang berbeda untuk permintaan yang berbeda, buat instance GenerativeModel yang dikonfigurasi dengan setiap anggaran.
Pelajari nilai yang didukung untuk anggaran pemikiran di bagian ini.
Swift
Tetapkan anggaran pemikiran di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
// 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
Tetapkan nilai parameter di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
// 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
Tetapkan nilai parameter di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
// 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
Tetapkan nilai parameter di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
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
Tetapkan nilai parameter di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
// 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
Tetapkan nilai parameter di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
// 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
);
// ...
Nilai anggaran penalaran yang didukung
Tabel berikut mencantumkan nilai anggaran pemikiran yang dapat Anda tetapkan untuk setiap model dengan mengonfigurasi thinkingBudget model.
| Model | Nilai default | Rentang yang tersedia untuk anggaran penalaran |
Nilai untuk menonaktifkan pemikiran |
Nilai untuk memungkinkan pemikiran dinamis |
|
|---|---|---|---|---|---|
| Nilai minimum | Nilai maksimum | ||||
| Gemini 2.5 Pro | 8,192 |
128 |
32,768 |
tidak dapat dinonaktifkan | -1 |
| Gemini 2.5 Flash | 8,192 |
1 |
24,576 |
0 |
-1 |
| Gemini 2.5 Flash‑Lite | 0(pemikiran dinonaktifkan secara default) |
512 |
24,576 |
0(atau tidak mengonfigurasi anggaran penalaran sama sekali) |
-1 |
Kompleksitas tugas untuk semua model pemikiran
Tugas mudah — tidak perlu banyak berpikir
Permintaan langsung yang tidak memerlukan penalaran yang kompleks, seperti pengambilan atau klasifikasi fakta. Contoh:- "Di mana DeepMind didirikan?"
- "Apakah email ini meminta rapat atau hanya memberikan informasi?"
Tugas sedang — kemungkinan memerlukan pemikiran
Permintaan umum yang memerlukan pemrosesan langkah demi langkah atau pemahaman yang lebih mendalam. Contoh:- "Buat analogi antara fotosintesis dan tumbuh dewasa."
- "Bandingkan dan bedakan mobil listrik dan mobil hibrida."
Tugas sulit — mungkin diperlukan pemikiran maksimal
Tantangan yang benar-benar kompleks, seperti menyelesaikan masalah matematika yang rumit atau tugas pengodean. Jenis tugas ini mengharuskan model menggunakan kemampuan penalaran dan perencanaan sepenuhnya, yang sering kali melibatkan banyak langkah internal sebelum memberikan jawaban. Contoh:- "Pecahkan soal 1 di AIME 2025: Temukan jumlah semua bilangan bulat b > 9 yang memenuhi 17b adalah pembagi 97b."
- "Write Python code for a web application that visualizes real-time stock market data, including user authentication. Buat seefisien mungkin."
Ringkasan pemikiran
Ringkasan pemikiran adalah versi sintetis dari pemikiran mentah model dan menawarkan insight tentang proses penalaran internal model.
Berikut beberapa alasan untuk menyertakan ringkasan pemikiran dalam respons:
Anda dapat menampilkan ringkasan pemikiran di UI aplikasi atau membuatnya dapat diakses oleh pengguna Anda. Ringkasan pemikiran ditampilkan sebagai bagian terpisah dalam respons sehingga Anda memiliki kontrol lebih besar terhadap cara penggunaannya di aplikasi Anda.
Jika Anda juga mengaktifkan pemantauan AI di Firebase console, ringkasan pemikiran akan ditampilkan di konsol tempat Anda dapat memeriksa alasan mendetail model untuk membantu Anda men-debug dan menyempurnakan perintah.
Berikut beberapa catatan penting tentang ringkasan pemikiran:
Ringkasan pemikiran tidak dikontrol oleh anggaran pemikiran (anggaran hanya berlaku untuk pemikiran mentah model). Namun, jika pemikiran dinonaktifkan, maka model tidak akan menampilkan ringkasan pemikiran.
Ringkasan pemikiran dianggap sebagai bagian dari respons teks yang dibuat secara reguler oleh model dan dihitung sebagai token output.
Mengaktifkan ringkasan pemikiran
|
Klik penyedia Gemini API untuk melihat konten dan kode khusus penyedia di halaman ini. |
Anda dapat mengaktifkan ringkasan pemikiran dengan menyetel includeThoughts ke benar (true) dalam konfigurasi model. Kemudian, Anda dapat mengakses ringkasan dengan memeriksa kolom
thoughtSummary dari respons.
Berikut adalah contoh yang menunjukkan cara mengaktifkan dan mengambil ringkasan pemikiran dengan respons:
Swift
Aktifkan ringkasan pemikiran di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
// 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
Aktifkan ringkasan pemikiran di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
// 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
Aktifkan ringkasan pemikiran di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
// 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
Aktifkan ringkasan pemikiran di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
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
Aktifkan ringkasan pemikiran di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
// 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
Aktifkan ringkasan pemikiran di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
// 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}");
}
Ringkasan pemikiran streaming
Anda juga dapat melihat ringkasan pemikiran jika memilih untuk mengalirkan respons menggunakan
generateContentStream. Opsi ini akan menampilkan ringkasan inkremental yang terus diperbarui selama
pembuatan respons.
Swift
Aktifkan ringkasan pemikiran di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
// 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
Aktifkan ringkasan pemikiran di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
// 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
Aktifkan ringkasan pemikiran di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
// 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
Aktifkan ringkasan pemikiran di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
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
Aktifkan ringkasan pemikiran di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
// 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
Aktifkan ringkasan pemikiran di
GenerationConfig
sebagai bagian dari pembuatan instance GenerativeModel.
// ...
// 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;
}
}
Tanda tangan pikiran
Saat menggunakan pemikiran dalam interaksi multi-giliran, model tidak memiliki akses ke konteks pemikiran dari giliran sebelumnya. Namun, jika Anda menggunakan panggilan fungsi, Anda dapat memanfaatkan tanda tangan pemikiran untuk mempertahankan konteks pemikiran di seluruh giliran. Tanda tangan pemikiran adalah representasi terenkripsi dari proses pemikiran internal model, dan tanda tangan ini tersedia saat menggunakan pemanggilan fungsi dan pemikiran. Secara khusus, tanda tangan pikiran dibuat saat:
- Pemikiran diaktifkan dan ide dihasilkan.
- Permintaan mencakup deklarasi fungsi.
Untuk memanfaatkan tanda tangan pemikiran, gunakan panggilan fungsi seperti biasa.
SDK Firebase AI Logic menyederhanakan proses dengan mengelola status
dan menangani tanda tangan pemikiran secara otomatis untuk Anda. SDK secara otomatis
meneruskan tanda tangan pemikiran yang dihasilkan di antara panggilan sendMessage atau
sendMessageStream berikutnya dalam sesi Chat.
Harga dan penghitungan token pemikiran
Token penalaran menggunakan harga yang sama dengan token output teks. Jika Anda mengaktifkan ringkasan pemikiran, ringkasan tersebut dianggap sebagai token pemikiran dan harganya disesuaikan.
Anda dapat mengaktifkan pemantauan AI di Firebase console untuk memantau jumlah token berpikir untuk permintaan yang mengaktifkan fitur berpikir.
Anda bisa mendapatkan jumlah total token penalaran dari kolom thoughtsTokenCount di atribut usageMetadata respons:
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}");
}
Pelajari token lebih lanjut di panduan token hitungan.