
Gemini 3.6 Flash Migration: Fünf API-Änderungen und ein stiller Ausfall
Das Wichtigste in Kürze Die Migration aufgemini-3.6-flashodergemini-3.5-flash-liteumfasst fünf Request-Änderungen. Vier davon geben HTTP 400 zurück, du erfährst es also sofort. Eine nicht:temperature,top_pundtop_kwerden jetzt akzeptiert und ignoriert. Wenn deine Pipeline auftemperature=0für stabile Ausgaben angewiesen ist, gibt sie weiterhin 200 OK zurück, während die Garantie, auf die du gezählt hast, verschwunden ist. Behebe diese eine zuerst, dann die vier lauten.Last verified: 2026-07-21
Wenn du in einer Konfigurationsdatei nur eine Modell-ID austauschst und erwartest, dass der Rest weiterläuft, lies den ersten Abschnitt, bevor du deployst.
Die fünf Änderungen, sortiert danach, wie du sie bemerkst
| Änderung | Was auf den neuen Modellen passiert | Wie du es bemerkst |
|---|---|---|
temperature, top_p, top_k | Akzeptiert, dann ignoriert | Nichts. Kein Fehler, keine Warnung. |
thinking_budget zusammen mit thinking_level gesendet | Request abgelehnt | HTTP 400 |
Letzte Nachricht im Request hat die Rolle model | Request abgelehnt | HTTP 400 |
FunctionResponse ohne call_id und name | Request abgelehnt | HTTP 400 |
candidate_count | In Gemini 3.x nicht unterstützt | Request schlägt fehl oder das Feld wird verworfen |
Vier dieser fünf Fehler melden sich selbst. Deine Integrationstests fangen sie ab, dein Error-Tracker alarmiert dich, du behebst sie an einem Nachmittag. Der erste ist der, der die Produktion erreicht.
Die gefährliche: temperature, top_p und top_k werden jetzt ignoriert
Lies diese Abfolge genau, denn die Reihenfolge ist für dich entscheidend. Heute ist der Parameter eine Leeroperation. Später wird er zu einem Fehler. Das bedeutet: Der Zeitraum, in dem du dich am ehesten über dein eigenes System täuschst, ist genau jetzt, während alles noch 200 zurückgibt.

Welche Pipelines ohne Fehler kaputtgehen
Eine stille Leeroperation ist nur dann gefährlich, wenn du dich auf den Parameter verlassen hast. Vier verbreitete Setups waren:
- Determinismus-Pipelines. Alles, was
temperature=0setzt, damit wiederholte Aufrufe untereinander übereinstimmen: Cache-Keys, die aus Modellausgaben gebaut werden, Deduplizierungsläufe, Klassifizierungsjobs, die eine nachgelagerte State Machine speisen. Die Einstellung ist jetzt wirkungslos, also wird die Ausgabestabilität, die sie dir erkauft hat, nicht mehr erkauft. - Golden-File- und Snapshot-Tests. Suiten, die
temperature=0festgenagelt haben und die Modellausgabe gegen einen gespeicherten Erwartungsstring diffen. Diese fangen nach dem Modellwechsel an zu flackern, und das Flackern sieht aus wie eine Qualitätsregression des Modells, nicht wie ein Konfigurationsproblem, was dich in die falsche Debugging-Richtung schickt. - Strukturierte Ausgaben, die durch niedrige Temperatur zusammengehalten werden. Teams, die nie strukturierte Ausgaben eingeführt und stattdessen
temperaturenahe null plustop_peng gehalten haben, damit das Modell zuverlässig parsebares JSON ausgibt. Beide Regler sind jetzt gleichzeitig wirkungslos. - Pro Route abgestimmte Konfigurationen. Produkte, die einen Kreativitäts-Slider anbieten oder „Zusammenfassen" mit einer Temperatur und „Brainstorming" mit einer anderen routen. Der Slider bewegt sich weiterhin in deiner UI. Im Modell bewegt er nichts mehr.
Keines davon erzeugt einen Stacktrace. Sie erzeugen eine Ausgabe, die sich leicht von dem unterscheidet, was du validiert hast, in einem System, das sich selbst als gesund meldet.
Auch dein Gateway warnt dich nicht
Das ist der Teil, der selbst sorgfältige Teams erwischt. Modell-Gateways veröffentlichen maschinenlesbare Metadaten, die beschreiben, welche Parameter jedes Modell unterstützt, und Tooling liest diese Metadaten, um zu entscheiden, was gesendet wird.
google/gemini-3.6-flash als auch google/gemini-3.5-flash-lite weiterhin temperature, top_p und seed in supported_parameters. Das Gateway akzeptiert diese Felder und leitet sie weiter. Das Modell am anderen Ende ignoriert sie. Nichts in dieser Kette löst einen Fehler aus, und nichts in den Metadaten sagt dir, dass das Feld tot ist.Was temperature ersetzt
Googles angegebener Ersatz ist kein weiterer Parameter. Es ist die System Instruction – also die Anweisung ganz am Anfang des Gesprächs, die das globale Verhalten des Modells festlegt: Schreibe das gewünschte Verhalten als Regel, die das Modell liest, statt als Sampling-Konstante.
Das ist eine echte Veränderung darin, wie du Absicht ausdrückst, also übersetze, statt zu löschen:
| Was du früher als Zahl kodiert hast | Wo es jetzt hingehört |
|---|---|
temperature=0 für knappe, wiederholbare Antworten | Eine System Instruction, die Format, Länge und Ton vorgibt, plus eine Regel, ohne Einleitung zu antworten |
| Niedrige Temperatur, um JSON parsebar zu halten | Strukturierte Ausgaben, die gemini-3.6-flash und gemini-3.5-flash-lite beide unterstützen |
| Hohe Temperatur für Vielfalt | Eine Anweisung, die N verschiedene Optionen in einer Antwort verlangt, da candidate_count ebenfalls weg ist |
temperature und candidate_count in derselben Migration zu löschen, entfernt beide Mechanismen, die Teams für Ausgabevielfalt genutzt haben. Wenn ein Feature von dir auf Vielfalt angewiesen war, braucht es ein echtes Redesign, keine Konfigurationsänderung.Wie du vor dem Deploy jede Aufrufstelle findest
Durchsuche deine Codebasis nach den Parameternamen, statt der Konfigurationsschicht zu vertrauen, denn diese Werte werden meist an mehreren Stellen von verschiedenen Leuten gesetzt:
# Gemini-native und OpenAI-kompatible Schreibweisen sowie die Konfigurationsobjekte, die sie tragen
grep -rn "temperature\|top_p\|topP\|top_k\|topK\|candidate_count\|candidateCount" \
--include="*.py" --include="*.ts" --include="*.js" --include="*.go" --include="*.java" .
# Die Wrapper, die sie verstecken
grep -rn "generation_config\|generationConfig\|GenerateContentConfig\|thinking_budget\|thinkingBudget" .Prüfe die Ergebnisse auch außerhalb des Anwendungscodes: YAML- und JSON-Konfiguration, Prompt-Management-Tools, Notebooks, Eval-Harnesses und jede Terraform- oder Admin-Konsole, die Modelleinstellungen speichert. Ein Regler, der vor einem halben Jahr in einem Dashboard gesetzt wurde, ist genau die Art von Sache, die ein Code-Review überlebt.
Die vier, die laut fehlschlagen
Diese sind einfacher, weil die API es dir sagt. Behebe sie in der Reihenfolge, in der deine Testsuite sie zutage fördert.
thinking_budget und thinking_level können nicht beide vorhanden sein
thinking_budget durch das String-Enum thinking_level ersetzt, das minimal, low, medium oder high annimmt. Beide in einem Request zu senden, gibt 400 zurück. Googles Migrationshinweis lautet, thinking_budget durch thinking_level zu ersetzen, nicht beide aus Kompatibilitätsgründen zu behalten.Zwei Defaults, die du bei der Wahl eines Werts kennen solltest, weil sie sich zwischen den beiden Modellen unterscheiden:
gemini-3.6-flashhat den Defaultmedium.gemini-3.5-flash-litehat den Defaultminimal, der auf Durchsatz optimiert ist.
minimal-Default auf Flash-Lite nicht als autonomer Sub-Agent geeignet ist und bei mehrstufigen Aufgaben Tool-Calls vorzeitig beendet. Wenn Flash-Lite für dich Code schreiben, Terminal-Befehle ausführen oder externe APIs aufrufen soll, heb ihn bewusst auf medium oder high an. Das ist die eine Migrationsänderung, bei der das Akzeptieren des Defaults eine echte Produktentscheidung ist und keine Formalität.minimal-Default, bei einer dreistufigen Benachrichtigungskette, die in allen drei Versuchen fehlschlug. Die Form war jedes Mal identisch. Es rief die ersten beiden Tools korrekt auf, hielt dann an und meldete Erfolg, ohne die finale Benachrichtigung zu senden. Kein Fehler, keine Exception, eine wohlgeformte Antwort, die ein nachgelagerter Dienst akzeptieren würde. Dasselbe Modell auf high angehoben, bestand die Aufgabe jedes Mal.thinking_level ungesetzt lässt, wird der Request nicht fehlschlagen. Er wird eine selbstbewusste Antwort über Arbeit zurückgeben, die er nicht beendet hat. Setze das Level explizit und prüfe dann auf die Effekte, die dein Workflow erzeugen sollte, statt auf die Antwort, die du zurückbekommen hast.Du kannst einen Modell-Turn nicht mehr vorbefüllen
model hat, gibt die API 400 zurück. Prefilling war ein verbreiteter Trick: Du hängtest eine partielle Assistant-Nachricht wie {"role": "model", "parts": [{"text": "{"}]} an, um das Modell zu zwingen, mit einer JSON-Klammer zu beginnen, oder um eine geschwätzige Einleitung zu unterdrücken.Beide Ziele wandern an dieselben zwei Stellen wie alles andere: eine System Instruction, die die Regel vorgibt, oder strukturierte Ausgaben, wenn du eine maschinell parsebare Form brauchst. Durchsuche deinen Code nach jedem Request-Builder, der eine finale Assistant- oder Model-Nachricht anhängt, besonders Retry- und Continuation-Logik, denn dort werden Prefills eher dynamisch erzeugt als wörtlich geschrieben.
Jede FunctionResponse braucht call_id und name
generateContent-API verwendest, muss jede FunctionResponse sowohl die passende call_id als auch den name der Funktion tragen. Selbstgebaute Tool-Loops sind hier das übliche Opfer, denn viele davon wurden geschrieben, als ein bloßes Ergebnis genügte, und sie rekonstruieren das Antwortobjekt von Grund auf, statt zurückzuspiegeln, was das Modell gesendet hat.call_id aus dem Function-Call des Modells und setze sie auf die Antwort zurück, die du zurückgibst. Wenn du deinen Tool-Loop auf einem Framework gebaut hast, aktualisiere das Framework, statt drumherum zu patchen.candidate_count ist weg
candidate_count wird in Gemini 3.x nicht unterstützt. Entferne es. Wenn du es genutzt hast, um mehrere Antworten zu sampeln und die beste auszuwählen, muss diese Logik jetzt explizit sein: Entweder verlangst du mehrere Optionen innerhalb einer Antwort, oder du sendest mehrere Requests und bezahlst sie einzeln.Vorher und nachher: ein Request, der sauber migriert
Hier ist ein Gemini-nativer Aufruf, der jedes veraltete Feld trägt, und die Version, die den Umzug überlebt.
# VORHER: funktioniert auf Modellen der 2.5-Ära, bricht auf 3.6 Flash oder verhält sich still fehlerhaft
config = {
"temperature": 0, # wird jetzt ignoriert, kein Fehler
"top_p": 0.95, # wird jetzt ignoriert, kein Fehler
"top_k": 40, # wird jetzt ignoriert, kein Fehler
"candidate_count": 1, # in Gemini 3.x nicht unterstützt
"thinking_budget": 8192, # 400, falls zusammen mit thinking_level gesendet
}
# NACHHER: Absicht von Sampling-Konstanten in Anweisungen verlagert
config = {
"system_instruction": (
"Antworte in höchstens drei Sätzen. Verwende einfache Aussagesätze. "
"Füge keine Einleitung hinzu, wiederhole die Frage nicht und biete keine Rückfragen an. "
"Wenn die Antwort unsicher ist, sage das in einem Satz."
),
"thinking_level": "medium",
}temperature=0 in einer Konfigurationsdatei hat sich nie selbst erklärt.import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["EVOLINK_API_KEY"],
base_url="https://api.evolink.ai/v1"
)
response = client.chat.completions.create(
model="gemini-3.6-flash",
messages=[
{"role": "system", "content": "Antworte in höchstens drei Sätzen. Keine Einleitung."},
{"role": "user", "content": "Fasse diesen Incident-Report zusammen."}
]
# kein temperature, kein top_p: würden akzeptiert und dann stromabwärts ignoriert
)
print(response.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env["EVOLINK_API_KEY"],
baseURL: "https://api.evolink.ai/v1",
});
const response = await client.chat.completions.create({
model: "gemini-3.6-flash",
messages: [
{ role: "system", content: "Antworte in höchstens drei Sätzen. Keine Einleitung." },
{ role: "user", content: "Fasse diesen Incident-Report zusammen." },
],
// kein temperature, kein top_p
});
console.log(response.choices[0].message.content);gemini-3.6-flash. Es gibt kein Preview-Suffix und keinen Datumsstempel, also gibt es keinen datierten Alias zum Festnageln. Wenn dein Deployment-Prozess davon ausgeht, dass eine -preview- oder -001-Variante existiert, scheitert diese Annahme zur Request-Zeit.Eine Migrationsreihenfolge, die den stillen Ausfall abfängt
Die Reihenfolge ist wichtig, denn die lauten Fehler sind einfach und der leise ist es nicht. Mach es in dieser Reihenfolge:

- Zuerst inventarisieren. Führe die obigen Greps aus und liste jede Stelle auf, an der ein Sampling-Parameter gesetzt wird, einschließlich Config-Stores und Dashboards. Notiere, welches Verhalten jede einzelne geschützt hat.
- Absicht übersetzen, nicht nur löschen. Entscheide für jede
temperature, die du findest, wofür sie da war, und schreibe die äquivalente System Instruction. Löschen ohne Übersetzen ist der Weg, eine Qualitätsregression auszuliefern. - Die 400er beheben. Tausche
thinking_budgetgegenthinking_level, entfernecandidate_count, entferne vorbefüllte Model-Turns, fügecall_idundnamezu jederFunctionResponsehinzu. - Wähle bewusst ein Thinking-Level, besonders auf Flash-Lite, wo der
minimal-Default für autonome mehrstufige Arbeit ungeeignet ist. Das ist auch der größte Kostenhebel der Migration: Auf unserem Aufgabenset kostete 3.6 Flash mitminimal73.6% weniger pro Durchlauf als dasselbe Modell mit demmedium-Default, und Thinking-Tokens machten beimedium85% der abgerechneten Ausgabe aus. Ob deine Last den Abfall übersteht, ist das, was zu testen ist, nicht ob die Ersparnis echt ist. - Setze deine Snapshot-Tests gegen das neue Modell neu auf, bevor du irgendetwas vergleichst. Alte Golden-Files wurden unter einem Parameter erzeugt, der nicht mehr gilt, also sind sie kein gültiger Referenzpunkt.
- Führe deine Evals auf beiden Modellen über dasselbe Aufgabenset aus und vergleiche Ausgabeverteilungen, nicht nur Pass-Raten. Stille Verhaltensänderungen zeigen sich als Drift in Format, Länge und Ausführlichkeit, bevor sie sich als falsche Antworten zeigen.
- Canary auf echtem Verkehr und beobachte nachgelagerte Parser, nicht nur die API-Fehlerrate. Wenn etwas leise kaputtgeht, geht es in dem Code kaputt, der die Modellausgabe konsumiert, nicht im Aufruf selbst.
temperature=0 noch etwas bewirkte, sieht jeder Diff wie ein Modellproblem aus, und keiner ist es.Lass Googles Migrations-Skill den ersten Durchgang machen
npx skills add google-gemini/gemini-skills --skill gemini-interactions-api --globalDann richte ihn in einem Coding-Agent auf dein Projekt:
/gemini-interactions-api migrate my app to Gemini 3.6 Flash
Es lohnt sich, ihn laufen zu lassen. Er erledigt die mechanische Arbeit: veraltete Felder finden, die Request-Konstruktion umschreiben, Aufrufstellen aktualisieren, was den Großteil von Schritt 3 oben abdeckt.
temperature=0 entfernt werden sollte. Es kann nicht wissen, dass der Wert dort war, weil ein nachgelagerter Dienst identische Ausgabe bei identischer Eingabe voraussetzte, und es kann nicht die System Instruction schreiben, die diese Absicht bewahrt. Behandle den Skill als Code-Durchforstungslauf und mach die Absichtsübersetzung dann selbst.Abschaltplan: wann die Entscheidung nicht mehr deine ist
| Modell | Abschaltdatum | Empfohlener Ersatz |
|---|---|---|
gemini-2.5-flash | 2026-10-16 | gemini-3.6-flash |
gemini-2.5-flash-lite | 2026-10-16 | gemini-3.1-flash-lite |
gemini-3.1-flash-lite | 2027-05-07 | gemini-3.5-flash-lite |
gemini-3-flash-preview | Noch kein Abschaltdatum angekündigt | gemini-3.6-flash |
gemini-3.6-flash, gemini-3.5-flash-lite | Noch kein Abschaltdatum angekündigt | Nicht zutreffend |
gemini-2.5-flash-lite nennt, ist gemini-3.1-flash-lite, nicht das neu veröffentlichte gemini-3.5-flash-lite. Direkt zum neuesten Lite-Modell zu springen, ist eine vertretbare Wahl, aber es ist deine Wahl, nicht der dokumentierte Upgrade-Pfad, und es ist ein Sprung über zwei Generationen statt über eine. Plane und teste es entsprechend.gemini-3-flash-preview bist, gibt es kein angekündigtes Enddatum, aber Preview-Modelle sind nichts, worauf man eine Roadmap baut.Computer Use: vier offizielle Seiten, zwei Antworten
Eine Fähigkeitsfrage lässt sich derzeit nicht aus der Dokumentation klären. Ob diese Modelle Computer Use unterstützen, wird in Googles eigenem Material widersprüchlich angegeben:
- Die Gemini-API-Modelldokumentation markiert Computer Use als unterstützt (Preview) für 3.6 Flash, während die Enterprise-Plattform-Seite für dasselbe Modell es als nicht unterstützt aufführt.
- Für 3.5 Flash-Lite sagen die Modellseiten, es sei nicht unterstützt, während die Launch-Ankündigung und der Gemini 3 Entwicklerleitfaden sagen, es funktioniere.
Vier offizielle Seiten, zwei widersprüchliche Antworten, keine Möglichkeit, das durch Lesen aufzulösen. Wenn Computer Use auf deinem kritischen Pfad liegt, teste es mit deinem eigenen Konto und Endpoint, bevor du dich festlegst, und halte ein Fallback-Modell verdrahtet bereit. Dieser Abschnitt wird mit einer getesteten Antwort und dem Beobachtungsdatum aktualisiert. Jede andere Änderung in diesem Leitfaden ist konsistent dokumentiert; diese nicht.
Was das bedeutet, wenn du diese Woche einen Anbieter neu wählst
Eine Migration, die du nicht eingeplant hast, ist in deinem Sprint gelandet, und die Arbeit sind ein bis zwei Tage sorgfältiges Editieren statt eines Wochenend-Rewrites. Da du ohnehin schon jede Aufrufstelle anfasst, ist das ein natürlicher Moment, um zu betrachten, wie das Modell überhaupt zu dir gelangt.
Zwei Dinge lohnt es sich zu prüfen, während du gerade dabei bist:
- Kannst du die alten und neuen Modelle während der Umstellung nebeneinander laufen lassen? Schritt 6 oben verlangt es. Wenn dein Setup es umständlich macht,
gemini-3.5-flashundgemini-3.6-flashgegen dasselbe Aufgabenset laufen zu lassen, wird diese Reibung auch bei der nächsten Migration da sein, und es wird eine nächste geben: Google hat gesagt, dass diese Regeln für jedes von nun an veröffentlichte Modell gelten. - Wie schnell wird ein neues Modell für dich aufrufbar?
gemini-3.6-flasherreichte am ersten Tag allgemeine Verfügbarkeit ohne Preview-Suffix. Die Lücke zwischen dem Erscheinen eines Modells und dem Moment, in dem dein Code es aufrufen kann, ist ein Preis, den du bei jedem Launch zahlst.
model-String ist statt eines zweiten SDK und eines zweiten Satzes an Credentials, und neue Modelle sind über denselben Endpoint verfügbar, den du bereits nutzt. Wenn du zuerst den aktuellen Status genau dieses Modells sehen willst, hat unser Gemini 3.6 Flash Release-Tracker Details zu Verfügbarkeit und Modell-ID, und der Vergleich 3.6 Flash gegen 3.5 Flash behandelt, ob das Upgrade überhaupt lohnt, was eine andere Frage ist als die, wie man es sicher durchführt.gemini-3.6-flash tun sie es nicht mehr.Häufige Fragen
temperature, top_p und top_k akzeptiert und ignoriert, ohne Fehler und ohne Warnung. Google hat erklärt, dass künftige Modellgenerationen für diese Parameter HTTP 400 zurückgeben werden, die Stille ist also vorübergehend, aber im Moment sieht ein Request, der sie trägt, völlig gesund aus.thinking_level mit den Werten minimal, low, medium und high. thinking_budget und thinking_level im selben Request zu senden, gibt HTTP 400 zurück. Der Default ist medium auf 3.6 Flash und minimal auf 3.5 Flash-Lite.gemini-3.1-flash-lite, nicht gemini-3.5-flash-lite, und gibt ein Abschaltdatum vom 16. Oktober 2026 an. Du kannst stattdessen auf 3.5 Flash-Lite wechseln, aber das ist ein Sprung über zwei Generationen und deine eigene Entscheidung, nicht der dokumentierte Pfad.thinking_level, die Prefill-Einschränkung, die FunctionResponse-Anforderungen und die Entfernung von candidate_count gelten alle auch für gemini-3.5-flash-lite, und Google hat gesagt, dass sie für jedes nach diesen beiden veröffentlichte Modell gelten. Die Code-Änderungen sind ohnehin dieselben, du kannst also mit der Migration beginnen, bevor du entschieden hast, auf welches der beiden du wechselst. Diese Wahl ist eine separate Frage, behandelt in unserem Vergleich Gemini 3.6 Flash gegen 3.5 Flash-Lite.gemini-3.6-flash, ohne Preview-Suffix und ohne Datumsstempel. Wenn dein Deployment-Tooling einen datierten Alias erwartet, wird es zur Request-Zeit fehlschlagen.Quellen
- Using the latest Gemini models (Google AI for Developers): veraltete Sampling-Parameter,
thinking_level,candidate_count, Prefill-Einschränkung,FunctionResponse-Anforderungen, Migrations-Skill-Befehl - Gemini deprecations (Google AI for Developers): Abschaltdaten und empfohlene Ersätze
- Gemini API models (Google AI for Developers): Modell-IDs, Fähigkeits-Support-Matrix
- Gemini 3 Entwicklerleitfaden (Google AI for Developers): Gemini 3 Request-Verhalten und Fähigkeiten
- Gemini 3.6 Flash auf der Gemini Enterprise Agent Platform (Google Cloud): Enterprise-Fähigkeitsliste und die auf der Seite angezeigten Parameter-Defaults
- Introducing Gemini 3.6 Flash, 3.5 Flash-Lite, and 3.5 Flash Cyber (Google): Launch-Ankündigung und Veröffentlichungsdatum
- google-gemini/gemini-skills (GitHub): der offizielle Migrations-Skill
- OpenRouter Models-Endpoint (OpenRouter): Gateway-Metadaten, die
temperature,top_pundseedweiterhin als unterstützte Parameter für beide Modelle listen, beobachtet 2026-07-21 - EvoLink Modellkatalog, Gemini 3.6 Flash Release-Tracker, Vergleich 3.6 Flash und 3.5 Flash, Migrationsleitfaden Gemini 3.5 Flash gegen Gemini 3 Flash Preview, Gemini 3 Pro Deprecation-Leitfaden, EvoLink API-Basis-URL


