Integrierte Tools und Funktionsaufrufe kombinieren
Mit Gemini können integrierte Tools wie google_search und Funktionsaufrufe (auch benutzerdefinierte Tools genannt) in einer einzigen Interaktion kombiniert werden, indem der Kontextverlauf von Tool-Aufrufen beibehalten und verfügbar gemacht wird. Mit integrierten und benutzerdefinierten Tool-Kombinationen lassen sich komplexe, agentenbasierte Workflows erstellen. Das Modell kann sich beispielsweise auf Webdaten in Echtzeit stützen, bevor es Ihre spezifische Geschäftslogik aufruft.
Hier ist ein Beispiel, in dem integrierte und benutzerdefinierte Toolkombinationen mit google_search und einer benutzerdefinierten Funktion getWeather aktiviert werden:
Python
from google import genai
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"],
},
}
# The Interactions API manages context automatically across tool calls.
# The model will first use Google Search, then call getWeather.
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,
],
)
# Process steps: the interaction contains search results and a function call
for step in interaction.steps:
if step.type == "function_call":
print(f"Function call: {step.name} with args: {step.arguments}")
# In a real application, you would execute the function here
# and provide the result back to the model.
JavaScript
import { GoogleGenAI } from '@google/genai';
const client = new GoogleGenAI({});
const getWeather = {
type: "function",
name: "getWeather",
description: "Get the weather in a given location",
parameters: {
type: "object",
properties: {
location: {
type: "string",
description: "The city and state, e.g. San Francisco, CA"
}
},
required: ["location"]
}
};
// The Interactions API manages context automatically across tool calls.
// The model will first use Google Search, then call getWeather.
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: {} },
getWeather,
],
});
// Process steps: the interaction contains search results and a function call
for (const step of interaction.steps) {
if (step.type === "function_call") {
console.log(`Function call: ${step.name} with args: ${JSON.stringify(step.arguments)}`);
// In a real application, you would execute the function here
// and provide the result back to the model.
}
}
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "Content-Type: application/json" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-d '{
"model": "gemini-3-flash-preview",
"input": "What is the northernmost city in the United States? What'\''s the weather like there today?",
"tools": [
{ "type": "google_search" },
{
"type": "function",
"name": "getWeather",
"description": "Get the weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
}
},
"required": ["location"]
}
}
]
}'
Funktionsweise
Gemini 3-Modelle verwenden Tool-Kontextzirkulation, um integrierte und benutzerdefinierte Tool-Kombinationen zu ermöglichen. Durch die Weitergabe des Tool-Kontexts kann der Kontext integrierter Tools beibehalten und verfügbar gemacht werden und mit benutzerdefinierten Tools in derselben Interaktion geteilt werden.
Tool-Kombination aktivieren
- Fügen Sie die
function_declarationszusammen mit den integrierten Tools, die Sie verwenden möchten, hinzu, um das Kombinationsverhalten auszulösen.
Schritte für die API-Rückgabe
In einer Interaktionsantwort gibt die API separate Schritte für integrierte Tool-Aufrufe und Funktionsaufrufe (benutzerdefinierte Tools) zurück:
- Integrierte Tool-Schritte: Diese werden von der API automatisch verwaltet und der Kontext bleibt über mehrere Turns hinweg erhalten.
- Schritte für Funktionsaufrufe: Die API gibt
function_call-Schritte für Ihre benutzerdefinierten Funktionen zurück. Sie führen die Funktion aus und geben das Ergebnis zurück.
Kritische Felder in zurückgegebenen Schritten
Bestimmte Felder in den zurückgegebenen Schritten sind entscheidend, um den Tool-Kontext beizubehalten und Tool-Kombinationen zu ermöglichen:
id: In den Schrittenfunction_callundfunction_responsegefunden. Eine eindeutige Kennung, die einen Aufruf seiner Antwort zuordnet.signature: Inthought-Schritten sowie in allen Tool-Aufruf- (z.B.function_call) und Ergebnisschritten (z.B.function_response) für Gemini 3+-Modelle. Dieser verschlüsselte Kontext ermöglicht die Weitergabe des Tool-Kontexts über Interaktionen hinweg.
Felder verwalten:
- Zustandsorientierter Modus (empfohlen): Wenn Sie
previous_interaction_idverwenden, verarbeitet der Server automatisch die Felderidundsignature. - Zustandsloser Modus: Wenn Sie den Unterhaltungsverlauf manuell verwalten, müssen Sie dafür sorgen, dass Sie sowohl das Feld
idals auch das Feldsignaturein nachfolgenden Anfragen an das Modell zurückgeben, um die Authentizität zu bestätigen und den Kontext beizubehalten. Die offiziellen SDKs verarbeiten dies automatisch, wenn Sie das vollständige Antwortobjekt an den Verlauf zurückgeben.
Tool-spezifische Daten
Einige integrierte Tools geben nutzersichtbare Datenargumente zurück, die für den jeweiligen Tooltyp spezifisch sind.
| Tool | Für Nutzer sichtbare Toolaufrufargumente (falls vorhanden) | Für Nutzer sichtbare Tool-Antwort (falls vorhanden) |
|---|---|---|
| google_search | queries |
search_suggestions |
| google_maps | queries |
placesgoogle_maps_widget_context_token |
| url_context | urlsURLs, die durchsucht werden sollen |
status: Crawling-Statusretrieved_url: gecrawlte URLs |
| file_search | Keine | Keine |
Tokens und Preise
Beachten Sie, dass integrierte Tool-Aufruf-Teile in Anfragen auf prompt_token_count angerechnet werden. Da diese Zwischenschritte des Tools jetzt sichtbar sind und an Sie zurückgegeben werden, sind sie Teil des Unterhaltungsverlaufs. Dies ist nur bei Anfragen der Fall, nicht bei Antworten.
Das Tool für die Google Suche ist eine Ausnahme von dieser Regel. Die Google Suche wendet bereits ein eigenes Preismodell auf Abfrageebene an. Daher werden Tokens nicht doppelt berechnet (siehe Seite „Preise“).
Weitere Informationen finden Sie auf der Seite Tokens.
Beschränkungen
- Standardmäßig wird der Modus
validatedverwendet (der Modusautowird nicht unterstützt), wenn die Toolkontext-Zirkulation aktiviert ist. - Integrierte Tools wie
google_searchbasieren auf Standort- und Uhrzeitinformationen. Wenn Ihrsystem_instructionoderfunction_declaration.descriptionwidersprüchliche Standort- und Uhrzeitinformationen enthält, funktioniert die Funktion für die Kombination von Tools möglicherweise nicht richtig.
Unterstützte Tools
Die standardmäßige Weitergabe des Toolkontexts gilt für serverseitige (integrierte) Tools. Die Codeausführung ist ebenfalls ein serverseitiges Tool, hat aber eine eigene integrierte Lösung für die Kontextweitergabe. Die Tool-Nutzung und Funktionsaufrufe sind clientseitige Tools und bieten auch integrierte Lösungen für die Kontextweitergabe.
| Tool | Ausführungsseite | Unterstützung für die Weitergabe von Kontext |
|---|---|---|
| Google Suche | Serverseitig | Unterstützt |
| Google Maps | Serverseitig | Unterstützt |
| URL-Kontext | Serverseitig | Unterstützt |
| Dateisuche | Serverseitig | Unterstützt |
| Codeausführung | Serverseitig | Unterstützt (integriert, verwendet die Schritte code_execution und code_execution_result) |
| Computer Use | Clientseitig | Unterstützt (integriert, verwendet die Schritte function_call und function_response) |
| Benutzerdefinierte Funktionen | Clientseitig | Unterstützt (integriert, verwendet die Schritte function_call und function_response) |