Anmerkung des Autors: Eine tiefgehende Analyse des thoughtSignature-Feldes in der Nano Banana 2 API-Antwort: Es handelt sich nicht um ein Bild, sondern um eine verschlüsselte Denk-Signatur. Wir erläutern die Struktur der Thinking-Modus-Antwort, die korrekte Handhabung und häufige Fallstricke.
Viele Entwickler, die die Nano Banana 2 API für die Bilderzeugung nutzen, bemerken in der Antwort neben den Bilddaten ein Feld namens thoughtSignature. Es handelt sich ebenfalls um eine lange Base64-kodierte Zeichenfolge, die auf den ersten Blick wie Bilddaten aussieht. Versuche, diese zu dekodieren, schlagen jedoch fehl – was genau ist das also? Dieser Artikel klärt das Wesen von thoughtSignature, warum es kein Bild ist und wie man es bei mehrstufigen Dialogen korrekt verarbeitet.
Kernnutzen: Nach dem Lesen dieses Artikels verstehen Sie das technische Prinzip von thoughtSignature, vermeiden Fehlinterpretationen als Bilddaten und beherrschen die korrekte Weitergabe der Signatur in Dialogen.

Nano Banana 2 API thoughtSignature: Kernpunkte
Zuerst die Antwort auf die häufigste Frage vorab: thoughtSignature ist kein Bild und kann nicht als solches dekodiert werden. Es handelt sich um eine kryptografische Signatur des Denkprozesses des Modells.
| Punkt | Erklärung | Hinweis für Entwickler |
|---|---|---|
| Wesen | Base64-kodierte Binärdaten einer kryptografischen Signatur | Nicht dekodierbar, nicht veränderbar, nicht fälschbar |
| Inhalt | Schnappschuss des internen Zustands des Modell-Inferenzprozesses | Für Entwickler völlig intransparent |
| Zweck | Wahrung der Inferenz-Kontinuität bei Multi-Turn-Dialogen | Muss unverändert an die nächste Anfrage zurückgegeben werden |
| Format | Sieht aus wie ein Base64-Bild, ist aber keines | Keine Magic Bytes, als kein Bildformat identifizierbar |
| Verpflichtung | Bei Tool-Aufrufen zwingend erforderlich (sonst 400-Fehler) | Bei reinem Text optional, mindert jedoch die Qualität |
Wie sieht die thoughtSignature in der Nano Banana 2 API-Antwort aus?
Wenn Sie Nano Banana 2 zur Bilderzeugung aufrufen, kann das parts-Array in der API-Antwort mehrere Elemente enthalten. Eine typische Antwortstruktur sieht so aus:
{
"candidates": [{
"content": {
"role": "model",
"parts": [
{
"text": "Lass mich darüber nachdenken, wie ich dieses Bild generieren kann...",
"thought": true
},
{
"text": "",
"thoughtSignature": "CpcHAdHtim9+q4rstcbvQC0ic4x1/vqQlCJ..."
},
{
"inlineData": {
"mime_type": "image/png",
"data": "iVBORw0KGgoAAAANSUhEUg..."
}
}
]
}
}]
}
Hier gibt es drei parts:
- Denk-Zusammenfassung (
thought: true): Eine textuelle Übersicht des Inferenzprozesses des Modells. - Denk-Signatur (
thoughtSignature): Ein verschlüsselter Schnappschuss des Inferenzzustands. - Bilddaten (
inlineData): Die tatsächlichen Base64-Bilddaten.
Das Hauptproblem besteht darin, dass sowohl der zweite als auch der dritte Teil Base64-kodierte Daten enthalten. Wenn Ihr Code nicht korrekt zwischen diesen unterscheidet, wird die thoughtSignature fälschlicherweise als Bild dekodiert – und Sie werden feststellen, dass sie sich nicht in ein Bild umwandeln lässt.

title: "Technische Grundlagen der thoughtSignature der Nano Banana 2 API"
Technische Grundlagen der thoughtSignature der Nano Banana 2 API
Nachdem wir geklärt haben, dass thoughtSignature kein Bild ist, schauen wir uns an, was es eigentlich ist.
Das Wesen von thoughtSignature
Gemäß der offiziellen Google-Dokumentation:
thoughtSignature (string, optional): "Eine undurchsichtige Signatur für den Gedankengang, damit dieser in nachfolgenden Anfragen wiederverwendet werden kann. Ein base64-kodierter String."
Einfach ausgedrückt: thoughtSignature ist ein "Gedächtnis-Schnappschuss" des Denkprozesses des Modells, der kryptografisch signiert und als Base64-String zurückgegeben wird. Seine Aufgabe ist es, dem Modell zu ermöglichen, sich in mehrstufigen Dialogen an den vorherigen Schlussfolgerungsprozess zu "erinnern", um die gedankliche Kohärenz zu wahren.
Wichtige Merkmale:
- Undurchsichtig (Opaque): Entwickler können den Inhalt nicht lesen und müssen sich nicht um die interne Struktur kümmern.
- Kryptografische Signatur: Vom Google-Server signiert und nicht fälschbar – die Übermittlung eines zufälligen Base64-Strings führt zu einem Fehler wegen "ungültiger Signatur".
- Zustandsbehaftet (Stateful): Enthält die Schlussfolgerungskette und Zwischenergebnisse des Modells bei der Generierung der aktuellen Antwort.
Unterschied zwischen thoughtSignature und thought
Diese beiden Felder werden oft verwechselt, sind aber grundlegend verschieden:
| Feld | Typ | Bedeutung | Lesbarkeit | Zweck |
|---|---|---|---|---|
| thought | boolean | Markiert, ob der aktuelle Teil eine Zusammenfassung des Denkprozesses ist | Lesbar (Text) | Anzeige des Schlussfolgerungsprozesses |
| thoughtSignature | string (base64) | Verschlüsselter Schnappschuss des Schlussfolgerungszustands | Nicht lesbar (Geheimtext) | Übertragung des Zustands in Dialogen |
thought ist die Schlussfolgerungszusammenfassung für den Menschen, thoughtSignature ist das Schlussfolgerungsgedächtnis für das Modell.
Warum benötigt die Nano Banana 2 API thoughtSignature?
Nano Banana 2 gehört zur Gemini 3.1-Serie und unterstützt den Thinking-Modus. Bevor das Modell ein Bild generiert, führt es interne Schlussfolgerungen durch – es analysiert die Absicht der Eingabeaufforderung, plant die Komposition, wählt Farbschemata usw.
Der vollständige Zustand dieses Schlussfolgerungsprozesses wird komprimiert und als thoughtSignature verschlüsselt. Wenn Sie in einem mehrstufigen Dialog Bilder bearbeiten (z. B. "Ändere den Hintergrund in Blau"), muss das Modell den vorherigen Schlussfolgerungszustand wiederherstellen, um Ihre Änderungsabsicht präzise zu verstehen.
Wenn Sie thoughtSignature nicht zurücksenden:
- Bei reinem Text: Kein Fehler, aber die Qualität und Kohärenz der Schlussfolgerungen sinken.
- Bei Werkzeug- oder Funktionsaufrufen: Direkte Rückgabe eines HTTP 400-Fehlers.
- Bei mehrstufigen Bildbearbeitungsdialogen: Kontextverlust möglich, Bearbeitungsergebnisse sind ungenau.
🎯 Entwickler-Tipp: In jedem Szenario mit mehrstufigen Dialogen sollten Sie
thoughtSignaturevollständig beibehalten und zurücksenden. Bei der Nutzung über APIYI (apiyi.com) übernimmt die Plattform automatisch die Übertragung der Signatur und die Formatkompatibilität, sodass Entwickler diese nicht manuell verwalten müssen.
Korrekte Handhabung der thoughtSignature in der Nano Banana 2 API
Minimalistisches Beispiel: Korrektes Parsen der Antwort und Unterscheidung zwischen Bild und Signatur
Der folgende Code zeigt, wie Sie Bilder korrekt aus der Nano Banana 2-Antwort extrahieren und gleichzeitig thoughtSignature für die spätere Verwendung speichern:
from google import genai
from google.genai import types
client = genai.Client(api_key="YOUR_API_KEY")
response = client.models.generate_content(
model="gemini-3.1-flash-image-preview",
contents=["Zeichne eine weiße Katze unter einem Kirschblütenbaum"],
config=types.GenerateContentConfig(
response_modalities=["TEXT", "IMAGE"],
image_config=types.ImageConfig(image_size="2K"),
thinking_config=types.ThinkingConfig(
include_thoughts=True
),
)
)
saved_signature = None
for part in response.parts:
if hasattr(part, 'thought') and part.thought:
print(f"Schlussfolgerungsprozess: {part.text[:100]}...")
elif hasattr(part, 'thought_signature') and part.thought_signature:
saved_signature = part.thought_signature # Speichern, nicht dekodieren!
print("thoughtSignature gespeichert (kein Bild)")
elif image := part.as_image():
image.save("cat_sakura.png", format="PNG")
print("Bild gespeichert")
Vollständiger Code zur Rückübertragung von thoughtSignature in Dialogen
from google import genai
from google.genai import types
client = genai.Client(api_key="YOUR_API_KEY")
# Erste Runde: Bild generieren
response1 = client.models.generate_content(
model="gemini-3.1-flash-image-preview",
contents=["Zeichne eine weiße Katze unter einem Kirschblütenbaum"],
config=types.GenerateContentConfig(
response_modalities=["TEXT", "IMAGE"],
image_config=types.ImageConfig(image_size="2K"),
thinking_config=types.ThinkingConfig(
include_thoughts=True
),
)
)
# Bild und Signatur extrahieren
image_data = None
thought_signature = None
model_parts = []
for part in response1.parts:
model_parts.append(part) # Vollständige parts beibehalten
if hasattr(part, 'thought_signature') and part.thought_signature:
thought_signature = part.thought_signature
elif image := part.as_image():
image.save("round1.png", format="PNG")
# Zweite Runde: Bearbeitung basierend auf dem Ergebnis der ersten Runde
# Wichtig: Die vollständigen parts der ersten Runde (inkl. thoughtSignature) als Historie übergeben
history = [
{"role": "user", "parts": [{"text": "Zeichne eine weiße Katze unter einem Kirschblütenbaum"}]},
{"role": "model", "parts": model_parts}, # Enthält thoughtSignature
]
response2 = client.models.generate_content(
model="gemini-3.1-flash-image-preview",
contents=history + [
{"role": "user", "parts": [{"text": "Ändere den Hintergrund in einen Nachthimmel und füge einen Mond hinzu"}]}
],
config=types.GenerateContentConfig(
response_modalities=["TEXT", "IMAGE"],
image_config=types.ImageConfig(image_size="2K"),
)
)
for part in response2.parts:
if image := part.as_image():
image.save("round2_edited.png", format="PNG")
print("Bearbeitetes Bild gespeichert")
Empfehlung: Wenn Sie Nano Banana 2 über APIYI (apiyi.com) aufrufen, bietet die Plattform eine OpenAI-kompatible Schnittstelle, die die Übertragung der
thoughtSignatureautomatisch abwickelt, sodass Sie den Signaturstatus in Dialogen nicht manuell verwalten müssen.
Nano Banana 2 API thoughtSignature: Häufige Fehler und Lösungen
Zusammenfassung der Fehlerquellen
| Szenario | Problem | Ursache | Lösung |
|---|---|---|---|
| Signatur als Bild dekodiert | base64-Dekodierung schlägt fehl | thoughtSignature ist verschlüsselt, kein Bild |
Prüfen, ob ein inlineData-Feld vorhanden ist, bevor dekodiert wird |
| Verlust der Signatur bei Dialogen | Sinkende Antwortqualität oder 400-Fehler | thoughtSignature wurde nicht zurückgegeben |
Speichern Sie die vollständigen parts inklusive Signatur für die nächste Runde |
| Gefälschte Signatur | "invalid signature"-Fehler | Signatur wird serverseitig validiert | Verwenden Sie zwingend den Wert, den die API zurückgibt |
| Inkonsistente Feldnamen | Python vs. REST-API | REST nutzt camelCase, SDK nutzt snake_case | REST: thoughtSignature, Python: thought_signature |
| Fehlende Streaming-Daten | Signatur geht verloren | Signatur kann in einem leeren Text-Part des letzten Chunks liegen | Prüfen Sie das Signaturfeld auch dann, wenn der Text leer ist |
Nano Banana 2 API: Vergleich der Feldnamen für thoughtSignature
Die Feldnamen variieren je nach Aufrufmethode, was oft zu Verwirrung führt:
| Aufrufmethode | Feldname | Position |
|---|---|---|
| REST API (Raw JSON) | thoughtSignature |
parts[].thoughtSignature |
| Python SDK | thought_signature |
part.thought_signature |
| OpenAI-kompatibel (Proxy) | thought_signature |
provider_specific_fields.thought_signature |
Nano Banana 2 API Notlösung: Dummy-Signatur
Falls Sie alte Dialogverläufe migrieren und keine gültige thoughtSignature besitzen, stellt Google einen speziellen Umgehungswert bereit:
DUMMY_SIGNATURE = "context_engineering_is_the_way_to_go"
Wenn Sie diesen String als thoughtSignature übergeben, lassen sich 400-Fehler vermeiden. Dies ist jedoch nur eine Notlösung, da die logische Konsistenz des Modells darunter leiden kann.
🎯 Best Practice: Speichern Sie von Beginn an alle
thoughtSignature-Werte, um eine korrekte Historienkette aufzubauen.
Falls Ihnen die manuelle Verwaltung zu komplex ist, können Sie über APIYI (apiyi.com) die OpenAI-kompatible Schnittstelle nutzen, um den Aufwand erheblich zu reduzieren.

Häufig gestellte Fragen
Q1: Was lässt sich aus den Base64-Daten von thoughtSignature dekodieren?
Es lässt sich kein sinnvoller Inhalt daraus dekodieren. Es handelt sich um kryptografisch signierte Binärdaten, die konzeptionell als „opak“ (undurchsichtig) gestaltet sind. Sie können die Daten zwar per Base64 dekodieren, um eine Reihe von Binär-Bytes zu erhalten, aber diese Bytes entsprechen keinem bekannten Dateiformat – weder Bild, noch Text, noch JSON. Die einzig korrekte Vorgehensweise besteht darin, sie unverändert zu speichern und wieder zurückzusenden.
Q2: Was passiert, wenn thoughtSignature nicht zurückgesendet wird?
Es gibt zwei Szenarien: 1) Bei reinen Text-Dialogen gibt es zwar keinen Fehler, aber die Konsistenz der Modell-Inferenz nimmt ab, und die Qualität der nachfolgenden Antworten könnte hinter den Erwartungen zurückbleiben. 2) Bei Szenarien mit Werkzeugaufrufen (Function Calling) geben Modelle der Gemini 3-Serie direkt einen HTTP 400-Fehler zurück. Bei mehrstufigen Dialogen zur Bildbearbeitung mit Nano Banana 2 führt der Verlust der Signatur dazu, dass das Modell den Kontext nicht korrekt wiederherstellen kann, was zu ungenauen Bearbeitungsergebnissen führt. Es wird empfohlen, die OpenAI-kompatible Schnittstelle über APIYI (apiyi.com) zu nutzen, da die Plattform die Signaturübertragung automatisch übernimmt.
Q3: Wie unterscheide ich in der Antwort zwischen Bildern und Signaturen?
Überprüfen Sie einfach den Feldtyp: Ein Teil (Part) mit inlineData (einschließlich mime_type und data) ist Bildmaterial; ein Teil mit dem Feld thoughtSignature / thought_signature ist eine Signatur; ein Teil mit thought: true ist der Text der zusammenfassenden Überlegungen. Prüfen Sie bei der Implementierung im Code vorrangig, ob inlineData vorhanden ist, und anschließend die anderen Felder.
Q4: Wie ergänze ich thoughtSignature bei alten Dialogverläufen?
Google stellt einen speziellen Dummy-Signaturwert "context_engineering_is_the_way_to_go" bereit, der als temporärer Wert für thoughtSignature verwendet werden kann, um 400-Fehler zu vermeiden. Dies ist jedoch nur eine Kompatibilitätslösung und bietet keine echte Wiederherstellung der Inferenz. Langfristig wird empfohlen, ab Beginn eines neuen Dialogs alle Signaturen vollständig zu speichern.
Zusammenfassung
Die Kernpunkte zu thoughtSignature in der Nano Banana 2 API:
- Kein Bild:
thoughtSignatureist eine verschlüsselte Signatur des Denkprozesses, keine Base64-Bilddatei, und kann nicht in ein Bildformat dekodiert werden. - Muss unverändert zurückgesendet werden: Speichern und senden Sie
thoughtSignaturein mehrstufigen Dialogen unverändert zurück, da es sonst zu 400-Fehlern bei Werkzeugaufrufen kommt und die Qualität der Textdialoge sinkt. - Korrekte Unterscheidung der drei Part-Typen: Teile mit
inlineDatasind Bilder, Teile mitthoughtSignaturesind Signaturen und Teile mitthought: truesind Zusammenfassungen der Überlegungen.
Wenn Sie die Natur dieses Feldes verstehen, vermeiden Sie bei der Analyse der Nano Banana 2 API-Antworten den Fehler, "Signaturen als Bilder dekodieren zu wollen".
Wir empfehlen, die Bildbearbeitungsfunktion von Nano Banana 2 in mehrstufigen Dialogen über APIYI (apiyi.com) zu testen. Die Plattform übernimmt die Übertragung von thoughtSignature automatisch, bietet kostenlose Kontingente und eine einheitliche Schnittstelle.
📚 Referenzmaterialien
-
Offizielle Dokumentation zu Thought Signatures: Vollständige Erläuterung des thoughtSignature-Mechanismus von Google
- Link:
ai.google.dev/gemini-api/docs/thought-signatures - Beschreibung: Enthält Felddefinitionen, Übertragungsregeln und Beispiele für Dialoge mit mehreren Runden.
- Link:
-
Dokumentation zum Gemini Thinking-Modus: Aktivierung und Konfigurationsparameter der Thinking-Funktion
- Link:
ai.google.dev/gemini-api/docs/thinking - Beschreibung: Erfahren Sie mehr über Konfigurationen wie
include_thoughtsundthinking_level.
- Link:
-
Vertex AI Inference API-Referenz: Vollständige Felddefinitionen für Part-Objekte in der REST-API
- Link:
docs.cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference - Beschreibung: Enthält Typdefinitionen und Nutzungseinschränkungen für
thoughtSignature.
- Link:
-
APIYI-Dokumentationszentrum: Vereinfachte Lösung für den Modellaufruf von Nano Banana 2 über die OpenAI-kompatible Schnittstelle
- Link:
docs.apiyi.com - Beschreibung: Automatische Verarbeitung der
thoughtSignature-Übertragung zur Reduzierung der Entwicklungskomplexität.
- Link:
Autor: APIYI Technik-Team
Technischer Austausch: Diskutieren Sie gerne in den Kommentaren. Weitere Informationen finden Sie im APIYI-Dokumentationszentrum unter docs.apiyi.com.
