Entwicklerleitfaden für Gemini 3.5 Flash

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 HIGH zu MEDIUM geä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:

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 Einstellung MEDIUM, 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:

  • temperature
  • top_p
  • top_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

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:

  • id einfügen: Jedes FunctionResponse muss die id aus dem entsprechenden FunctionCall enthalten.
  • Übereinstimmung von name: Der name in der Antwort muss mit dem name im Aufruf übereinstimmen.
  • Übereinstimmungsanzahl: Für jede empfangene FunctionCall wird genau eine FunctionResponse zurü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:

  1. 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.
  2. 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:

  1. Modell-ID aktualisieren: Ändern Sie den Modellstring in Ihren API-Aufrufen in gemini-3.6-flash.
  2. 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_level oder strukturierte Ausgaben vom Typ json_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_level verwenden: Entfernen Sie Instanzen des verworfenen Parameters thinking_budget und verwenden Sie stattdessen thinking_level.
    • Strikte Konventionen für Funktionsaufrufe erzwingen: Die FunctionResponse müssen genau mit den id, name und der Ausführungsanzahl der vorherigen FunctionCall übereinstimmen. Wenn Sie Inline-Anweisungen anhängen müssen, platzieren Sie sie direkt im Antworttext der Funktion, getrennt durch zwei Zeilenumbrüche (\n\n).
  3. 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.

Zusätzliche Ressourcen