Gemini 3.5 Flash ist ein leistungsstarkes, schnelles und kostengünstiges Modell der Gemini 3-Familie. Das Modell wurde entwickelt, um agentische Funktionen auf Pro-Niveau zu bieten, ohne Kompromisse bei Leistung oder Preis-Leistungs-Verhältnis einzugehen. Es ist jetzt allgemein verfügbar (GA) für Entwickler, die die Gemini API verwenden, und für Unternehmen, die die Gemini Enterprise Agent Platform nutzen.
In diesem Dokument erfahren Sie, was neu an 3.5 Flash ist, wann Sie es verwenden sollten und wie Sie zu 3.5 Flash migrieren. Außerdem finden Sie hier eine Kurzanleitung für die Verwendung von 3.5 Flash.
Wie passt es in die Gemini-Familie?
In der folgenden Tabelle werden einige der Spezifikationen von 3.5 Flash, 3.1 Pro und 3.1 Flash-Lite verglichen:
| Gemini 3.5 Flash | Gemini 3.1 Pro | Gemini 3.1 Flash-Lite | |
|---|---|---|---|
| Modell-ID | gemini-3.5-flash |
gemini-3.1-pro-preview |
gemini-3.1-flash-lite |
| Startphase | AV | Vorschau | GA |
| Eingabetypen | Text, Bild, Audio, Video | Text, Bild, Audio, Video | Text, Bild, Audio, Video |
| Ausgabetyp(en) | Text | Text | Text |
| Verlaufszeitraum | 1.048.576 | 1.048.576 | 1.048.576 |
| Maximale Länge des Ausgabetokens | 65.536 | 65.536 | 65.536 |
| Unterstützte Regionen | Global, Multiregional, Amerika, Europa, Asien-Pazifik | Global | Global, Multiregional |
| Unterstützte Denkaufwände |
MINIMAL, LOW, MEDIUM, HIGH(Standard: MEDIUM)
|
LOW, MEDIUM, HIGH(Standard: HIGH)
|
MINIMAL, LOW, MEDIUM, HIGH(Standard: MINIMAL)
|
| Schwerpunkt | Ausgewogene Aufgaben, Toolaufrufe und Zwischenschritte beim Reasoning | Aufgaben mit komplexen logischen Schlussfolgerungen und hoher Komplexität | Aufgaben mit hohem Volumen, bei denen die Kosten und die Latenz eine entscheidende Rolle spielen |
Eine vollständige Liste der unterstützten Funktionen, Tools und Nutzungsoptionen finden Sie auf der Seite zum 3.5 Flash-Modell.
Anwendungsfälle nach Kategorie
Die empfohlene Strategie für Agentic Workflows verwendet einen mehrstufigen Ansatz, um Qualität, Geschwindigkeit und Kosten zu optimieren:
- Gemini Pro: Für hochkomplexe kognitive Aufgaben, die tiefes logisches Denken erfordern, z. B. die erste Planung, komplexe Problemlösung, schwieriges Programmieren und kritische Entscheidungsfindung.
- Gemini Flash: Verwenden Sie dieses Modell als primäres „Arbeitstier“ für Ausführungsaufgaben, Toolaufrufe und Zwischenschritte beim Reasoning. Es bietet die beste Balance zwischen Leistung und Effizienz.
- Gemini Flash-Lite: Für die Vorverarbeitung und strukturelle Aufgaben mit hohem Volumen und geringer Latenz, bei denen Geschwindigkeit und Kosten im Vordergrund stehen, z. B. Intent-Routing, Datenextraktion, Tagging und Klassifizierung.
Was ist neu in Gemini 3.5 Flash?
Gemini 3.5 Flash bietet die folgenden Änderungen und Verbesserungen für die Gemini-Modellreihe:
- Dauerhafte Spitzenleistung: Unser intelligentestes Gemini Flash-Modell, optimiert für agentische und Coding-Aufgaben im großen Maßstab.
- Agentische Ausführung: Bereitstellung von Sub-Agenten, Problemlösung und schnelle Agentenschleifen in großem Umfang.
- Verbesserte Programmierung: Iterative Programmierzyklen, schnelle Erkundung und Prototyping, um alternative Pfade zu testen und Lösungen dynamisch zu erkunden.
- Langfristig: Mehrstufige Workflows und Toolnutzung in großem Umfang.
- Fortführung der Logikschritte: Das Modell behält die Zwischenschritte der Logik automatisch über mehrere Gesprächsrunden hinweg bei. Es sind keine API-Änderungen erforderlich.
- Neuer Standard-Denkaufwand: Der Standard-Denkaufwand wurde von
HIGHzuMEDIUMgeändert. - Verbessertes
LOW-Thinking: Die niedrige Thinking-Stufe wurde für Code- und agentische Aufgaben, die weniger Schritte erfordern, erheblich verbessert. Sie bietet eine hohe Qualität bei geringerer Latenz und niedrigeren Kosten.
Weitere Informationen finden Sie im Abschnitt Wichtige Änderungen.
Kurzanleitung
Bevor Sie beginnen, müssen Sie sich bei der Agent Platform mit Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) oder einem API-Schlüssel authentifizieren. Weitere Informationen finden Sie unter Erste Schritte mit der Gemini Enterprise Agent Platform.
Ersetzen Sie in den folgenden Codeblöcken PROJECT_ID durch Ihre Projekt-ID.
Installation
Achten Sie darauf, dass Sie das neueste google-genai SDK verwenden:
pip install --upgrade google-genai
Einfache Anfrage
Python
from google import genai
client = genai.Client(enterprise=True, project="PROJECT_ID", location="global")
response = client.models.generate_content(
model="gemini-3.5-flash",
contents="How does AI work?",
)
print(response.text)
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-3.5-flash:generateContent \
-d '{
"contents": {
"role": "USER",
"parts": { "text": "Why is the sky blue?" },
},
}'
Wichtigste Änderungen
In diesem Abschnitt werden die folgenden Änderungen, die in Gemini 3.5 Flash eingeführt wurden, ausführlicher beschrieben:
- Neues Standard-Denkniveau (
MEDIUM) - Fortführung der Logikschritte
- Eingestellt: Sampling-Parameter
- Eingestellt:
thinking_budget
Neuer Standard-Denkaufwand
Der Standard-Denkaufwand für Gemini 3-Modelle ist jetzt MEDIUM, geändert von HIGH in der Vorabversion von Gemini 3 Flash. Das Denklevel MEDIUM liefert bei einer Vielzahl von Aufgaben gute Ergebnisse und ist gleichzeitig schneller und kostengünstiger.
Folgende Denkaufwandstufen werden unterstützt:
MINIMAL: Entspricht der Einstellung „Kein Nachdenken“ für die meisten Anfragen. Das Modell denkt bei komplexen Aufgaben wie dem Programmieren möglicherweise nur sehr wenig nach. Minimiert die Latenz für Chat- oder Anwendungen mit hohem Durchsatz.LOW: Einfache logische Schlussfolgerungen für die meisten Aufgaben mit hoher Geschwindigkeit und geringeren Kosten.MEDIUM: (Standard) Ausgewogene Einstellung für die meisten Aufgaben, die logisches Denken erfordern.HIGH: Maximiert die logische Schlussfolgerung, um die Aufgabenleistung zu optimieren. Das Modell benötigt möglicherweise länger als die EinstellungMEDIUM, um das erste Token zu generieren, aber die Ausgabe ist gründlicher.
Verwenden Sie HIGH beispielsweise für Logikrätsel, mathematische Textaufgaben oder knifflige Szenarien, bei denen das Modell mehrere Schritte durchlaufen muss:
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-3.5-flash",
contents="A farmer has chickens and rabbits. There are 35 heads and 94 legs. How many chickens and how many rabbits does he have? Show your step-by-step logic.",
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(
thinking_level=types.ThinkingLevel.HIGH
)
),
)
print(response.text)
Der Parameter thinking_level ist optional. Wenn keine Angabe gemacht wird, verwendet 3.5 Flash die Standardeinstellung (MEDIUM).
Fortführung der Logikschritte
Das Modell behält Zwischenschritte bei Multi-Turn-Unterhaltungen automatisch bei. Wenn der Kontext für die logische Schlussfolgerung im Unterhaltungsverlauf vorhanden ist, wird er automatisch übernommen. Das verbessert die Leistung bei komplexen mehrstufigen Aufgaben wie iterativer Fehlerbehebung und Code-Refaktorierung. Es sind keine API-Änderungen erforderlich.
Gedanken aus früheren Schritten werden jetzt standardmäßig beibehalten. Der Dienst löscht den Denkprozessverlauf nicht mehr aus dem Unterhaltungskontext, bevor er an das Modell übergeben wird.
Wenn Sie den Unterhaltungsverlauf senden, sollten Sie mit den vorherigen Runden konsistent sein: Entweder Sie fügen den vollständigen Kontext (Gedanken, Funktionsaufrufe, Antworten) ein oder Sie lassen ihn ganz weg. Ein unvollständiger Kontext kann die Modellleistung beeinträchtigen.
Verworfen: Sampling-Parameter
Die folgenden Sampling-Parameter werden für Gemini 3-Modelle nicht mehr empfohlen:
temperaturetop_ptop_k
Das Modell verwaltet das Sampling selbst, um optimale Ergebnisse zu erzielen. Entfernen Sie diese Parameter aus allen Anfragen. Um Determinismus zu gewährleisten, definieren Sie eine Systemanweisung mit expliziten Regeln für Ihren spezifischen Anwendungsfall.
Eingestellt: thinking_budget
Der numerische Rohparameter thinking_budget wird für alle Gemini 3-Modelle nicht mehr unterstützt. Verwenden Sie stattdessen das String-Enum thinking_level.
# ⚠️ Before (not recommended)
config = types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(thinking_budget=7500)
)
# ✅ After
config = types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(thinking_level="MEDIUM")
)
Best Practices
In diesem Abschnitt werden die folgenden Best Practices für die Verwendung von 3.5 Flash beschrieben:
- Strikten Antwortabgleich für Funktionsaufrufe verwenden
- Multimodale Inhalte in die Funktionsantwort
partseinbeziehen - Inline-Anweisungen in der Funktionsantwort verwenden
- Unnötige Toolaufrufe reduzieren
Strikten Antwortabgleich für Funktionsaufrufe verwenden
Nicht übereinstimmende Antworten führen in den meisten Fällen dazu, dass das Modell leere Antworten mit finish_reason: STOP zurückgibt. Beachten Sie immer die folgenden Konventionen:
ideinfügen: JedesFunctionResponsemuss dieidaus dem entsprechendenFunctionCallenthalten.- Übereinstimmung von
name: Dernamein der Antwort muss mit demnameim Aufruf übereinstimmen. - Übereinstimmungsanzahl: Für jede empfangene
FunctionCallwird genau eineFunctionResponsezurückgegeben.
Der folgende Code ist ein Beispiel für einen korrekten Funktionsaufruf:
# ✅ Include matching id and name in the function response
final_response = client.models.generate_content(
model="gemini-3.5-flash",
config=config,
contents=[
*previous_contents,
response.candidates[0].content,
types.Content(role="user", parts=[
types.Part.from_function_response(
name=tool_call.name,
response={"result": result},
id=tool_call.id,
)
]),
],
)
Multimodale Inhalte in die Funktionsantwort parts einbeziehen
Wenn Sie Bilder außerhalb der Funktionsantwort bereitstellen, kann dies zu unerwartetem Modellverhalten wie Thought Leakage und zu einer geringeren Qualität führen. Folgen Sie der Empfehlung in der Einführung in Funktionsaufrufe und fügen Sie multimodale Inhalte in die Teile der Funktionsantwort ein, die Sie an das Modell senden. Das Modell kann diese multimodalen Inhalte im nächsten Schritt verarbeiten, um eine fundiertere Antwort zu generieren.
Beispiel:
# ✅ Include multimodal content in the function response
final_response = client.models.generate_content(
model="gemini-3.5-flash",
config=config,
contents=[
*previous_contents,
response.candidates[0].content,
types.Content(role="user", parts=[
types.Part.from_function_response(
name=tool_call.name,
response={
"result": "instrument.jpg",
"image": base64_image_data,
},
id=tool_call.id,
)
]),
],
)
Inline-Anweisungen in der Funktionsantwort verwenden
Wenn Sie Plattformanweisungen zusammen mit Funktionsantworten als nachfolgende parts bereitstellen, kann dies zu unerwartetem Modellverhalten wie Thought Leakage und zu einer geringeren Qualität führen. Hängen Sie sie stattdessen an das Ende des Antworttextes der Funktion an, getrennt durch zwei Zeilenumbrüche.
Beispiel:
# ✅ Append inline instructions to the end of the function response separated by two newlines
result_text = f"{json.dumps(result)}\n\n<your inline instructions>"
final_response = client.models.generate_content(
model="gemini-3.5-flash",
config=config,
contents=[
*previous_contents,
response.candidates[0].content,
types.Content(role="user", parts=[
types.Part.from_function_response(
name=tool_call.name,
response={"result": result_text},
id=tool_call.id,
)
]),
],
)
Unnötige Toolaufrufe reduzieren
Wenn Sie feststellen, dass Toolaufrufe zu häufig verwendet werden, können Sie dies mit zwei Techniken minimieren:
- Denkaufwand reduzieren: Ein höherer Denkaufwand veranlasst das Modell, mehr Tools zum Erkunden und Überprüfen zu verwenden. Wenn Sie den Denkaufwand reduzieren, können Sie also die Anzahl der Toolaufrufe verringern.
Systemanweisung hinzufügen: Wenn die übermäßige Nutzung nach dem Anpassen des Denklevels weiterhin besteht, sollten Sie einen Prompt verwenden, der die Toolnutzung einschränkt. Beispiel:
You have a limited action budget of <n> tool calls. Use them efficiently.
Von 3.5 Flash oder 3.1 Pro zu 3.6 Flash migrieren
So migrieren Sie von 3.5 Flash oder 3.1 Pro zu 3.6 Flash:
- Modell-ID aktualisieren: Ändern Sie den Modellstring in Ihren API-Aufrufen in
gemini-3.6-flash. - Code an die neuen API-Regeln der Gemini 3-Familie anpassen:
Gemini 3.6 Flash setzt die Parameterregeln und API-Konventionen der Gemini 3-Familie strikt durch:
- Temperatur, Top‑K und Top‑P entfernen: Entfernen Sie diese benutzerdefinierten Parameter aus Ihrer Nutzlast. Es wird zwar kein Fehler ausgegeben, aber das Modell ignoriert sie vollständig. Verwenden Sie stattdessen den Parameter
thinking_leveloder strukturierte Ausgaben vom Typjson_schema, um den Determinismus der Ausgabe zu steuern. - Strafen für Häufigkeit und Vorhandensein entfernen: Entfernen Sie alle benutzerdefinierten Konfigurationen für Strafen für Häufigkeit oder Vorhandensein, um zu verhindern, dass Ihre API-Aufrufe Laufzeitfehler auslösen.
- Achten Sie darauf, dass Ihre Chatintegration nicht versucht, das Modell vorab auszufüllen:
Prüfen Sie Ihre Nachrichtenverlaufsarrays, um sicherzustellen, dass Ihre API-Nutzlast nicht mit einem leeren Nutzer- oder Modellturn endet. Wenn das letzte Objekt in Ihrem Verlaufsarray eine „
model“-Rolle (GenerateContent API) oder ein „model_output“-Typ (Interactions API) ist, strukturieren Sie die Sequenz um, um einen strengen Validierungsfehler zu vermeiden. thinking_levelverwenden: Entfernen Sie Instanzen des verworfenen Parametersthinking_budgetund verwenden Sie stattdessenthinking_level.- Strikte Konventionen für Funktionsaufrufe erzwingen: Die
FunctionResponsemüssen genau mit denid,nameund der Ausführungsanzahl der vorherigenFunctionCallübereinstimmen. Wenn Sie Inline-Anweisungen anhängen müssen, platzieren Sie sie direkt im Antworttext der Funktion, getrennt durch zwei Zeilenumbrüche (\n\n).
- Temperatur, Top‑K und Top‑P entfernen: Entfernen Sie diese benutzerdefinierten Parameter aus Ihrer Nutzlast. Es wird zwar kein Fehler ausgegeben, aber das Modell ignoriert sie vollständig. Verwenden Sie stattdessen den Parameter
- Workflow-Änderungen berücksichtigen:
- Wenn Ihre Anwendung auf Multi-Turn-Konversationsschleifen basiert, testen Sie Ihre Workflows, um sicherzustellen, dass die neue Schrittprägnanz des Modells nicht zu vorzeitigen Abbrüchen führt.
- Wenn Sie Frontend- oder einfache Scripting-Agenten erstellen, sollten Sie auf unnötige explorative
execute_code-Aufrufe achten, die durch die neue Tendenz des Modells zur vorab durchgeführten programmatischen Prüfung entstehen.
Problemumgehungen für Textanforderungen vor dem Tool
Wenn Ihr Prompt erfordert, dass das Modell strukturierten Text (XLM, YAML, Json usw.) (z. B. <UPDATE>...</UPDATE>) unmittelbar vor einem Toolaufruf ausgibt, kann der Toolaufruf gelegentlich mit dem Fehler Malformed_Function_Call fehlschlagen. Sie können eine der folgenden Behelfslösungen verwenden, um dieses Problem zu beheben:
- (Empfohlen) Weisen Sie das Modell an, seine Notizen vor dem Toolaufruf in einem dedizierten
update()-Funktionsaufruf statt in unformatiertem Text zu speichern. Eine detaillierte Implementierungsanleitung finden Sie im nächsten Abschnitt. - Weisen Sie das Modell an, Notizen als Markdown-Überschriften (z. B.
# UPDATE,## PLAN) anstelle von strukturiertem Text zu schreiben. - Das Modell muss vor Toolaufrufen keinen Text ausgeben.
Empfohlene Lösung: Arbeitsnotizen in einen dedizierten Funktionsaufruf einbinden
Anstelle der ursprünglichen Anleitung:
Before calling a tool, in every response you MUST first output a single
`<UPDATE>` part as specified, don't skip this part or any of required sub-tags
within `<UPDATE>`.
Verwenden Sie diese aktualisierte Anleitung:
Before calling any other tool, in every response you MUST first call `update`
with all required parameters (previous_step, plan, next_step, external).
Aktualisieren Sie alle Verweise auf das alte <UPDATE>-XML-Format in der Kundenanfrage.
Fügen Sie dann die entsprechende Funktionsdeklaration für die Aktualisierungsfunktion hinzu:
{
"name": "update",
"description": "Update working notes (previous step analysis, plan, next step, external note).",
"parameters": {
"type": "OBJECT",
"properties": {
"previous_step": {
"type": "STRING",
"description": "Key findings and outcomes since the previous step."
},
"plan": {
"type": "STRING",
"description": "The current status of the plan."
},
"next_step": {
"type": "STRING",
"description": "Brief explanation of the immediate next action according to the plan."
},
"external": {
"type": "STRING",
"description": "A short, plain-language note shown to the User about what you are ABOUT TO DO next."
}
},
"required": [
"previous_step",
"plan",
"next_step",
"external"
]
}
}
Das Modell führt im selben Schritt zwei Aufrufe aus: den update()-Aufruf, der das strukturierte XML ersetzt, und den eigentlichen Funktionsaufruf, den es ausführen möchte.