|

Interpretation der thoughtSignature der Nano Banana 2 API: Warum ist das Ergebnis nach der base64-Dekodierung kein Bild?

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-explained-thinking-mode-guide-de 图示

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:

  1. Denk-Zusammenfassung (thought: true): Eine textuelle Übersicht des Inferenzprozesses des Modells.
  2. Denk-Signatur (thoughtSignature): Ein verschlüsselter Schnappschuss des Inferenzzustands.
  3. 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.

nano-banana-2-api-thoughtsignature-explained-thinking-mode-guide-de 图示


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 thoughtSignature vollstä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 thoughtSignature automatisch 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.

nano-banana-2-api-thoughtsignature-explained-thinking-mode-guide-de 图示

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:

  1. Kein Bild: thoughtSignature ist eine verschlüsselte Signatur des Denkprozesses, keine Base64-Bilddatei, und kann nicht in ein Bildformat dekodiert werden.
  2. Muss unverändert zurückgesendet werden: Speichern und senden Sie thoughtSignature in mehrstufigen Dialogen unverändert zurück, da es sonst zu 400-Fehlern bei Werkzeugaufrufen kommt und die Qualität der Textdialoge sinkt.
  3. Korrekte Unterscheidung der drei Part-Typen: Teile mit inlineData sind Bilder, Teile mit thoughtSignature sind Signaturen und Teile mit thought: true sind 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

  1. 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.
  2. 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_thoughts und thinking_level.
  3. 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.
  4. 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.

Autor: APIYI Technik-Team
Technischer Austausch: Diskutieren Sie gerne in den Kommentaren. Weitere Informationen finden Sie im APIYI-Dokumentationszentrum unter docs.apiyi.com.

Ähnliche Beiträge