Entwicklerleitfaden für Gemini 3

Gemini 3 ist unsere bisher intelligenteste Modellfamilie, die auf modernsten Schlussfolgerungsfunktionen basiert. Es wurde entwickelt, um jede Idee zum Leben zu erwecken, indem es agentische Workflows, autonomes Programmieren und komplexe multimodale Aufgaben beherrscht. In diesem Leitfaden werden die wichtigsten Funktionen der Gemini 3-Modellfamilie und die optimale Nutzung beschrieben.

Entdecken Sie unsere Sammlung von Gemini 3-Apps, um zu sehen, wie das Modell mit logischem Schlussfolgern, autonomer Programmierung und komplexen multimodalen Aufgaben umgeht.

So können Sie mit wenigen Codezeilen loslegen:

Python

from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.1-pro-preview",
    input="Find the race condition in this multi-threaded C++ snippet: [code here]",
)

print(interaction.steps[-1].content[0].text)

JavaScript

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});

async function run() {
  const interaction = await client.interactions.create({
    model: "gemini-3.1-pro-preview",
    input: "Find the race condition in this multi-threaded C++ snippet: [code here]",
  });

  console.log(interaction.steps.at(-1).content[0].text);
}

run();

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3.1-pro-preview",
    "input": "Find the race condition in this multi-threaded C++ snippet: [code here]"
  }'

Die Gemini 3-Serie

Gemini 3.1 Pro eignet sich am besten für komplexe Aufgaben, die umfassendes Weltwissen und fortschrittliches multimodales logisches Schlussfolgern erfordern.

Gemini 3 Flash ist unser neuestes Modell der 3er-Serie. Es bietet Intelligenz auf Pro-Niveau, aber mit der Geschwindigkeit und dem Preis von Flash.

Nano Banana Pro (auch bekannt als Gemini 3 Pro Image) ist unser hochwertigstes Modell für die Bildgenerierung. Nano Banana 2 (auch bekannt als Gemini 3.1 Flash Image) ist das Äquivalent für hohe Volumina und Effizienz zu einem niedrigeren Preis.

Gemini 3.1 Flash-Lite ist unser leistungsstarkes Modell, das für kosteneffiziente und umfangreiche Aufgaben entwickelt wurde.

Alle Gemini 3-Modelle sind derzeit als Vorabversion verfügbar.

Modell-ID Verlaufszeitraum (Ein-/Ausgang) Wissensstichtag Preise (Eingabe / Ausgabe)*
gemini-3.1-flash-lite-preview 1 Mio. / 64.000 Januar 2025 0,25 $ (Text, Bild, Video), 0,50 $ (Audio) / 1,50 $
gemini-3.1-flash-image-preview 128.000 / 32.000 Januar 2025 0,25 $ (Texteingabe) / 0,067 $ (Bildausgabe)**
gemini-3.1-pro-preview 1 Mio. / 64.000 Januar 2025 2 $ / 12 $ (<200.000 Tokens) 
4 $ / 18 $ (>200.000 Tokens)
gemini-3-flash-preview 1 Mio. / 64.000 Januar 2025 0,50 $ / 3 $
gemini-3-pro-image-preview 65.000 / 32.000 Januar 2025 2 $ (Texteingabe) / 0,134 $ (Bildausgabe)**

* Die Preise gelten pro 1 Million Tokens, sofern nicht anders angegeben. ** Die Preise für Bilder variieren je nach Auflösung. Weitere Informationen finden Sie auf der Seite zu den Preisen.

Detaillierte Informationen zu Limits, Preisen und mehr finden Sie auf der Seite zu Modellen.

Neue API-Funktionen in Gemini 3

Mit Gemini 3 werden neue Parameter eingeführt, mit denen Entwickler mehr Kontrolle über Latenz, Kosten und multimodale Genauigkeit erhalten.

Denkaufwand

Die Modelle der Gemini 3-Serie verwenden standardmäßig dynamisches Denken, um Prompts zu analysieren. Sie können den Parameter thinking_level verwenden, der die maximale Tiefe des internen Denkprozesses des Modells steuert, bevor es eine Antwort generiert. Gemini 3 behandelt diese Ebenen als relative Kontingente für das Denken und nicht als strikte Token-Garantien.

Wenn thinking_level nicht angegeben ist, wird standardmäßig high verwendet. Wenn keine komplexen Schlussfolgerungen erforderlich sind, können Sie die Denkebene des Modells auf low beschränken, um schnellere Antworten mit geringerer Latenz zu erhalten.

Denkaufwand Gemini 3.1. Pro Gemini 3.1 Flash Lite Gemini 3 Flash Beschreibung
minimal Nicht unterstützt Unterstützt (Standard) Unterstützt Entspricht für die meisten Anfragen der Einstellung „Kein Denken“. Das Modell denkt bei komplexen Programmieraufgaben möglicherweise sehr minimalistisch. Minimiert die Latenz für Chat- oder Anwendungen mit hohem Durchsatz. Hinweis: minimal garantiert nicht, dass die Funktion „Denken“ deaktiviert ist.
low Unterstützt Unterstützt Unterstützt Minimiert Latenz und Kosten. Am besten geeignet für einfache Anweisungen, Chat oder Anwendungen mit hohem Durchsatz.
medium Unterstützt Unterstützt Unterstützt Ausgewogene Denkweise für die meisten Aufgaben.
high Unterstützt (Standard, dynamisch) Unterstützt (dynamisch) Unterstützt (Standard, dynamisch) Maximiert die Tiefe des logischen Schlussfolgerns. Es kann deutlich länger dauern, bis das Modell das erste Ausgabetoken (nicht „thinking“) erreicht, aber die Ausgabe ist sorgfältiger begründet.

Python

from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.1-pro-preview",
    input="How does AI work?",
    generation_config={"thinking_level": "low"},
)

print(interaction.steps[-1].content[0].text)

JavaScript

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});

const interaction = await client.interactions.create({
    model: "gemini-3.1-pro-preview",
    input: "How does AI work?",
    generationConfig: {
      thinking_level: "low",
    },
  });

console.log(interaction.steps.at(-1).content[0].text);

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3.1-pro-preview",
    "input": "How does AI work?",
    "config": {
      "thinking_level": "low"
    }
  }'

Temperatur

Für alle Gemini 3-Modelle empfehlen wir dringend, den Temperaturparameter auf dem Standardwert 1.0 zu belassen.

Bei früheren Modellen war es oft sinnvoll, die Temperatur anzupassen, um Kreativität und Determinismus zu steuern. Die Schlussfolgerungsfunktionen von Gemini 3 sind jedoch für die Standardeinstellung optimiert. Wenn Sie die Temperatur ändern (auf einen Wert unter 1,0), kann dies zu unerwartetem Verhalten führen, z. B. zu Schleifen oder einer schlechteren Leistung, insbesondere bei komplexen mathematischen oder logischen Aufgaben.

Gedankensignaturen

Gemini 3-Modelle verwenden Gedanken-Signaturen, um den Kontext der Argumentation über API-Aufrufe hinweg beizubehalten. Diese Signaturen sind verschlüsselte Darstellungen des internen Denkprozesses des Modells.

  • Zustandsorientierter Modus (empfohlen): Wenn Sie die Interactions API im zustandsorientierten Modus verwenden (mit previous_interaction_id), verwaltet der Server automatisch den Unterhaltungsverlauf und die Gedanken-Signaturen.
  • Zustandsloser Modus: Wenn Sie den Unterhaltungsverlauf manuell verwalten, müssen Sie Denkblöcke mit ihren Signaturen in nachfolgende Anfragen einfügen, um die Authentizität zu bestätigen.

Ausführliche Informationen finden Sie auf der Seite Thought Signatures.

Bilderstellung und -bearbeitung

Für gemini-3-pro-image-preview und gemini-3.1-flash-image-preview sind Gedankensignaturen für die Bildbearbeitung per Prompt entscheidend. Wenn Sie das Modell bitten, ein Bild zu ändern, stützt es sich auf die signature aus dem vorherigen Zug, um die Komposition und Logik des Originalbilds zu verstehen.

  • Bearbeitung:Signaturen sind garantiert im ersten Teil nach den Überlegungen der Antwort (text oder inlineData) und in jedem nachfolgenden inlineData-Teil. Sie müssen alle diese Signaturen zurückgeben, um Fehler zu vermeiden.

Codebeispiele

Mehrstufige Funktionsaufrufe (sequenziell)

Der Nutzer stellt eine Frage, die zwei separate Schritte erfordert („Flug prüfen“ –> „Taxi buchen“), in einem Zug.

Schritt 1: Das Modell ruft das Flugtool auf.
Das Modell gibt die Signatur <Sig_A> zurück.

// Model Response (Turn 1, Step 1)
  {
    "id": "interaction-123",
    "steps": [
      {
        "type": "function_call",
        "name": "check_flight",
        "arguments": {"flight": "AA100"},
        "signature": "<Sig_A>" // SAVE THIS
      }
    ]
  }

Schritt 2: Nutzer sendet Flugergebnis
Wir müssen <Sig_A> zurücksenden, um den Gedankengang des Modells beizubehalten.

// User Request (Turn 1, Step 2)
  {
    "model": "gemini-3-flash-preview",
    "previous_interaction_id": "interaction-123",
    "input": [
      {
        "type": "function_result",
        "call_id": "fc_check_flight",
        "name": "check_flight",
        "result": [{ "type": "text", "text": "{\"status\": \"delayed\", \"departure_time\": \"12 PM\"}" }]
      }
    ]
  }

Schritt 3: Modell ruft Taxi Tool auf
Das Modell erinnert sich an die Flugverspätung (<Sig_A>) und beschließt, ein Taxi zu buchen. Es wird eine neue Signatur <Sig_B> generiert.

// Model Response (Turn 1, Step 3)
  {
    "id": "interaction-123",
    "steps": [
      {
        "type": "function_call",
        "name": "book_taxi",
        "arguments": {"time": "10 AM"},
        "signature": "<Sig_B>" // SAVE THIS
      }
    ]
  }

Schritt 4: Nutzer sendet Taxi-Ergebnis
Um den Zug abzuschließen, müssen Sie die gesamte Kette zurücksenden: <Sig_A> UND <Sig_B>.

// User Request (Turn 1, Step 4)
  {
    "model": "gemini-3-flash-preview",
    "previous_interaction_id": "interaction-123",
    "input": [
      {
        "type": "function_result",
        "call_id": "fc_book_taxi",
        "name": "book_taxi",
        "result": [{ "type": "text", "text": "{\"booking_status\": \"success\"}" }]
      }
    ]
  }

Parallele Funktionsaufrufe

Der Nutzer fragt: „Wie ist das Wetter in Paris und London?“ Das Modell gibt zwei Funktionsaufrufe in einer Antwort zurück.

// Model Response
  {
    "id": "interaction-456",
    "steps": [
      {
        "type": "function_call",
        "name": "check_weather",
        "arguments": { "city": "Paris" },
        "signature": "<Signature_A>" // INCLUDED on First FC
      },
      {
        "type": "function_call",
        "name": "check_weather",
        "arguments": { "city": "London" }
      }
    ]
  }

// User Request (Sending Parallel Results)
  {
    "model": "gemini-3-flash-preview",
    "previous_interaction_id": "interaction-456",
    "input": [
      {
        "type": "function_result",
        "call_id": "fc_paris",
        "name": "check_weather",
        "result": [{ "type": "text", "text": "15C" }]
      },
      {
        "type": "function_result",
        "call_id": "fc_london",
        "name": "check_weather",
        "result": [{ "type": "text", "text": "12C" }]
      }
    ]
  }

Migration von anderen Modellen

Wenn Sie einen Konversationsverlauf von einem anderen Modell (z.B. Gemini 2.5) übertragen oder einen benutzerdefinierten Funktionsaufruf einfügen, der nicht von Gemini 3 generiert wurde, haben Sie keine gültige Signatur.

Wenn Sie die strenge Validierung in diesen spezifischen Szenarien umgehen möchten, füllen Sie das Feld mit diesem bestimmten Dummy-String aus: "signature": "context_engineering_is_the_way to_go"

Strukturierte Ausgaben mit Tools

Mit Gemini 3-Modellen können Sie strukturierte Ausgaben mit integrierten Tools kombinieren, darunter Fundierung mit der Google Suche, URL-Kontext, Codeausführung und Funktionsaufruf.

Python

from google import genai
from pydantic import BaseModel, Field
from typing import List

class MatchResult(BaseModel):
    winner: str = Field(description="The name of the winner.")
    final_match_score: str = Field(description="The final match score.")
    scorers: List[str] = Field(description="The name of the scorer.")

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.1-pro-preview",
    input="Search for all details for the latest Euro.",
    tools=[
        {"google_search": {}},
        {"url_context": {}}
    ],
    response_format={
        "type": "text",
        "mime_type": "application/json",
        "schema": MatchResult.model_json_schema()
    },
)

result = MatchResult.model_validate_json(interaction.steps[-1].content[0].text)
print(result)

JavaScript

import { GoogleGenAI } from "@google/genai";
import { z } from "zod";
import { zodToJsonSchema } from "zod-to-json-schema";

const client = new GoogleGenAI({});

const matchSchema = z.object({
  winner: z.string().describe("The name of the winner."),
  final_match_score: z.string().describe("The final score."),
  scorers: z.array(z.string()).describe("The name of the scorer.")
});

async function run() {
  const interaction = await client.interactions.create({
    model: "gemini-3.1-pro-preview",
    input: "Search for all details for the latest Euro.",
    tools: [
      { googleSearch: {} },
      { urlContext: {} }
    ],
    response_format: {
        type: "text",
        mime_type: "application/json",
        schema: zodToJsonSchema(matchSchema)
    },
  });

  const match = matchSchema.parse(JSON.parse(interaction.steps.at(-1).content[0].text));
  console.log(match);
}

run();

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3.1-pro-preview",
    "input": "Search for all details for the latest Euro.",
    "tools": [
      {"google_search": {}},
      {"url_context": {}}
    ],
    "response_format": {
        "type": "text",
        "mime_type": "application/json",
        "schema": {
            "type": "object",
            "properties": {
                "winner": {"type": "string", "description": "The name of the winner."},
                "final_match_score": {"type": "string", "description": "The final score."},
                "scorers": {
                    "type": "array",
                    "items": {"type": "string"},
                    "description": "The name of the scorer."
                }
            },
            "required": ["winner", "final_match_score", "scorers"]
        }
    }
  }'

Bildgenerierung

Mit Gemini 3.1 Flash Image und Gemini 3 Pro Image können Sie Bilder anhand von Text-Prompts erstellen und bearbeiten. Es nutzt Reasoning, um einen Prompt zu „durchdenken“, und kann Echtzeitdaten wie Wettervorhersagen oder Aktiencharts abrufen, bevor es Google Suche verwendet, um hochwertige Bilder zu generieren.

Neue und verbesserte Funktionen:

  • 4K- und Textrendering:Generieren Sie gestochen scharfen, gut lesbaren Text und Diagramme mit einer Auflösung von bis zu 2K und 4K.
  • Fundierte Generierung:Mit dem Tool google_search können Sie Fakten überprüfen und Bilder auf Grundlage von Informationen aus der realen Welt generieren. Fundierung mit der Google Bildersuche ist für Gemini 3.1 Flash Image verfügbar.
  • Bildbearbeitung per Prompt:Multi-Turn-Bildbearbeitung, bei der Sie einfach nach Änderungen fragen (z.B. „Mach den Hintergrund zu einem Sonnenuntergang“). Dieser Workflow basiert auf Thought Signatures, um den visuellen Kontext zwischen den Zügen beizubehalten.

Ausführliche Informationen zu Seitenverhältnissen, Bearbeitungs-Workflows und Konfigurationsoptionen finden Sie im Leitfaden zur Bilderstellung.

Python

from google import genai
import base64

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3-pro-image-preview",
    input="Generate an infographic of the current weather in Tokyo.",
    tools=[{"google_search": {}}],
    response_format={
        "type": "image",
        "aspect_ratio": "16:9",
        "image_size": "4K"
    }
)

from PIL import Image
import io

image_blocks = [content_block for content_block in interaction.steps[-1].content if content_block.type == "image"]
if image_blocks:
    image_data = base64.b64decode(image_blocks[0].data)
    image = Image.open(io.BytesIO(image_data))
    image.save('weather_tokyo.png')
    image.show()

JavaScript

import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";

const client = new GoogleGenAI({});

async function run() {
  const interaction = await client.interactions.create({
    model: "gemini-3-pro-image-preview",
    input: "Generate a visualization of the current weather in Tokyo.",
    tools: [{ googleSearch: {} }],
    responseFormat: {
      type: "image",
      aspectRatio: "16:9",
      imageSize: "4K"
    }
  });

  for (const contentBlock of interaction.steps.at(-1).content) {
    if (contentBlock.type === "image") {
      const buffer = Buffer.from(contentBlock.data, "base64");
      fs.writeFileSync("weather_tokyo.png", buffer);
    }
  }
}

run();

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3-pro-image-preview",
    "input": "Generate a visualization of the current weather in Tokyo.",
    "tools": [{"google_search": {}}],
    "response_format": {
        "type": "image",
        "aspect_ratio": "16:9",
        "image_size": "4K"
    }
  }'

Beispielantwort

Wetter in Tokio

Codeausführung mit Bildern

Gemini 3 Flash kann visuelle Informationen als aktive Untersuchung und nicht nur als statischen Blick betrachten. Durch die Kombination von Schlussfolgerungen mit Codeausführung formuliert das Modell einen Plan, schreibt und führt dann Python-Code aus, um Bilder Schritt für Schritt zu vergrößern, zuzuschneiden, zu kommentieren oder anderweitig zu bearbeiten, um seine Antworten visuell zu untermauern.

Anwendungsbeispiele:

  • Zoomen und prüfen:Das Modell erkennt implizit, wenn Details zu klein sind (z.B. beim Lesen eines Messgeräts oder einer Seriennummer in der Ferne), und schreibt Code, um den Bereich zuzuschneiden und mit höherer Auflösung neu zu untersuchen.
  • Visuelle Mathematik und Diagramme:Das Modell kann mehrstufige Berechnungen mit Code ausführen, z.B. Positionen auf einem Beleg summieren oder ein Matplotlib-Diagramm aus extrahierten Daten erstellen.
  • Bildanmerkungen:Das Modell kann Pfeile, Begrenzungsrahmen oder andere Anmerkungen direkt auf Bilder zeichnen, um räumliche Fragen wie „Wo sollte dieser Artikel platziert werden?“ zu beantworten.

Wenn Sie visuelles Denken aktivieren möchten, konfigurieren Sie Code Execution (Code-Ausführung) als Tool. Das Modell verwendet bei Bedarf automatisch Code, um Bilder zu bearbeiten.

Python

from google import genai
from google.genai import types
import requests
from PIL import Image
import io
import base64

image_path = "https://goo.gle/instrument-img"
image_bytes = requests.get(image_path).content
image = types.Part.from_bytes(data=image_bytes, mime_type="image/jpeg")

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3-flash-preview",
    input=[
        image,
        "Zoom into the expression pedals and tell me how many pedals are there?"
    ],
    tools=[{"code_execution": {}}],
)

from IPython.display import display
from PIL import Image
import io

for step in interaction.steps:
    if step.type == "model_output":
        for content_block in step.content:
            if content_block.type == "text":
                print(content_block.text)
            elif content_block.type == "image":
                 display(Image.open(io.BytesIO(base64.b64decode(content_block.data))))
    elif step.type == "code_execution_call":
        print(step.code)
    elif step.type == "code_execution_result":
        print(step.output)

JavaScript

import { GoogleGenAI } from "@google/genai";

const client = new GoogleGenAI({});

async function main() {
  const imageUrl = "https://goo.gle/instrument-img";
  const response = await fetch(imageUrl);
  const imageArrayBuffer = await response.arrayBuffer();
  const base64ImageData = Buffer.from(imageArrayBuffer).toString("base64");

  const interaction = await client.interactions.create({
    model: "gemini-3-flash-preview",
    input: [
      {
        inlineData: {
          mimeType: "image/jpeg",
          data: base64ImageData,
        },
      },
      {
        text: "Zoom into the expression pedals and tell me how many pedals are there?",
      },
    ],
    tools: [{ codeExecution: {} }],
  });

  for (const step of interaction.steps) {
    if (step.type === "model_output") {
      for (const contentBlock of step.content) {
        if (contentBlock.type === "text") {
          console.log("Text:", contentBlock.text);
        }
      }
    } else if (step.type === "code_execution_call") {
      console.log("Code:", step.code);
    } else if (step.type === "code_execution_result") {
      console.log("Output:", step.output);
    }
  }
}

main();

REST

IMG_URL="https://goo.gle/instrument-img"
MODEL="gemini-3-flash-preview"

MIME_TYPE=$(curl -sIL "$IMG_URL" | grep -i '^content-type:' | awk -F ': ' '{print $2}' | sed 's/\r$//' | head -n 1)
if [[ -z "$MIME_TYPE" || ! "$MIME_TYPE" == image/* ]]; then
  MIME_TYPE="image/jpeg"
fi

if [[ "$(uname)" == "Darwin" ]]; then
  IMAGE_B64=$(curl -sL "$IMG_URL" | base64 -b 0)
elif [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
  IMAGE_B64=$(curl -sL "$IMG_URL" | base64)
else
  IMAGE_B64=$(curl -sL "$IMG_URL" | base64 -w0)
fi

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
    -H "x-goog-api-key: $GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
      "model": "'$MODEL'",
      "input": [{
        "parts":[
            {
              "inline_data": {
                "mime_type":"'"$MIME_TYPE"'",
                "data": "'"$IMAGE_B64"'"
              }
            },
            {"text": "Zoom into the expression pedals and tell me how many pedals are there?"}
        ]
      }],
      "tools": [{"code_execution": {}}]
    }'

Weitere Informationen zur Codeausführung mit Bildern finden Sie unter Codeausführung.

Multimodale Funktionsantworten

Mit multimodalen Funktionsaufrufen können Nutzer Funktionsantworten mit multimodalen Objekten erhalten, wodurch die Möglichkeiten der Funktionsaufrufe des Modells besser genutzt werden können. Standard-Funktionsaufrufe unterstützen nur textbasierte Funktionsantworten:

Python

from google import genai
import requests
import base64

client = genai.Client()

# 1. Define the tool
get_image_tool = {
    "type": "function",
    "name": "get_image",
    "description": "Retrieves the image file reference for a specific order item.",
    "parameters": {
        "type": "object",
        "properties": {
            "item_name": {
                "type": "string",
                "description": "The name or description of the item ordered (e.g., 'instrument')."
            }
        },
        "required": ["item_name"],
    },
}

# 2. Send the request with tools
interaction_1 = client.interactions.create(
    model="gemini-3-flash-preview",
    input="Show me the instrument I ordered last month.",
    tools=[get_image_tool],
)

# 3. Find the function call step
fc_step = next(s for s in interaction_1.steps if s.type == "function_call")
print(f"Tool Call: {fc_step.name}({fc_step.arguments})")

# Execute tool (fetch image)
image_path = "https://goo.gle/instrument-img"
image_bytes = requests.get(image_path).content
image_b64 = base64.b64encode(image_bytes).decode("utf-8")

# 4. Send multimodal function result back
interaction_2 = client.interactions.create(
    model="gemini-3-flash-preview",
    previous_interaction_id=interaction_1.id,
    input=[{
        "type": "function_result",
        "name": fc_step.name,
        "call_id": fc_step.id,
        "result": [
            {"type": "text", "text": "instrument.jpg"},
            {
                "type": "image",
                "mime_type": "image/jpeg",
                "data": image_b64,
            }
        ]
    }],
    tools=[get_image_tool],
    thinking_config={"include_thoughts": True},
)

print(f"\nFinal model response: {interaction_2.steps[-1].content[0].text}")

JavaScript

import { GoogleGenAI } from '@google/genai';

const client = new GoogleGenAI({});

// 1. Define the tool
const getImageTool = {
    type: 'function',
    name: 'get_image',
    description: 'Retrieves the image file reference for a specific order item.',
    parameters: {
        type: 'object',
        properties: {
            item_name: {
                type: 'string',
                description: "The name or description of the item ordered (e.g., 'instrument').",
            },
        },
        required: ['item_name'],
    },
};

// 2. Send the request with tools
const interaction1 = await client.interactions.create({
    model: 'gemini-3-flash-preview',
    input: 'Show me the instrument I ordered last month.',
    tools: [getImageTool],
});

// 3. Find the function call step
const fcStep = interaction1.steps.find(s => s.type === 'function_call');
console.log(`Tool Call: ${fcStep.name}(${JSON.stringify(fcStep.arguments)})`);

// Execute tool (fetch image)
const imageUrl = 'https://goo.gle/instrument-img';
const response = await fetch(imageUrl);
const imageArrayBuffer = await response.arrayBuffer();
const base64ImageData = Buffer.from(imageArrayBuffer).toString('base64');

// 4. Send multimodal function result back
const interaction2 = await client.interactions.create({
    model: 'gemini-3-flash-preview',
    previousInteractionId: interaction1.id,
    input: [{
        type: 'function_result',
        name: fcStep.name,
        call_id: fcStep.id,
        result: [
            { type: 'text', text: 'instrument.jpg' },
            {
                type: 'image',
                mimeType: 'image/jpeg',
                data: base64ImageData,
            }
        ]
    }],
    tools: [getImageTool],
    thinking_config: { include_thoughts: true },
});

console.log(`\nFinal model response: ${interaction2.steps.at(-1).content[0].text}`);

REST

IMG_URL="https://goo.gle/instrument-img"

MIME_TYPE=$(curl -sIL "$IMG_URL" | grep -i '^content-type:' | awk -F ': ' '{print $2}' | sed 's/\r$//' | head -n 1)
if [[ -z "$MIME_TYPE" || ! "$MIME_TYPE" == image/* ]]; then
  MIME_TYPE="image/jpeg"
fi

# Check for macOS
if [[ "$(uname)" == "Darwin" ]]; then
  IMAGE_B64=$(curl -sL "$IMG_URL" | base64 -b 0)
elif [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
  IMAGE_B64=$(curl -sL "$IMG_URL" | base64)
else
  IMAGE_B64=$(curl -sL "$IMG_URL" | base64 -w0)
fi

# 1. First interaction (triggers function call)
# curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
#   -H "x-goog-api-key: $GEMINI_API_KEY" \
#   -H 'Content-Type: application/json' \
#   -d '{ "model": "gemini-3-flash-preview", "input": "Show me the instrument I ordered last month.", "tools": [...] }'

# 2. Send multimodal function result back (Replace INTERACTION_ID and CALL_ID)
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3-flash-preview",
    "previous_interaction_id": "INTERACTION_ID",
    "input": [{
      "type": "function_result",
      "name": "get_image",
      "call_id": "CALL_ID",
      "result": [
        { "type": "text", "text": "instrument.jpg" },
        {
          "type": "image",
          "mime_type": "'"$MIME_TYPE"'",
          "data": "'"$IMAGE_B64"'"
        }
      ]
    }],
    "thinking_config": { "include_thoughts": true }
  }'

Integrierte Tools und Funktionsaufrufe kombinieren

Gemini 3 ermöglicht die Verwendung von integrierten Tools (z. B. Google Suche, URL-Kontext und mehr) und benutzerdefinierten Funktionsaufruf-Tools im selben API-Aufruf, was komplexere Workflows ermöglicht.

Python

from google import genai
from google.genai import types

client = genai.Client()

getWeather = {
    "type": "function",
    "name": "getWeather",
    "description": "Gets the weather for a requested city.",
    "parameters": {
        "type": "object",
        "properties": {
            "city": {
                "type": "string",
                "description": "The city and state, e.g. Utqiaġvik, Alaska",
            },
        },
        "required": ["city"],
    },
}

interaction = client.interactions.create(
    model="gemini-3-flash-preview",
    input="What is the northernmost city in the United States? What's the weather like there today?",
    tools=[
        {"google_search": {}},
        getWeather
    ],
)

# Find the function call step
fc_step = next((s for s in interaction.steps if s.type == "function_call"), None)

if fc_step:
    # Simulate a function result
    result = {"response": "Very cold. 22 degrees Fahrenheit."}

    final_interaction = client.interactions.create(
        model="gemini-3-flash-preview",
        input=[
            {"type": "function_result", "name": fc_step.name, "call_id": fc_step.id, "result": result}
        ],
        tools=[
            {"google_search": {}},
            getWeather
        ],
        previous_interaction_id=interaction.id,
    )

    print(final_interaction.steps[-1].content[0].text)

JavaScript

import { GoogleGenAI, Type } from '@google/genai';

const client = new GoogleGenAI({});

const getWeatherDeclaration = {
  type: 'function',
  name: 'getWeather',
  description: 'Gets the weather for a requested city.',
  parameters: {
    type: Type.OBJECT,
    properties: {
      city: {
        type: Type.STRING,
        description: 'The city and state, e.g. Utqiaġvik, Alaska',
      },
    },
    required: ['city'],
  },
};

const interaction = await client.interactions.create({
  model: 'gemini-3-flash-preview',
  input: "What is the northernmost city in the United States? What's the weather like there today?",
  tools: [
    { googleSearch: {} },
    getWeatherDeclaration
  ],
});

// Find the function call step
const fcStep = interaction.steps.find(s => s.type === 'function_call');

if (fcStep) {
  const result = { response: "Very cold. 22 degrees Fahrenheit." };

  const finalInteraction = await client.interactions.create({
    model: 'gemini-3-flash-preview',
    input: [
      { type: 'function_result', name: fcStep.name, call_id: fcStep.id, result: result }
    ],
    tools: [
      { googleSearch: {} },
      getWeatherDeclaration
    ],
    previous_interaction_id: interaction.id,
  });

  console.log(finalInteraction.steps.at(-1).content[0].text);
}

Migration von Gemini 2.5

Gemini 3 ist unsere bisher leistungsstärkste Modellfamilie und bietet eine schrittweise Verbesserung gegenüber Gemini 2.5. Beachten Sie bei der Migration Folgendes:

  • Thinking:Wenn Sie bisher komplexes Prompt-Engineering (z. B. Chain of Thought) verwendet haben, um Gemini 2.5 zum Schlussfolgern zu zwingen, probieren Sie Gemini 3 mit thinking_level: "high" und vereinfachten Prompts aus.
  • Temperatureinstellungen:Wenn in Ihrem vorhandenen Code die Temperatur explizit festgelegt wird (insbesondere auf niedrige Werte für deterministische Ausgaben), empfehlen wir, diesen Parameter zu entfernen und den Gemini 3-Standardwert von 1,0 zu verwenden, um potenzielle Probleme mit Schleifen oder Leistungseinbußen bei komplexen Aufgaben zu vermeiden.
  • PDF- und Dokumentanalyse:Wenn Sie sich auf ein bestimmtes Verhalten beim Parsen von dichten Dokumenten verlassen haben, testen Sie die neue Einstellung media_resolution_high, um die Genauigkeit beizubehalten.
  • Tokenverbrauch:Durch die Migration zu Gemini 3-Standardeinstellungen kann der Tokenverbrauch für PDFs steigen, für Videos jedoch sinken. Wenn Anfragen aufgrund höherer Standardauflösungen das Kontextfenster überschreiten, empfehlen wir, die Media-Auflösung explizit zu verringern.
  • Bildsegmentierung:Die Funktionen zur Bildsegmentierung (Rückgabe von Masken auf Pixelebene für Objekte) werden in Gemini 3 Pro oder Gemini 3 Flash nicht unterstützt. Für Arbeitslasten, die eine integrierte Bildsegmentierung erfordern, empfehlen wir, weiterhin Gemini 2.5 Flash mit deaktivierter Denkfunktion oder Gemini Robotics-ER 1.6 zu verwenden.
  • Computer Use:Gemini 3 Pro und Gemini 3 Flash unterstützen Computer Use. Anders als bei der 2.5-Serie benötigen Sie kein separates Modell, um auf das Tool „Computer Use“ zuzugreifen.
  • Tool-Unterstützung: Die Kombination von integrierten Tools mit Funktionsaufrufen wird jetzt für Gemini 3-Modelle unterstützt. Maps-Fundierung wird jetzt auch für Gemini 3-Modelle unterstützt.

OpenAI-Kompatibilität

Für Nutzer, die die OpenAI-Kompatibilitätsebene verwenden, werden Standardparameter (reasoning_effort von OpenAI) automatisch den entsprechenden Gemini-Parametern (thinking_level) zugeordnet.

Best Practices für die Prompt-Erstellung

Gemini 3 ist ein Modell für das Schlussfolgern, was sich auf die Art und Weise auswirkt, wie Sie Prompts erstellen sollten.

  • Genaue Anweisungen:Fassen Sie sich bei Ihren Eingabeaufforderungen kurz. Gemini 3 reagiert am besten auf direkte, klare Anweisungen. Es kann sein, dass die Analyse von ausführlichen oder zu komplexen Prompt-Engineering-Techniken, die für ältere Modelle verwendet werden, übertrieben ist.
  • Ausführlichkeit der Ausgabe:Standardmäßig ist Gemini 3 weniger ausführlich und liefert lieber direkte, effiziente Antworten. Wenn für Ihren Anwendungsfall eine eher konversationelle oder „geschwätzige“ Persona erforderlich ist, müssen Sie das Modell im Prompt explizit darauf hinweisen (z.B. „Erkläre das als freundlicher, gesprächiger Assistent“).
  • Kontextverwaltung:Wenn Sie mit großen Datasets arbeiten (z.B. ganze Bücher, Codebases oder lange Videos), platzieren Sie Ihre spezifischen Anweisungen oder Fragen am Ende des Prompts, nach dem Datenkontext. Verankern Sie die Argumentation des Modells in den bereitgestellten Daten, indem Sie Ihre Frage mit einer Formulierung wie „Basierend auf den vorangegangenen Informationen…“ beginnen.

Weitere Informationen zu Strategien für das Design von Prompts finden Sie im Leitfaden zum Prompt-Engineering.

FAQ

  1. Was ist der Wissensstand von Gemini 3? Die Gemini 3-Modelle haben einen Wissensstand vom Januar 2025. Aktuellere Informationen finden Sie im Tool Search Grounding.

  2. What are the context window limits? Gemini 3-Modelle unterstützen ein Eingabekontextfenster von 1 Million Tokens und bis zu 64.000 Tokens für die Ausgabe.

  3. Gibt es eine kostenlose Stufe für Gemini 3? Für Gemini 3 Flash gemini-3-flash-preview gibt es eine kostenlose Stufe in der Gemini API. Sie können Gemini 3.1 Pro und 3 Flash kostenlos in Google AI Studio testen. Für gemini-3.1-pro-preview in der Gemini API ist jedoch keine kostenlose Version verfügbar.

  4. Funktioniert mein alter thinking_budget-Code weiterhin? Ja, thinking_budget wird aus Gründen der Abwärtskompatibilität weiterhin unterstützt. Wir empfehlen jedoch, zu thinking_level zu migrieren, um eine besser vorhersagbare Leistung zu erzielen. Verwenden Sie nicht beide im selben Antrag.

  5. Unterstützt Gemini 3 die Batch API? Ja, Gemini 3 unterstützt die Batch API.

  6. Wird Kontext-Caching unterstützt? Ja, Kontext-Caching wird für Gemini 3 unterstützt.

  7. Welche Tools werden in Gemini 3 unterstützt? Gemini 3 unterstützt die Google Suche, Grounding mit Google Maps, die Dateisuche, die Codeausführung und den URL-Kontext. Außerdem wird Function Calling für Ihre eigenen benutzerdefinierten Tools und in Kombination mit integrierten Tools unterstützt.

  8. Was ist gemini-3.1-pro-preview-customtools? Wenn Sie gemini-3.1-pro-preview verwenden und das Modell Ihre benutzerdefinierten Tools zugunsten von Bash-Befehlen ignoriert, versuchen Sie es stattdessen mit dem Modell gemini-3.1-pro-preview-customtools. Weitere Informationen

Nächste Schritte