Mit Gemini können Sie die Kombination von integrierten Tools wie google_search und Funktionsaufrufen (benutzerdefinierte Tools genannt) in einer einzigen Interaktion kombinieren, indem der Kontextverlauf von Toolaufrufen beibehalten und verfügbar gemacht wird. Kombinationen aus integrierten und benutzerdefinierten Tools ermöglichen komplexe, agentenbasierte Arbeitsabläufe, bei denen sich das Modell beispielsweise auf Echtzeit-Webdaten stützen kann, bevor es Ihre spezifische Geschäftslogik aufruft.
Hier ist ein Beispiel, das Kombinationen aus integrierten und benutzerdefinierten Tools mit google_search und einer benutzerdefinierten Funktion getWeather ermöglicht:
Python
# This will only work for SDK newer than 2.0.0
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.5-flash",
input="What is the northernmost city in the United States? What's the weather like there today?",
tools=[
{"type": "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
// This will only work for SDK newer than 2.0.0
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.5-flash",
input: "What is the northernmost city in the United States? What's the weather like there today?",
tools: [
{ type: "google_search" },
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
# Specifies the API revision to avoid breaking changes when they become default
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.5-flash",
"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 die Toolkontextweitergabe , um Kombinationen aus integrierten und benutzerdefinierten Tools zu ermöglichen. Durch die Toolkontextweitergabe kann der Kontext von integrierten Tools beibehalten und verfügbar gemacht und mit benutzerdefinierten Tools in derselben Interaktion geteilt werden.
Toolkombination aktivieren
- Fügen Sie die
function_declarationszusammen mit den integrierten Tools ein, die Sie verwenden möchten, um das Kombinationsverhalten auszulösen.
Von der API zurückgegebene Schritte
In einer Interaktionsantwort gibt die API separate Schritte für Aufrufe von integrierten Tools und Aufrufe von Funktionen (benutzerdefinierten Tools) zurück:
- Schritte für integrierte Tools: Diese werden von der API automatisch verwaltet, wobei der Kontext über mehrere Züge hinweg beibehalten wird.
- Schritte für Funktionsaufrufe: Die API gibt
function_callSchritte für Ihre benutzerdefinierten Funktionen zurück. Sie führen die Funktion aus und geben das Ergebnis zurück.
Wichtige Felder in zurückgegebenen Schritten
Bestimmte Felder in den zurückgegebenen Schritten sind entscheidend, um den Toolkontext beizubehalten und Toolkombinationen zu ermöglichen:
id: In den Schrittenfunction_callundfunction_responseenthalten. Eine eindeutige ID, die einen Aufruf seiner Antwort zuordnet.signature: In den Schrittenthoughtsowie in allen Schritten für Toolaufrufe (z.B.function_call) und Ergebnisse (z.B.function_response) für Gemini 3-Modelle und höher enthalten. Dieser verschlüsselte Kontext ermöglicht die Toolkontextweitergabe über Interaktionen hinweg.
Verwaltung dieser Felder :
- Zustandsbehafteter Modus (empfohlen): Wenn Sie
previous_interaction_idverwenden, verarbeitet der Server automatisch die Felderidundsignature. - Zustandsloser Modus: Wenn Sie den Unterhaltungsverlauf manuell verwalten, müssen 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.
Toolspezifische Daten
Einige integrierte Tools geben für den Nutzer sichtbare Datenargumente zurück, die für den Tooltyp spezifisch sind.
| Tool | Für den Nutzer sichtbare Toolaufrufargumente (falls vorhanden) | Für den Nutzer sichtbare Toolantwort (falls vorhanden) |
|---|---|---|
| google_search | queries |
search_suggestions |
| google_maps | queries |
placesgoogle_maps_widget_context_token |
| url_context | urlsURLs, die durchsucht werden sollen |
status: Status der Sucheretrieved_url: Durchsuchte URLs |
| file_search | Keine | Keine |
Tokens und Preise
Teile von Aufrufen integrierter Tools in Anfragen werden auf prompt_token_count angerechnet. Da diese Zwischenschritte für Tools jetzt sichtbar sind und an Sie zurückgegeben werden, sind sie Teil des Unterhaltungsverlaufs. Dies gilt nur für den
Fall von Anfragen, nicht für Antworten.
Das Tool Google Suche ist eine Ausnahme von dieser Regel. Google Suche verwendet bereits ein eigenes Preismodell auf Abfrageebene, sodass Tokens nicht doppelt berechnet werden (siehe die Preisseite).
Weitere Informationen finden Sie auf der Seite Tokens.
Beschränkungen
- Wenn die Toolkontextweitergabe aktiviert ist, wird standardmäßig der Modus
validatedverwendet (autowird nicht unterstützt). - Integrierte Tools wie
google_searchverwenden Informationen zum Standort und zur aktuellen Uhrzeit. Wenn Ihresystem_instructionoderfunction_declaration.descriptionwidersprüchliche Standort- und Zeitinformationen enthält, funktioniert die Toolkombination möglicherweise nicht richtig.
Unterstützte Tools
Die standardmäßige Toolkontextweitergabe 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 Computernutzung und der Funktionsaufruf sind clientseitige Tools und haben ebenfalls integrierte Lösungen für die Kontextweitergabe.
| Tool | Ausführungsseite | Unterstützung der Kontextweitergabe |
|---|---|---|
| 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) |
| Computernutzung | 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) |
Nächste Schritte
- Weitere Informationen zum Funktionsaufruf in der Gemini API.
- Unterstützte Tools: