Model seri Gemini 3 dan 2.5 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.
Panduan ini menunjukkan cara menggunakan kemampuan berpikir Gemini menggunakan Gemini API.
Membuat konten dengan pemikiran
Memulai permintaan dengan model pemikiran serupa dengan permintaan pembuatan konten lainnya. Perbedaan utamanya terletak pada penentuan salah satu
model dengan dukungan pemikiran di kolom model, seperti
yang ditunjukkan dalam contoh pembuatan teks berikut:
Python
from google import genai
client = genai.Client()
prompt = "Explain the concept of Occam's Razor and provide a simple, everyday example."
response = client.models.generate_content(
model="gemini-2.5-pro",
contents=prompt
)
print(response.text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
async function main() {
const prompt = "Explain the concept of Occam's Razor and provide a simple, everyday example.";
const response = await ai.models.generateContent({
model: "gemini-2.5-pro",
contents: prompt,
});
console.log(response.text);
}
main();
Go
package main
import (
"context"
"fmt"
"log"
"os"
"google.golang.org/genai"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
prompt := "Explain the concept of Occam's Razor and provide a simple, everyday example."
model := "gemini-2.5-pro"
resp, _ := client.Models.GenerateContent(ctx, model, genai.Text(prompt), nil)
fmt.Println(resp.Text())
}
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "Explain the concept of Occam\'s Razor and provide a simple, everyday example."
}
]
}
]
}'
```
Ringkasan pemikiran
Ringkasan pemikiran adalah versi sintetis dari pemikiran mentah model dan memberikan insight tentang proses penalaran internal model. Perhatikan bahwa tingkat pemikiran dan anggaran berlaku untuk pemikiran mentah model, bukan untuk ringkasan pemikiran.
Anda dapat mengaktifkan ringkasan pemikiran dengan menyetel includeThoughts ke true dalam konfigurasi permintaan. Anda kemudian dapat mengakses ringkasan dengan melakukan iterasi pada
response parameter parts, dan memeriksa boolean thought.
Berikut adalah contoh yang menunjukkan cara mengaktifkan dan mengambil ringkasan pemikiran tanpa streaming, yang menampilkan satu ringkasan pemikiran akhir dengan respons:
Python
from google import genai
from google.genai import types
client = genai.Client()
prompt = "What is the sum of the first 50 prime numbers?"
response = client.models.generate_content(
model="gemini-2.5-pro",
contents=prompt,
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(
include_thoughts=True
)
)
)
for part in response.candidates[0].content.parts:
if not part.text:
continue
if part.thought:
print("Thought summary:")
print(part.text)
print()
else:
print("Answer:")
print(part.text)
print()
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
async function main() {
const response = await ai.models.generateContent({
model: "gemini-2.5-pro",
contents: "What is the sum of the first 50 prime numbers?",
config: {
thinkingConfig: {
includeThoughts: true,
},
},
});
for (const part of response.candidates[0].content.parts) {
if (!part.text) {
continue;
}
else if (part.thought) {
console.log("Thoughts summary:");
console.log(part.text);
}
else {
console.log("Answer:");
console.log(part.text);
}
}
}
main();
Go
package main
import (
"context"
"fmt"
"google.golang.org/genai"
"os"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
contents := genai.Text("What is the sum of the first 50 prime numbers?")
model := "gemini-2.5-pro"
resp, _ := client.Models.GenerateContent(ctx, model, contents, &genai.GenerateContentConfig{
ThinkingConfig: &genai.ThinkingConfig{
IncludeThoughts: true,
},
})
for _, part := range resp.Candidates[0].Content.Parts {
if part.Text != "" {
if part.Thought {
fmt.Println("Thoughts Summary:")
fmt.Println(part.Text)
} else {
fmt.Println("Answer:")
fmt.Println(part.Text)
}
}
}
}
Berikut adalah contoh penggunaan berpikir dengan streaming, yang menampilkan ringkasan inkremental bergulir selama pembuatan:
Python
from google import genai
from google.genai import types
client = genai.Client()
prompt = """
Alice, Bob, and Carol each live in a different house on the same street: red, green, and blue.
The person who lives in the red house owns a cat.
Bob does not live in the green house.
Carol owns a dog.
The green house is to the left of the red house.
Alice does not own a cat.
Who lives in each house, and what pet do they own?
"""
thoughts = ""
answer = ""
for chunk in client.models.generate_content_stream(
model="gemini-2.5-pro",
contents=prompt,
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(
include_thoughts=True
)
)
):
for part in chunk.candidates[0].content.parts:
if not part.text:
continue
elif part.thought:
if not thoughts:
print("Thoughts summary:")
print(part.text)
thoughts += part.text
else:
if not answer:
print("Answer:")
print(part.text)
answer += part.text
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
const prompt = `Alice, Bob, and Carol each live in a different house on the same
street: red, green, and blue. The person who lives in the red house owns a cat.
Bob does not live in the green house. Carol owns a dog. The green house is to
the left of the red house. Alice does not own a cat. Who lives in each house,
and what pet do they own?`;
let thoughts = "";
let answer = "";
async function main() {
const response = await ai.models.generateContentStream({
model: "gemini-2.5-pro",
contents: prompt,
config: {
thinkingConfig: {
includeThoughts: true,
},
},
});
for await (const chunk of response) {
for (const part of chunk.candidates[0].content.parts) {
if (!part.text) {
continue;
} else if (part.thought) {
if (!thoughts) {
console.log("Thoughts summary:");
}
console.log(part.text);
thoughts = thoughts + part.text;
} else {
if (!answer) {
console.log("Answer:");
}
console.log(part.text);
answer = answer + part.text;
}
}
}
}
await main();
Go
package main
import (
"context"
"fmt"
"log"
"os"
"google.golang.org/genai"
)
const prompt = `
Alice, Bob, and Carol each live in a different house on the same street: red, green, and blue.
The person who lives in the red house owns a cat.
Bob does not live in the green house.
Carol owns a dog.
The green house is to the left of the red house.
Alice does not own a cat.
Who lives in each house, and what pet do they own?
`
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
contents := genai.Text(prompt)
model := "gemini-2.5-pro"
resp := client.Models.GenerateContentStream(ctx, model, contents, &genai.GenerateContentConfig{
ThinkingConfig: &genai.ThinkingConfig{
IncludeThoughts: true,
},
})
for chunk := range resp {
for _, part := range chunk.Candidates[0].Content.Parts {
if len(part.Text) == 0 {
continue
}
if part.Thought {
fmt.Printf("Thought: %s\n", part.Text)
} else {
fmt.Printf("Answer: %s\n", part.Text)
}
}
}
}
Mengontrol pemikiran
Model Gemini terlibat dalam pemikiran dinamis secara default, dengan otomatis menyesuaikan jumlah upaya penalaran berdasarkan kompleksitas permintaan pengguna. Namun, jika Anda memiliki batasan latensi tertentu atau memerlukan model untuk melakukan penalaran yang lebih mendalam dari biasanya, Anda dapat menggunakan parameter secara opsional untuk mengontrol perilaku berpikir.
Tingkat pemikiran (Gemini 3 Pro)
Parameter thinkingLevel, yang direkomendasikan untuk model Gemini 3 dan yang lebih baru,
memungkinkan Anda mengontrol perilaku penalaran.
Anda dapat menyetel tingkat pemikiran ke "low" atau "high".
Jika Anda tidak menentukan tingkat penalaran, Gemini akan menggunakan tingkat penalaran dinamis default model, "high", untuk Pratinjau Gemini 3 Pro.
Python
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-3-pro-preview",
contents="Provide a list of 3 famous physicists and their key contributions",
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(thinking_level="low")
),
)
print(response.text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
async function main() {
const response = await ai.models.generateContent({
model: "gemini-3-pro-preview",
contents: "Provide a list of 3 famous physicists and their key contributions",
config: {
thinkingConfig: {
thinkingLevel: "low",
},
},
});
console.log(response.text);
}
main();
Go
package main
import (
"context"
"fmt"
"google.golang.org/genai"
"os"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
thinkingLevelVal := "low"
contents := genai.Text("Provide a list of 3 famous physicists and their key contributions")
model := "gemini-3-pro-preview"
resp, _ := client.Models.GenerateContent(ctx, model, contents, &genai.GenerateContentConfig{
ThinkingConfig: &genai.ThinkingConfig{
ThinkingLevel: &thinkingLevelVal,
},
})
fmt.Println(resp.Text())
}
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "Provide a list of 3 famous physicists and their key contributions"
}
]
}
],
"generationConfig": {
"thinkingConfig": {
"thinkingLevel": "low"
}
}
}'
Anda tidak dapat menonaktifkan kemampuan berpikir Gemini 3 Pro.
Model seri Gemini 2.5 tidak mendukung thinkingLevel; gunakan thinkingBudget sebagai gantinya.
Anggaran penalaran
Parameter thinkingBudget, yang diperkenalkan dengan seri Gemini 2.5, memandu
model tentang jumlah token penalaran tertentu yang akan digunakan untuk melakukan penalaran.
Berikut adalah detail konfigurasi thinkingBudget untuk setiap jenis model.
Anda dapat menonaktifkan pemikiran dengan menyetel thinkingBudget ke 0.
Menetapkan thinkingBudget ke -1 akan mengaktifkan pemikiran dinamis, yang berarti model akan menyesuaikan anggaran berdasarkan kompleksitas permintaan.
| Model | Setelan default (Anggaran penalaran tidak ditetapkan) |
Rentang | Nonaktifkan alur berpikir | Aktifkan pemikiran dinamis |
|---|---|---|---|---|
| 2.5 Pro | Pemikiran dinamis: Model memutuskan kapan dan seberapa banyak yang harus dipikirkan | 128 hingga 32768 |
T/A: Tidak dapat menonaktifkan pemikiran | thinkingBudget = -1 |
| 2.5 Flash | Pemikiran dinamis: Model memutuskan kapan dan seberapa banyak yang harus dipikirkan | 0 hingga 24576 |
thinkingBudget = 0 |
thinkingBudget = -1 |
| Pratinjau Flash 2.5 | Pemikiran dinamis: Model memutuskan kapan dan seberapa banyak yang harus dipikirkan | 0 hingga 24576 |
thinkingBudget = 0 |
thinkingBudget = -1 |
| 2.5 Flash Lite | Model tidak berpikir | 512 hingga 24576 |
thinkingBudget = 0 |
thinkingBudget = -1 |
| Pratinjau 2.5 Flash Lite | Model tidak berpikir | 512 hingga 24576 |
thinkingBudget = 0 |
thinkingBudget = -1 |
| Pratinjau Robotics-ER 1.5 | Pemikiran dinamis: Model memutuskan kapan dan seberapa banyak yang harus dipikirkan | 0 hingga 24576 |
thinkingBudget = 0 |
thinkingBudget = -1 |
| Pratinjau Audio Native Live 2.5 Flash (09-2025) | Pemikiran dinamis: Model memutuskan kapan dan seberapa banyak yang harus dipikirkan | 0 hingga 24576 |
thinkingBudget = 0 |
thinkingBudget = -1 |
Python
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-2.5-pro",
contents="Provide a list of 3 famous physicists and their key contributions",
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(thinking_budget=1024)
# Turn off thinking:
# thinking_config=types.ThinkingConfig(thinking_budget=0)
# Turn on dynamic thinking:
# thinking_config=types.ThinkingConfig(thinking_budget=-1)
),
)
print(response.text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
async function main() {
const response = await ai.models.generateContent({
model: "gemini-2.5-pro",
contents: "Provide a list of 3 famous physicists and their key contributions",
config: {
thinkingConfig: {
thinkingBudget: 1024,
// Turn off thinking:
// thinkingBudget: 0
// Turn on dynamic thinking:
// thinkingBudget: -1
},
},
});
console.log(response.text);
}
main();
Go
package main
import (
"context"
"fmt"
"google.golang.org/genai"
"os"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
thinkingBudgetVal := int32(1024)
contents := genai.Text("Provide a list of 3 famous physicists and their key contributions")
model := "gemini-2.5-pro"
resp, _ := client.Models.GenerateContent(ctx, model, contents, &genai.GenerateContentConfig{
ThinkingConfig: &genai.ThinkingConfig{
ThinkingBudget: &thinkingBudgetVal,
// Turn off thinking:
// ThinkingBudget: int32(0),
// Turn on dynamic thinking:
// ThinkingBudget: int32(-1),
},
})
fmt.Println(resp.Text())
}
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-pro:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "Provide a list of 3 famous physicists and their key contributions"
}
]
}
],
"generationConfig": {
"thinkingConfig": {
"thinkingBudget": 1024
}
}
}'
Bergantung pada perintahnya, model dapat melampaui atau tidak memenuhi anggaran token.
Tanda tangan pikiran
Gemini API bersifat stateless, sehingga model memperlakukan setiap permintaan API secara independen dan tidak memiliki akses ke konteks pemikiran dari giliran sebelumnya dalam interaksi multi-giliran.
Untuk memungkinkan pemeliharaan konteks pemikiran di seluruh interaksi multi-giliran, Gemini menampilkan tanda tangan pemikiran, yang merupakan representasi terenkripsi dari proses pemikiran internal model.
- Model Gemini 2.5 menampilkan tanda tangan pemikiran saat pemikiran diaktifkan dan permintaan mencakup panggilan fungsi, khususnya deklarasi fungsi.
- Model Gemini 3 dapat menampilkan tanda tangan pemikiran untuk semua jenis bagian. Sebaiknya Anda selalu meneruskan semua tanda tangan seperti yang diterima, tetapi hal ini diperlukan untuk tanda tangan panggilan fungsi. Baca halaman Tanda Tangan Pikiran untuk mempelajari lebih lanjut.
Google GenAI SDK secara otomatis menangani pengembalian tanda tangan pemikiran untuk Anda. Anda hanya perlu mengelola tanda tangan pemikiran secara manual jika Anda mengubah histori percakapan atau menggunakan REST API.
Batasan penggunaan lain yang perlu dipertimbangkan dengan panggilan fungsi meliputi:
- Tanda tangan ditampilkan dari model dalam bagian lain dalam respons, misalnya panggilan fungsi atau bagian teks. Kembalikan seluruh respons dengan semua bagiannya ke model pada giliran berikutnya.
- Jangan menggabungkan bagian dengan tanda tangan.
- Jangan menggabungkan satu bagian dengan tanda tangan dengan bagian lain tanpa tanda tangan.
Harga
Jika penalaran diaktifkan, harga respons adalah jumlah token output dan token penalaran. Anda bisa mendapatkan total jumlah token pemikiran yang dihasilkan dari kolom thoughtsTokenCount.
Python
# ...
print("Thoughts tokens:",response.usage_metadata.thoughts_token_count)
print("Output tokens:",response.usage_metadata.candidates_token_count)
JavaScript
// ...
console.log(`Thoughts tokens: ${response.usageMetadata.thoughtsTokenCount}`);
console.log(`Output tokens: ${response.usageMetadata.candidatesTokenCount}`);
Go
// ...
usageMetadata, err := json.MarshalIndent(response.UsageMetadata, "", " ")
if err != nil {
log.Fatal(err)
}
fmt.Println("Thoughts tokens:", string(usageMetadata.thoughts_token_count))
fmt.Println("Output tokens:", string(usageMetadata.candidates_token_count))
Model pemikiran menghasilkan pemikiran lengkap untuk meningkatkan kualitas respons akhir, lalu menghasilkan ringkasan untuk memberikan insight tentang proses pemikiran. Jadi, harga didasarkan pada token pemikiran penuh yang perlu dihasilkan model untuk membuat ringkasan, meskipun hanya ringkasan yang dihasilkan dari API.
Anda dapat mempelajari lebih lanjut token dalam panduan Penghitungan token.
Praktik terbaik
Bagian ini mencakup beberapa panduan untuk menggunakan model berpikir secara efisien. Seperti biasa, mengikuti panduan dan praktik terbaik pembuatan perintah kami akan memberikan hasil terbaik.
Proses debug dan pengarahan
Tinjau penalaran: Jika Anda tidak mendapatkan respons yang diharapkan dari model pemikiran, Anda dapat menganalisis ringkasan pemikiran Gemini dengan cermat. Anda dapat melihat cara model memecah tugas dan mencapai kesimpulannya, serta menggunakan informasi tersebut untuk mengoreksi hasil yang benar.
Memberikan Panduan dalam Penalaran: Jika Anda menginginkan output yang sangat panjang, Anda dapat memberikan panduan dalam perintah untuk membatasi jumlah pemikiran yang digunakan model. Dengan begitu, Anda dapat mencadangkan lebih banyak output token untuk respons Anda.
Kompleksitas tugas
- Tugas Mudah (Pemikiran bisa DINONAKTIFKAN): Untuk permintaan langsung yang tidak memerlukan penalaran yang rumit, seperti pengambilan atau klasifikasi fakta, pemikiran tidak diperlukan. Contohnya antara lain:
- "Di mana DeepMind didirikan?"
- "Apakah email ini meminta rapat atau hanya memberikan informasi?"
- Tugas Sedang (Default/Beberapa Pemikiran): Banyak permintaan umum yang diuntungkan dari
pemrosesan langkah demi langkah atau pemahaman yang lebih mendalam. Gemini dapat menggunakan kemampuan berpikir secara fleksibel untuk tugas seperti:
- Menganalogikan fotosintesis dan tumbuh dewasa.
- Bandingkan dan bedakan mobil listrik dan mobil hibrida.
- Tugas Sulit (Kemampuan Berpikir Maksimum): Untuk tantangan yang benar-benar kompleks, seperti menyelesaikan soal matematika yang rumit atau tugas coding, sebaiknya tetapkan anggaran berpikir yang tinggi. Jenis tugas ini mengharuskan model menggunakan kemampuan penalaran dan perencanaannya secara penuh, yang sering kali melibatkan banyak langkah internal sebelum memberikan jawaban. Contohnya antara lain:
- Pecahkan soal 1 di AIME 2025: Temukan jumlah semua basis bilangan bulat b > 9 yang membuat 17b menjadi pembagi 97b.
- Tulis kode Python untuk aplikasi web yang memvisualisasikan data pasar saham real-time, termasuk autentikasi pengguna. Buat seefisien mungkin.
Model, alat, dan kemampuan yang didukung
Fitur berpikir didukung di semua model seri 3 dan 2.5. Anda dapat menemukan semua kemampuan model di halaman ringkasan model.
Model Thinking berfungsi dengan semua alat dan kemampuan Gemini. Hal ini memungkinkan model berinteraksi dengan sistem eksternal, mengeksekusi kode, atau mengakses informasi real-time, dengan menggabungkan hasilnya ke dalam penalaran dan respons akhir.
Anda dapat mencoba contoh penggunaan alat dengan model pemikiran di Buku resep pemikiran.
Apa langkah selanjutnya?
- Cakupan pemikiran tersedia di panduan Kompatibilitas OpenAI kami.