Gemini denkt nach
Die Modelle der Gemini 3- und 2.5-Serie verwenden einen „Denkprozess“, der ihre Fähigkeiten zum logischen Denken und zur mehrstufigen Planung erheblich verbessert. Dadurch eignen sie sich hervorragend für komplexe Aufgaben wie Programmieren, fortgeschrittene Mathematik und Datenanalyse.
Wenn Sie ein Denkmodell verwenden, führt Gemini interne Überlegungen durch, bevor es antwortet. Die Interactions API stellt diese Begründung über thought-Schritte bereit. Das sind spezielle Schritte, die chronologisch neben Funktionsaufrufen, Nutzereingaben oder Modellausgaben im steps-Array angezeigt werden.
Jeder Denkprozessschritt enthält zwei Felder:
| Feld | Erforderlich? | Beschreibung |
|---|---|---|
signature |
✅ Ja | Eine verschlüsselte Darstellung des internen Entscheidungsstatus des Modells. Immer vorhanden, auch wenn das Modell nur minimalen Reasoning-Aufwand betreibt. |
summary |
❌ Nein | Eine Reihe von Inhalten (Text und/oder Bilder), die die Begründung zusammenfassen. Kann je nach thinking_summaries-Konfiguration, der Menge an Reasoning, die das Modell durchgeführt hat, oder dem Inhaltstyp leer sein (z. B. haben Bild-Latents möglicherweise keine Textzusammenfassungen). |
Interaktionen mit dem Denkprozess
Eine Interaktion mit einem Denkmodell zu starten, ähnelt jeder anderen Interaktionsanfrage. Geben Sie im Feld model eines der Modelle mit Unterstützung für das Denken an:
Python
# This will only work for SDK newer than 2.0.0
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="gemini-3-flash-preview",
input="Explain the concept of Occam's Razor and provide a simple, everyday example."
)
print(interaction.steps[-1].content[0].text)
JavaScript
// This will only work for SDK newer than 2.0.0
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const interaction = await client.interactions.create({
model: "gemini-3-flash-preview",
input: "Explain the concept of Occam's Razor and provide a simple, everyday example."
});
console.log(interaction.steps.at(-1).content[0].text);
REST
# Specifies the API revision to avoid breaking changes when they become default
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Api-Revision: 2026-05-20" \
-H 'Content-Type: application/json' \
-d '{
"model": "gemini-3-flash-preview",
"input": "Explain the concept of Occam'\''s Razor and provide a simple example."
}'
Zusammenfassungen von Gedanken
Zusammenfassungen des Denkprozesses geben Einblicke in den internen Prozess der Problemlösung des Modells.
Standardmäßig wird nur die endgültige Ausgabe zurückgegeben. Sie können Zusammenfassungen von Gedanken mit thinking_summaries aktivieren:
Python
# This will only work for SDK newer than 2.0.0
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="gemini-3-flash-preview",
input="What is the sum of the first 50 prime numbers?",
generation_config={
"thinking_summaries": "auto"
}
)
for step in interaction.steps:
if step.type == "thought":
print("Thought summary:")
for content_block in step.summary:
if content_block.type == "text":
print(content_block.text)
print()
elif step.type == "model_output":
for content_block in step.content:
if content_block.type == "text":
print("Answer:")
print(content_block.text)
print()
JavaScript
// This will only work for SDK newer than 2.0.0
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const interaction = await client.interactions.create({
model: "gemini-3-flash-preview",
input: "What is the sum of the first 50 prime numbers?",
generation_config: {
thinking_summaries: "auto"
}
});
for (const step of interaction.steps) {
if (step.type === "thought") {
console.log("Thought summary:");
for (const contentBlock of step.summary) {
if (contentBlock.type === "text") console.log(contentBlock.text);
}
} else if (step.type === "model_output") {
for (const contentBlock of step.content) {
if (contentBlock.type === "text") {
console.log("Answer:");
console.log(contentBlock.text);
}
}
}
}
REST
# Specifies the API revision to avoid breaking changes when they become default
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Api-Revision: 2026-05-20" \
-H 'Content-Type: application/json' \
-d '{
"model": "gemini-3-flash-preview",
"input": "What is the sum of the first 50 prime numbers?",
"generation_config": {
"thinking_summaries": "auto"
}
}'
Ein Denkblock darf in diesen Fällen nur eine Signatur ohne Zusammenfassung enthalten:
- Einfache Anfragen, bei denen das Modell nicht genügend Informationen berücksichtigt hat, um eine Zusammenfassung zu erstellen
thinking_summaries: "none", in denen Zusammenfassungen explizit deaktiviert sind- Für bestimmte Arten von Gedankeninhalten, z. B. Bilder, sind möglicherweise keine Textzusammenfassungen verfügbar.
Ihr Code sollte immer Thought-Blöcke verarbeiten, in denen summary leer ist oder fehlt.
Streaming mit Denken
Streaming verwenden, um während der Generierung Zusammenfassungen von Gedanken zu erhalten. Gedankenblöcke werden über Server-Sent Events (SSE) mit zwei verschiedenen Deltatyps bereitgestellt:
| Deltatyp | Enthält | Wann werden die Daten gesendet? |
|---|---|---|
thought_summary |
Zusammenfassung von Text- oder Bildinhalten | Ein oder mehrere Deltas mit inkrementeller Zusammenfassung |
thought_signature |
Die kryptografische Signatur | das letzte Delta vor step.stop |
Python
# This will only work for SDK newer than 2.0.0
from google import genai
client = genai.Client()
prompt = """
Alice, Bob, and Carol each live in a different house on the same street: red, green, and blue.
Alice does not live in the red house.
Bob does not live in the green house.
Carol does not live in the red or green house.
Which house does each person live in?
"""
thoughts = ""
answer = ""
stream = client.interactions.create(
model="gemini-3-flash-preview",
input=prompt,
generation_config={
"thinking_summaries": "auto"
},
stream=True
)
for event in stream:
if event.event_type == "step.delta":
if event.delta.type == "thought_summary":
if not thoughts:
print("Thinking...")
summary_text = event.delta.content.get('text', '') if hasattr(event.delta, 'content') else getattr(event.delta, 'text', '')
print(f"[Thought] {summary_text}", end="")
thoughts += summary_text
elif event.delta.type == "text" and event.delta.text:
if not answer:
print("\nAnswer:")
print(event.delta.text, end="")
answer += event.delta.text
JavaScript
// This will only work for SDK newer than 2.0.0
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const prompt = `Alice, Bob, and Carol each live in a different house on the same
street: red, green, and blue. Alice does not live in the red house.
Bob does not live in the green house.
Carol does not live in the red or green house.
Which house does each person live in?`;
let thoughts = "";
let answer = "";
const stream = await client.interactions.create({
model: "gemini-3-flash-preview",
input: prompt,
generation_config: {
thinking_summaries: "auto"
},
stream: true
});
for await (const event of stream) {
if (event.event_type === "step.delta") {
if (event.delta.type === "thought_summary") {
if (!thoughts) console.log("Thinking...");
const text = event.delta.content?.text || "";
process.stdout.write(`[Thought] ${text}`);
thoughts += text;
} else if (event.delta.type === "text" && event.delta.text) {
if (!answer) console.log("\nAnswer:");
process.stdout.write(event.delta.text);
answer += event.delta.text;
}
}
}
REST
# Specifies the API revision to avoid breaking changes when they become default
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Api-Revision: 2026-05-20" \
-H 'Content-Type: application/json' \
--no-buffer \
-d '{
"model": "gemini-3-flash-preview",
"input": "Alice, Bob, and Carol each live in a different house on the same street: red, green, and blue. Alice does not live in the red house. Bob does not live in the green house. Carol does not live in the red or green house. Which house does each person live in?",
"generation_config": {
"thinking_summaries": "auto"
},
"stream": true
}'
Die Streaming-Antwort verwendet Server-Sent Events (SSE) und besteht aus Schritten und Ereignissen. Unten siehst du ein Beispiel.
event: interaction.created
data: {"interaction":{"id":"v1_xxx","status":"in_progress","object":"interaction","model":"gemini-3-flash-preview"},"event_type":"interaction.created"}
event: step.start
data: {"index":0,"step":{"signature":"","summary":[{"text":"**Evaluating the clues**\n\nI'm considering...","type":"text"}],"type":"thought"},"event_type":"step.start"}
event: step.delta
data: {"index":0,"delta":{"signature":"EpoGCpcGAXLI2nx/...","type":"thought_signature"},"event_type":"step.delta"}
event: step.stop
data: {"index":0,"event_type":"step.stop"}
event: step.start
data: {"index":1,"step":{"content":[{"text":"Based on the clues provided, here","type":"text"}],"type":"model_output"},"event_type":"step.start"}
event: step.delta
data: {"index":1,"delta":{"text":" is the answer to your question...","type":"text"},"event_type":"step.delta"}
event: step.stop
data: {"index":1,"event_type":"step.stop"}
event: interaction.completed
data: {"interaction":{"id":"v1_xxx","status":"completed","usage":{"total_tokens":530,"total_input_tokens":62,"total_output_tokens":171,"total_thought_tokens":297}},"event_type":"interaction.completed"}
event: done
data: [DONE]
Denken kontrollieren
Gemini-Modelle verwenden standardmäßig dynamisches Denken und passen den Aufwand für das Reasoning automatisch an die Komplexität der Anfrage an. Sie können dieses Verhalten mit dem Parameter thinking_level steuern.
| Modell | Standardüberlegung | Unterstützte Stufen |
|---|---|---|
| gemini-3.1-pro-preview | Ein (hoch) | niedrig, mittel, hoch |
| gemini-3-flash-preview | Ein (hoch) | minimal, niedrig, mittel, hoch |
| gemini-3-pro-preview | Ein (hoch) | niedrig, hoch |
| gemini-2.5-pro | An | niedrig, mittel, hoch |
| gemini-2.5-flash | An | niedrig, mittel, hoch |
| gemini-2.5-flash-lite | Aus | niedrig, mittel, hoch |
Python
# This will only work for SDK newer than 2.0.0
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="gemini-3-flash-preview",
input="Provide a list of 3 famous physicists and their key contributions",
generation_config={
"thinking_level": "low"
}
)
print(interaction.steps[-1].content[0].text)
JavaScript
// This will only work for SDK newer than 2.0.0
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const interaction = await client.interactions.create({
model: "gemini-3-flash-preview",
input: "Provide a list of 3 famous physicists and their key contributions",
generation_config: {
thinking_level: "low"
}
});
console.log(interaction.steps.at(-1).content[0].text);
REST
# Specifies the API revision to avoid breaking changes when they become default
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Api-Revision: 2026-05-20" \
-H 'Content-Type: application/json' \
-d '{
"model": "gemini-3-flash-preview",
"input": "Provide a list of 3 famous physicists and their key contributions",
"generation_config": {
"thinking_level": "low"
}
}'
Gedankensignaturen
Gedankensignaturen sind verschlüsselte Darstellungen der internen Argumentation des Modells. Sie müssen die Kontinuität der Argumentation bei Multi-Turn-Interaktionen aufrechterhalten.
Mit der Interactions API ist die Verarbeitung von Gedanken-Signaturen viel einfacher als mit der generateContent API.
Statusbehafteter Modus (empfohlen)
Wenn Sie die Interactions API standardmäßig im zustandsorientierten Modus verwenden (indem Sie store: true festlegen und previous_interaction_id in nachfolgenden Turns übergeben), verwaltet der Server den Unterhaltungsstatus automatisch, einschließlich aller Denkblöcke und Signaturen. In diesem Modus müssen Sie nichts in Bezug auf Signaturen unternehmen. Sie werden vollständig serverseitig verarbeitet.
Zustandsloser Modus
Wenn Sie den Unterhaltungsstatus selbst verwalten (zustandsloser Modus) und bei jeder Anfrage den vollständigen Verlauf der Ein- und Ausgaben übergeben:
- Sie MÜSSEN immer alle
thought-Blöcke genau so noch einmal senden, wie sie vom Modell empfangen wurden. - Sie sollten KEINE Denkblöcke aus dem Verlauf entfernen oder ändern, da sie die Signaturen enthalten, die das Modell für die Fortsetzung seiner Argumentation benötigt.
- Wenn Sie das Modell innerhalb einer Sitzung wechseln, sollten Sie die Denkblöcke des vorherigen Modells noch einmal senden. Das Backend verwaltet die Kompatibilität.
Preise
Wenn der Thinking-Modus aktiviert ist, setzt sich der Preis für die Antwort aus der Summe der Ausgabe-Tokens und der Thinking-Tokens zusammen. Die Gesamtzahl der generierten Denk-Tokens finden Sie im Feld total_thought_tokens.
Python
# This will only work for SDK newer than 2.0.0
# ...
print("Thoughts tokens:", interaction.usage.total_thought_tokens)
print("Output tokens:", interaction.usage.total_output_tokens)
JavaScript
// This will only work for SDK newer than 2.0.0
// ...
console.log(`Thoughts tokens: ${interaction.usage.total_thought_tokens}`);
console.log(`Output tokens: ${interaction.usage.total_output_tokens}`);
Denkmodelle generieren vollständige Gedanken, um die Qualität der endgültigen Antwort zu verbessern, und geben dann Zusammenfassungen aus, um Einblicke in den Denkprozess zu geben. Die Preise basieren auf den vollständigen Thought-Tokens, die das Modell generieren muss, obwohl nur die Zusammenfassung von der API ausgegeben wird.
Weitere Informationen zu Tokens finden Sie im Leitfaden Tokens zählen.
Best Practices
Wenn Sie diese Richtlinien beachten, können Sie Denkmodelle effizient einsetzen.
- Begründung überprüfen: Analysieren Sie Zusammenfassungen der Gedankengänge, um Fehler zu verstehen und Prompts zu verbessern.
- Budget für Denkprozesse steuern: Weisen Sie das Modell an, bei langen Ausgaben weniger zu überlegen, um Tokens zu sparen.
- Einfache Aufgaben: Verwenden Sie nur wenig Denkarbeit für die Faktenermittlung oder ‑klassifizierung (z.B. „Wo wurde DeepMind gegründet?“).
- Aufgaben moderieren: Verwenden Sie die Standardlogik, um Konzepte zu vergleichen oder kreative Argumentation zu nutzen (z.B. „Vergleiche Elektro- und Hybridautos“).
- Komplexe Aufgaben: Verwenden Sie „Maximales Denken“ für komplexes Programmieren, Mathematik oder mehrstufige Planung (z.B. zum Lösen von AIME-Mathematikaufgaben).
Nächste Schritte
- Textgenerierung: Einfache Textantworten
- Funktionsaufrufe: Verbindung zu Tools herstellen
- Leitfaden zu Gemini 3: Modellspezifische Funktionen