Gemini 3 ist unsere bisher intelligenteste Modellfamilie, die auf modernsten Schlussfolgerungsfunktionen basiert. Gemini 3 Pro ist darauf ausgelegt, jede Idee zum Leben zu erwecken. Dazu werden agentische Workflows, autonomes Programmieren und komplexe multimodale Aufgaben beherrscht. In diesem Leitfaden werden die wichtigsten Funktionen der Gemini 3-Modellfamilie beschrieben und Sie erfahren, wie Sie sie optimal nutzen können.
In unserer Sammlung von Gemini 3-Apps können Sie sehen, wie das Modell mit komplexen Schlussfolgerungen, autonomer Programmierung und komplexen multimodalen Aufgaben umgeht.
So können Sie mit wenigen Codezeilen loslegen:
Python
from google import genai
client = genai.Client()
response = client.models.generate_content(
model="gemini-3-pro-preview",
contents="Find the race condition in this multi-threaded C++ snippet: [code here]",
)
print(response.text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
async function run() {
const response = await ai.models.generateContent({
model: "gemini-3-pro-preview",
contents: "Find the race condition in this multi-threaded C++ snippet: [code here]",
});
console.log(response.text);
}
run();
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts": [{"text": "Find the race condition in this multi-threaded C++ snippet: [code here]"}]
}]
}'
Die Gemini 3-Serie
Gemini 3 Pro, das erste Modell der neuen Serie, eignet sich am besten für komplexe Aufgaben, die ein breites Allgemeinwissen und fortschrittliche multimodale Schlussfolgerungen erfordern.
Gemini 3 Flash ist unser neuestes Modell der 3er-Serie. Es bietet Intelligenz auf Pro-Niveau mit der Geschwindigkeit und dem Preis von Flash.
Nano Banana Pro (auch bekannt als Gemini 3 Pro Image) ist unser bisher bestes KI-Modell zur Bildgenerierung.
Alle Gemini 3-Modelle sind derzeit als Vorabversion verfügbar.
| Modell-ID | Verlaufszeitraum (Ein / Aus) | Wissensstichtag | Preise (Eingabe / Ausgabe)* |
|---|---|---|---|
| gemini-3-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 Preisseite.
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. Bei Gemini 3 werden diese Stufen als relative Kontingente für das Denken und nicht als strikte Token-Garantien behandelt.
Wenn thinking_level nicht angegeben ist, wird standardmäßig high verwendet. Wenn Sie schnellere Antworten mit geringerer Latenz benötigen und keine komplexen Schlussfolgerungen erforderlich sind, können Sie die Denkebene des Modells auf low beschränken.
Denkebenen von Gemini 3 Pro und Flash:
Die folgenden Denkebenen werden sowohl von Gemini 3 Pro als auch von Flash unterstützt:
low: Minimiert Latenz und Kosten. Am besten geeignet für einfache Anweisungen, Chat oder Anwendungen mit hohem Durchsatzhigh(Standard, dynamisch): Maximiert die Tiefe der Argumentation. Es kann deutlich länger dauern, bis das Modell das erste Token ausgibt, aber die Ausgabe ist sorgfältiger durchdacht.
Denkebenen von Gemini 3 Flash
Zusätzlich zu den oben genannten Ebenen unterstützt Gemini 3 Flash auch die folgenden Denkebenen, die derzeit nicht von Gemini 3 Pro unterstützt werden:
minimal: Entspricht für die meisten Anfragen der Einstellung „Kein Denken“. Das Modell denkt bei komplexen Programmieraufgaben möglicherweise nur sehr wenig nach. Minimiert die Latenz für Chat- oder Anwendungen mit hohem Durchsatz.medium: Ausgewogenes Denken für die meisten Aufgaben.
Python
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-3-pro-preview",
contents="How does AI work?",
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(thinking_level="low")
),
)
print(response.text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
const response = await ai.models.generateContent({
model: "gemini-3-pro-preview",
contents: "How does AI work?",
config: {
thinkingConfig: {
thinkingLevel: "low",
}
},
});
console.log(response.text);
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts": [{"text": "How does AI work?"}]
}],
"generationConfig": {
"thinkingConfig": {
"thinkingLevel": "low"
}
}
}'
Auflösung von Medien
Mit Gemini 3 wird über den Parameter media_resolution eine detaillierte Steuerung der multimodalen Bildverarbeitung eingeführt. Höhere Auflösungen verbessern die Fähigkeit des Modells, feinen Text zu lesen oder kleine Details zu erkennen, erhöhen aber die Tokennutzung und die Latenz. Der Parameter media_resolution bestimmt die maximale Anzahl von Tokens, die pro Eingabebild oder Videoframes zugewiesen werden.
Sie können die Auflösung jetzt für jeden einzelnen Media-Teil oder global (über generation_config, global nicht für Ultra High verfügbar) auf media_resolution_low, media_resolution_medium, media_resolution_high oder media_resolution_ultra_high festlegen. Wenn nicht angegeben, verwendet das Modell optimale Standardwerte basierend auf dem Medientyp.
Empfohlene Einstellungen
| Medientyp | Empfohlene Einstellung | Maximale Anzahl an Tokens | Usage Guidance |
|---|---|---|---|
| Bilder | media_resolution_high |
1.120 | Für die meisten Bildanalyseaufgaben empfohlen, um maximale Qualität zu gewährleisten. |
| PDFs | media_resolution_medium |
560 | Optimal für das Verständnis von Dokumenten; die Qualität erreicht in der Regel bei medium ihren Sättigungspunkt. Eine Erhöhung auf high führt bei Standarddokumenten selten zu besseren OCR-Ergebnissen. |
| Video (Allgemein) | media_resolution_low oder media_resolution_medium |
70 (pro Frame) | Hinweis:Bei Video werden die Einstellungen für low und medium identisch behandelt (70 Tokens), um die Kontextnutzung zu optimieren. Das ist für die meisten Aufgaben zur Aktionserkennung und ‑beschreibung ausreichend. |
| Video (viel Text) | media_resolution_high |
280 (pro Frame) | Nur erforderlich, wenn der Anwendungsfall das Lesen von dichtem Text (OCR) oder kleinen Details in Videoframes umfasst. |
Python
from google import genai
from google.genai import types
import base64
# The media_resolution parameter is currently only available in the v1alpha API version.
client = genai.Client(http_options={'api_version': 'v1alpha'})
response = client.models.generate_content(
model="gemini-3-pro-preview",
contents=[
types.Content(
parts=[
types.Part(text="What is in this image?"),
types.Part(
inline_data=types.Blob(
mime_type="image/jpeg",
data=base64.b64decode("..."),
),
media_resolution={"level": "media_resolution_high"}
)
]
)
]
)
print(response.text)
JavaScript
import { GoogleGenAI } from "@google/genai";
// The media_resolution parameter is currently only available in the v1alpha API version.
const ai = new GoogleGenAI({ apiVersion: "v1alpha" });
async function run() {
const response = await ai.models.generateContent({
model: "gemini-3-pro-preview",
contents: [
{
parts: [
{ text: "What is in this image?" },
{
inlineData: {
mimeType: "image/jpeg",
data: "...",
},
mediaResolution: {
level: "media_resolution_high"
}
}
]
}
]
});
console.log(response.text);
}
run();
REST
curl "https://generativelanguage.googleapis.com/v1alpha/models/gemini-3-pro-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts": [
{ "text": "What is in this image?" },
{
"inlineData": {
"mimeType": "image/jpeg",
"data": "..."
},
"mediaResolution": {
"level": "media_resolution_high"
}
}
]
}]
}'
Temperatur
Für Gemini 3 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 unter 1,0 setzen), 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 verwendet Thought-Signaturen, um den Kontext der Argumentation über API-Aufrufe hinweg beizubehalten. Diese Signaturen sind verschlüsselte Darstellungen des internen Denkprozesses des Modells. Damit das Modell seine Fähigkeit zur logischen Schlussfolgerung beibehält, müssen Sie diese Signaturen in Ihrer Anfrage genau so an das Modell zurückgeben, wie sie empfangen wurden:
Function Calling (Strict): Die API erzwingt eine strenge Validierung des aktuellen Zuges. Fehlende Signaturen führen zu einem 400-Fehler.
Text/Chat:Die Validierung wird nicht streng erzwungen, aber das Weglassen von Signaturen beeinträchtigt die Argumentation und Antwortqualität des Modells.
Bildgenerierung/-bearbeitung (streng): Die API erzwingt eine strenge Validierung aller Modellteile, einschließlich eines
thoughtSignature. Fehlende Signaturen führen zu einem 400-Fehler.
Funktionsaufrufe (strenge Validierung)
Wenn Gemini ein functionCall generiert, wird das thoughtSignature verwendet, um die Ausgabe des Tools im nächsten Zug richtig zu verarbeiten. Der „aktuelle Zug“ umfasst alle Modell- (functionCall) und Nutzerschritte (functionResponse), die seit der letzten Standardnachricht User text erfolgt sind.
- Einzelner Funktionsaufruf:Der
functionCall-Teil enthält eine Signatur. Sie müssen es zurückgeben. - Parallele Funktionsaufrufe:Nur der erste
functionCall-Teil in der Liste enthält die Signatur. Sie müssen die Teile in der genauen Reihenfolge zurücksenden, in der Sie sie erhalten haben. - Mehrstufig (sequenziell): Wenn das Modell ein Tool aufruft, ein Ergebnis empfängt und ein anderes Tool aufruft (im selben Zug), haben beide Funktionsaufrufe Signaturen. Sie müssen alle im Verlauf gesammelten Signaturen zurückgeben.
Text und Streaming
Bei Standard-Chat oder Textgenerierung ist das Vorhandensein einer Signatur nicht garantiert.
- Nicht-Streaming: Der letzte Inhaltsteil der Antwort kann ein
thoughtSignatureenthalten, ist aber nicht immer vorhanden. Wenn ein Gerät zurückgegeben wird, sollten Sie es zurücksenden, um die bestmögliche Leistung zu erzielen. - Streaming: Wenn eine Signatur generiert wird, kann sie in einem letzten Chunk mit einem leeren Textteil ankommen. Achten Sie darauf, dass Ihr Stream-Parser auch dann nach Signaturen sucht, wenn das Textfeld leer ist.
Bilderstellung und -bearbeitung
Für gemini-3-pro-image-preview sind Gedankensignaturen für die Bearbeitung im Konversationsstil von entscheidender Bedeutung. Wenn Sie das Modell bitten, ein Bild zu ändern, stützt es sich auf die thoughtSignature aus dem vorherigen Turn, um die Komposition und Logik des Originalbilds zu verstehen.
- Bearbeitung:Signaturen sind im ersten Teil nach den Überlegungen der Antwort (
textoderinlineData) und in jedem nachfolgendeninlineData-Teil garantiert. 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: Modell ruft das Flugtool auf.
Das Modell gibt die Signatur <Sig_A> zurück.
// Model Response (Turn 1, Step 1) { "role": "model", "parts": [ { "functionCall": { "name": "check_flight", "args": {...} }, "thoughtSignature": "<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) [ { "role": "user", "parts": [{ "text": "Check flight AA100..." }] }, { "role": "model", "parts": [ { "functionCall": { "name": "check_flight", "args": {...} }, "thoughtSignature": "<Sig_A>" // REQUIRED } ] }, { "role": "user", "parts": [{ "functionResponse": { "name": "check_flight", "response": {...} } }] } ]
Schritt 3: Modell ruft Taxi-Tool auf
Das Modell erinnert sich über <Sig_A> an die Flugverspätung und beschließt nun, ein Taxi zu buchen. Es wird eine neue Signatur <Sig_B> generiert.
// Model Response (Turn 1, Step 3) { "role": "model", "parts": [ { "functionCall": { "name": "book_taxi", "args": {...} }, "thoughtSignature": "<Sig_B>" // SAVE THIS } ] }
Schritt 4: Nutzer sendet Taxi-Ergebnis
Um die Unterhaltungsrunde abzuschließen, müssen Sie die gesamte Kette zurücksenden: <Sig_A> UND <Sig_B>.
// User Request (Turn 1, Step 4) [ // ... previous history ... { "role": "model", "parts": [ { "functionCall": { "name": "check_flight", ... }, "thoughtSignature": "<Sig_A>" } ] }, { "role": "user", "parts": [{ "functionResponse": {...} }] }, { "role": "model", "parts": [ { "functionCall": { "name": "book_taxi", ... }, "thoughtSignature": "<Sig_B>" } ] }, { "role": "user", "parts": [{ "functionResponse": {...} }] } ]
Parallele Funktionsaufrufe
Der Nutzer fragt: „Check the weather in Paris and London.“ (Prüfe das Wetter in Paris und London.) Das Modell gibt zwei Funktionsaufrufe in einer Antwort zurück.
// User Request (Sending Parallel Results) [ { "role": "user", "parts": [ { "text": "Check the weather in Paris and London." } ] }, { "role": "model", "parts": [ // 1. First Function Call has the signature { "functionCall": { "name": "check_weather", "args": { "city": "Paris" } }, "thoughtSignature": "<Signature_A>" }, // 2. Subsequent parallel calls DO NOT have signatures { "functionCall": { "name": "check_weather", "args": { "city": "London" } } } ] }, { "role": "user", "parts": [ // 3. Function Responses are grouped together in the next block { "functionResponse": { "name": "check_weather", "response": { "temp": "15C" } } }, { "functionResponse": { "name": "check_weather", "response": { "temp": "12C" } } } ] } ]
Text/Kontextbezogene Begründung (keine Validierung)
Der Nutzer stellt eine Frage, die eine kontextbezogene Argumentation ohne externe Tools erfordert. Die Signatur wird zwar nicht streng validiert, hilft dem Modell aber, die Kette der Argumentation für Folgefragen aufrechtzuerhalten.
// User Request (Follow-up question) [ { "role": "user", "parts": [{ "text": "What are the risks of this investment?" }] }, { "role": "model", "parts": [ { "text": "I need to calculate the risk step-by-step. First, I'll look at volatility...", "thoughtSignature": "<Signature_C>" // Recommended to include } ] }, { "role": "user", "parts": [{ "text": "Summarize that in one sentence." }] } ]
Bildgenerierung und ‑bearbeitung
Bei der Bildgenerierung werden Signaturen streng validiert. Sie werden im ersten Teil (Text oder Bild) und allen nachfolgenden Bildteilen angezeigt. Alle müssen im nächsten Zug zurückgegeben werden.
// Model Response (Turn 1) { "role": "model", "parts": [ // 1. First part ALWAYS has a signature (even if text) { "text": "I will generate a cyberpunk city...", "thoughtSignature": "<Signature_D>" }, // 2. ALL InlineData (Image) parts ALWAYS have signatures { "inlineData": { ... }, "thoughtSignature": "<Signature_E>" }, ] } // User Request (Turn 2 - Requesting an Edit) { "contents": [ // History must include ALL signatures received { "role": "user", "parts": [{ "text": "Generate a cyberpunk city" }] }, { "role": "model", "parts": [ { "text": "...", "thoughtSignature": "<Signature_D>" }, { "inlineData": "...", "thoughtSignature": "<Signature_E>" }, ] }, // New User Prompt { "role": "user", "parts": [{ "text": "Make it daytime." }] } ] }
Migration von anderen Modellen
Wenn Sie einen Unterhaltungsverlauf von einem anderen Modell übertragen, z.B. Gemini 2.5) 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 spezifischen Dummy-String aus: "thoughtSignature": "context_engineering_is_the_way_to_go"
Strukturierte Ausgaben mit Tools
Mit Gemini 3-Modellen können Sie strukturierte Ausgaben mit integrierten Tools wie Fundierung mit der Google Suche, URL-Kontext und Codeausführung kombinieren.
Python
from google import genai
from google.genai import types
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()
response = client.models.generate_content(
model="gemini-3-pro-preview",
contents="Search for all details for the latest Euro.",
config={
"tools": [
{"google_search": {}},
{"url_context": {}}
],
"response_mime_type": "application/json",
"response_json_schema": MatchResult.model_json_schema(),
},
)
result = MatchResult.model_validate_json(response.text)
print(result)
JavaScript
import { GoogleGenAI } from "@google/genai";
import { z } from "zod";
import { zodToJsonSchema } from "zod-to-json-schema";
const ai = 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 response = await ai.models.generateContent({
model: "gemini-3-pro-preview",
contents: "Search for all details for the latest Euro.",
config: {
tools: [
{ googleSearch: {} },
{ urlContext: {} }
],
responseMimeType: "application/json",
responseJsonSchema: zodToJsonSchema(matchSchema),
},
});
const match = matchSchema.parse(JSON.parse(response.text));
console.log(match);
}
run();
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts": [{"text": "Search for all details for the latest Euro."}]
}],
"tools": [
{"googleSearch": {}},
{"urlContext": {}}
],
"generationConfig": {
"responseMimeType": "application/json",
"responseJsonSchema": {
"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 Pro Image können Sie Bilder aus Text-Prompts generieren 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 scharfe, gut lesbare Texte und Diagramme mit einer Auflösung von bis zu 2K und 4K.
- Fundierte Generierung:Mit dem Tool
google_searchkönnen Sie Fakten überprüfen und Bilder auf Grundlage von Informationen aus der realen Welt generieren. - Bearbeitung per Prompt:Multi-Turn-Bildbearbeitung durch einfaches Anfordern von Änderungen (z.B. „Make the background a sunset“ (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, Bearbeitungsabläufen und Konfigurationsoptionen finden Sie im Leitfaden zur Bilderstellung.
Python
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-3-pro-image-preview",
contents="Generate an infographic of the current weather in Tokyo.",
config=types.GenerateContentConfig(
tools=[{"google_search": {}}],
image_config=types.ImageConfig(
aspect_ratio="16:9",
image_size="4K"
)
)
)
image_parts = [part for part in response.parts if part.inline_data]
if image_parts:
image = image_parts[0].as_image()
image.save('weather_tokyo.png')
image.show()
JavaScript
import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";
const ai = new GoogleGenAI({});
async function run() {
const response = await ai.models.generateContent({
model: "gemini-3-pro-image-preview",
contents: "Generate a visualization of the current weather in Tokyo.",
config: {
tools: [{ googleSearch: {} }],
imageConfig: {
aspectRatio: "16:9",
imageSize: "4K"
}
}
});
for (const part of response.candidates[0].content.parts) {
if (part.inlineData) {
const imageData = part.inlineData.data;
const buffer = Buffer.from(imageData, "base64");
fs.writeFileSync("weather_tokyo.png", buffer);
}
}
}
run();
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-image-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts": [{"text": "Generate a visualization of the current weather in Tokyo."}]
}],
"tools": [{"googleSearch": {}}],
"generationConfig": {
"imageConfig": {
"aspectRatio": "16:9",
"imageSize": "4K"
}
}
}'
Beispielantwort

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
from google.genai import types
import requests
client = genai.Client()
# This is a manual, two turn multimodal function calling workflow:
# 1. Define the function tool
get_image_declaration = types.FunctionDeclaration(
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., 'green shirt')."
}
},
"required": ["item_name"],
},
)
tool_config = types.Tool(function_declarations=[get_image_declaration])
# 2. Send a message that triggers the tool
prompt = "Show me the green shirt I ordered last month."
response_1 = client.models.generate_content(
model="gemini-3-flash-preview",
contents=[prompt],
config=types.GenerateContentConfig(
tools=[tool_config],
)
)
# 3. Handle the function call
function_call = response_1.function_calls[0]
requested_item = function_call.args["item_name"]
print(f"Model wants to call: {function_call.name}")
# Execute your tool (e.g., call an API)
# (This is a mock response for the example)
print(f"Calling external tool for: {requested_item}")
function_response_data = {
"image_ref": {"$ref": "instrument.jpg"},
}
image_path = "https://goo.gle/instrument-img"
image_bytes = requests.get(image_path).content
function_response_multimodal_data = types.FunctionResponsePart(
inline_data=types.FunctionResponseBlob(
mime_type="image/jpeg",
display_name="instrument.jpg",
data=image_bytes,
)
)
# 4. Send the tool's result back
# Append this turn's messages to history for a final response.
history = [
types.Content(role="user", parts=[types.Part(text=prompt)]),
response_1.candidates[0].content,
types.Content(
role="tool",
parts=[
types.Part.from_function_response(
name=function_call.name,
response=function_response_data,
parts=[function_response_multimodal_data]
)
],
)
]
response_2 = client.models.generate_content(
model="gemini-3-flash-preview",
contents=history,
config=types.GenerateContentConfig(
tools=[tool_config],
thinking_config=types.ThinkingConfig(include_thoughts=True)
),
)
print(f"\nFinal model response: {response_2.text}")
JavaScript
import { GoogleGenAI, Type } from '@google/genai';
const client = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
// This is a manual, two turn multimodal function calling workflow:
// 1. Define the function tool
const getImageDeclaration = {
name: 'get_image',
description: 'Retrieves the image file reference for a specific order item.',
parameters: {
type: Type.OBJECT,
properties: {
item_name: {
type: Type.STRING,
description: "The name or description of the item ordered (e.g., 'green shirt').",
},
},
required: ['item_name'],
},
};
const toolConfig = {
functionDeclarations: [getImageDeclaration],
};
// 2. Send a message that triggers the tool
const prompt = 'Show me the green shirt I ordered last month.';
const response1 = await client.models.generateContent({
model: 'gemini-3-flash-preview',
contents: prompt,
config: {
tools: [toolConfig],
},
});
// 3. Handle the function call
const functionCall = response1.functionCalls[0];
const requestedItem = functionCall.args.item_name;
console.log(`Model wants to call: ${functionCall.name}`);
// Execute your tool (e.g., call an API)
// (This is a mock response for the example)
console.log(`Calling external tool for: ${requestedItem}`);
const functionResponseData = {
image_ref: { $ref: 'instrument.jpg' },
};
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 functionResponseMultimodalData = {
inlineData: {
mimeType: 'image/jpeg',
displayName: 'instrument.jpg',
data: base64ImageData,
},
};
// 4. Send the tool's result back
// Append this turn's messages to history for a final response.
const history = [
{ role: 'user', parts: [{ text: prompt }] },
response1.candidates[0].content,
{
role: 'tool',
parts: [
{
functionResponse: {
name: functionCall.name,
response: functionResponseData,
parts: [functionResponseMultimodalData],
},
},
],
},
];
const response2 = await client.models.generateContent({
model: 'gemini-3-flash-preview',
contents: history,
config: {
tools: [toolConfig],
thinkingConfig: { includeThoughts: true },
},
});
console.log(`\nFinal model response: ${response2.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
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
...,
{
"role": "user",
"parts": [
{
"functionResponse": {
"name": "get_image",
"response": {
"image_ref": {
"$ref": "instrument.jpg"
}
},
"parts": [
{
"inlineData": {
"displayName": "instrument.jpg",
"mimeType":"'"$MIME_TYPE"'",
"data": "'"$IMAGE_B64"'"
}
}
]
}
}
]
}
]
}'
Von Gemini 2.5 migrieren
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 zuvor 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 Dokumentverständnis:Die standardmäßige OCR-Auflösung für PDFs wurde geändert. Wenn Sie sich beim Parsen von dichten Dokumenten auf ein bestimmtes Verhalten verlassen haben, testen Sie die neue Einstellung
media_resolution_high, um die Genauigkeit zu gewährleisten. - 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 native Bildsegmentierung erfordern, empfehlen wir weiterhin die Verwendung von Gemini 2.5 Flash mit deaktiviertem Thinking-Modus oder Gemini Robotics-ER 1.5.
- Tool-Unterstützung: Maps-Grounding und Computer-Nutzungstools werden für Gemini 3-Modelle noch nicht unterstützt und werden daher nicht migriert. Außerdem wird die Kombination von integrierten Tools mit Funktionsaufrufen noch nicht unterstützt.
OpenAI-Kompatibilität
Für Nutzer, die die OpenAI-Kompatibilitätsebene verwenden, werden Standardparameter automatisch Gemini-Entsprechungen zugeordnet:
reasoning_effort(OAI) entsprichtthinking_level(Gemini). Beachten Sie, dassreasoning_effort„Mittel“ in Gemini 3 Flashthinking_level„Hoch“ entspricht.
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 in Ihren Eingabeaufforderungen kurz. Gemini 3 reagiert am besten auf direkte, klare Anweisungen. Es kann sein, dass sie ausführliche oder übermäßig komplexe Prompt-Engineering-Techniken, die für ältere Modelle verwendet wurden, überanalysiert.
- 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 in der Eingabeaufforderung 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, Codebasen 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 oben genannten Informationen…“ beginnen.
Weitere Informationen zu Strategien für das Design von Prompts finden Sie im Leitfaden zum Prompt Engineering.
FAQ
Was ist der Wissensstand von Gemini 3? Gemini 3-Modelle haben einen Wissensstand von Januar 2025. Aktuellere Informationen finden Sie im Tool Search Grounding.
Welche Einschränkungen gelten für das Kontextfenster? Gemini 3-Modelle unterstützen ein Kontextfenster mit 1 Million Tokens für die Eingabe und bis zu 64.000 Tokens für die Ausgabe.
Gibt es eine kostenlose Stufe für Gemini 3? Gemini 3 Flash
gemini-3-flash-previewhat eine kostenlose Stufe in der Gemini API. Sie können sowohl Gemini 3 Pro als auch Flash kostenlos in Google AI Studio testen. Derzeit ist jedoch keine kostenlose Stufe fürgemini-3-pro-previewin der Gemini API verfügbar.Funktioniert mein alter
thinking_budget-Code weiterhin? Ja,thinking_budgetwird aus Gründen der Abwärtskompatibilität weiterhin unterstützt. Wir empfehlen jedoch, zuthinking_levelzu migrieren, um eine besser vorhersagbare Leistung zu erzielen. Verwenden Sie nicht beide in derselben Anfrage.Unterstützt Gemini 3 die Batch API? Ja, Gemini 3 unterstützt die Batch API.
Wird Kontext-Caching unterstützt? Ja, Kontext-Caching wird für Gemini 3 unterstützt.
Welche Tools werden in Gemini 3 unterstützt? Gemini 3 unterstützt die Google Suche, die Dateisuche, die Codeausführung und den URL-Kontext. Außerdem wird der Standard-Funktionsaufruf für Ihre eigenen benutzerdefinierten Tools unterstützt (jedoch nicht für integrierte Tools). Bitte beachten Sie, dass Grounding with Google Maps und Computer Use derzeit nicht unterstützt werden.
Nächste Schritte
- Gemini 3 Cookbook
- Weitere Informationen finden Sie im Cookbook-Leitfaden zu Denkprozessebenen und zur Migration vom Budget für Denkprozesse zu Denkprozessebenen.