Mit der Function Calling API können Sie benutzerdefinierte Funktionen für ein generatives KI-Modell bereitstellen. Das Modell ruft diese Funktionen nicht direkt auf, sondern generiert eine strukturierte Datenausgabe, die den Funktionsnamen und die vorgeschlagenen Argumente angibt.
Diese Ausgabe ermöglicht den Aufruf externer APIs oder Informationssysteme wie Datenbanken, Customer-Relationship-Management-Systeme und Dokument-Repositories. Die resultierende API-Ausgabe kann vom LLM verwendet werden, um die Antwortqualität zu verbessern.
Weitere konzeptionelle Dokumentationen zum Funktionsaufruf finden Sie unter Funktionsaufrufe.
Unterstützte Modelle:
Modell | Version |
---|---|
Gemini 1.5 Flash | gemini-1.5-flash-001 |
Gemini 1.5 Pro, | gemini-1.5-pro-001 |
Gemini 1.0 Pro | gemini-1.0-pro-001 gemini-1.0-pro-002 (Unterstützung für Funktionsaufrufe ist Vorschau) |
Beschränkungen:
- Es können maximal 64 Funktionen aufgerufen werden.
FunctionCallingConfig
ist nur mit dem Modellgemini-1.5-pro-001
verfügbar.
Beispielsyntax
Syntax zum Senden einer API-Anfrage für einen Funktionsaufruf.
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:generateContent \ -d '{ "contents": [{ ... }], "tools": [{ "function_declarations": [ { ... } ] }] }'
Python
gemini_model = GenerativeModel( MODEL_ID, generation_config=generation_config, tools=[ Tool( function_declarations=[ FunctionDeclaration( ... ) ] ) ], )
Parameterliste
Einzelheiten zur Implementierung finden Sie in den Beispielen.
FunctionDeclaration
Eine strukturierte Darstellung einer Funktionsdeklaration gemäß der Definition der OpenAPI 3.0-Spezifikation, die eine Funktion darstellt, für die das Modell JSON-Eingaben generieren kann.
Parameter | |
---|---|
|
Der Name der aufzurufenden Funktion. |
|
Optional: Beschreibung und Zweck der Funktion. |
|
Optional: Beschreibt die Parameter der Funktion im OpenAPI-JSON-Schemaobjektformat: OpenAPI 3.0-Spezifikation. |
|
Optional: Beschreibt die Ausgabe der Funktion im OpenAPI-JSON-Schemaobjektformat: OpenAPI 3.0-Spezifikation. |
Schema
Mit dem Schema wird das Format der Eingabe- und Ausgabedaten in einem Funktionsaufruf definiert. Eine strukturierte Darstellung einer Funktionsdeklaration gemäß der Definition der OpenAPI 3.0-Schemaspezifikation.
Parameter | |
---|---|
Typ |
Enum. Der Typ der Daten. Muss einer der folgenden sein:
|
description |
Optional: Beschreibung der Daten. |
enum |
Optional: Mögliche Werte des Elements |
items |
Optional: Schema der Elemente von |
properties |
Optional: Schema der Attribute von |
required |
Optional: Erforderliche Attribute von |
nullable |
Optional: Gibt an, ob der Wert |
FunctionCallingConfig
(Vorschau)
Die FunctionCallingConfig
steuert das Verhalten des Modells und bestimmt, welche Art von Funktion aufgerufen wird.
Dieses Feature ist nur für das gemini-1.5-pro-preview-0409
-Modell verfügbar.
Parameter | |
---|---|
|
Optional:
|
|
Optional: Funktionsnamen, die aufgerufen werden sollen. Nur festgelegt, wenn der |
Beispiele
Funktionsdeklaration senden
Das folgende Beispiel zeigt ein einfaches Beispiel für das Senden einer Abfrage und einer Funktionsdeklaration an das Modell.
REST
Ersetzen Sie dabei folgende Werte für die Anfragedaten:
- PROJECT_ID: Ihre Projekt-ID.
- LOCATION: Die Region, in der die Anfrage verarbeitet werden soll.
- MODEL_ID: Die ID des Modells, das verarbeitet wird.
- ROLE: Die Identität der Entität, die die Nachricht erstellt.
- TEXT: Der Prompt, der an das Modell gesendet werden soll.
- NAME: Der Name der aufzurufenden Funktion.
- DESCRIPTION: Beschreibung und Zweck der Funktion.
- Informationen zu anderen Feldern finden Sie in der Tabelle Parameterliste.
HTTP-Methode und URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent
JSON-Text der Anfrage:
{ "contents": [{ "role": "ROLE", "parts": [{ "text": "TEXT" }] }], "tools": [{ "function_declarations": [ { "name": "NAME", "description": "DESCRIPTION", "parameters": { "type": "TYPE", "properties": { "location": { "type": "TYPE", "description": "DESCRIPTION" } }, "required": [ "location" ] } } ] }] }
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
" https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent"
PowerShell
Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json
und führen Sie den folgenden Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri " https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent" | Select-Object -Expand Content
Beispiel: cURL-Befehls
PROJECT_ID=myproject
LOCATION=us-central1
MODEL_ID=gemini-1.0-pro-002
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:generateContent \
-d '{
"contents": [{
"role": "user",
"parts": [{
"text": "What is the weather in Boston?"
}]
}],
"tools": [{
"functionDeclarations": [
{
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
}
},
"required": [
"location"
]
}
}
]
}]
}'
Python
Node.js
Funktionsdeklaration mit FunctionCallingConfig
senden
Das folgende Beispiel zeigt, wie eine FunctionCallingConfig
an das Modell übergeben wird.
Die functionCallingConfig
sorgt dafür, dass die Modellausgabe immer ein bestimmter Funktionsaufruf ist. Zum Konfigurieren:
- Setzen Sie die Funktion, die
mode
aufruft, aufANY
. - Geben Sie die Funktionsnamen an, die Sie in
allowed_function_names
verwenden möchten. Wennallowed_function_names
leer ist, können alle bereitgestellten Funktionen zurückgegeben werden.
REST
PROJECT_ID=myproject
LOCATION=us-central1
MODEL_ID=gemini-1.5-pro-preview-0409
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:generateContent \
-d '{
"contents": [{
"role": "user",
"parts": [{
"text": "Do you have the White Pixel 8 Pro 128GB in stock in the US?"
}]
}],
"tools": [{
"functionDeclarations": [
{
"name": "get_product_sku",
"description": "Get the available inventory for a Google products, e.g: Pixel phones, Pixel Watches, Google Home etc",
"parameters": {
"type": "object",
"properties": {
"product_name": {"type": "string", "description": "Product name"}
}
}
},
{
"name": "get_store_location",
"description": "Get the location of the closest store",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "Location"}
},
}
}
]
}],
"toolConfig": {
"functionCallingConfig": {
"mode":"ANY",
"allowedFunctionNames": ["get_product_sku"]
}
},
"generationConfig": {
"temperature": 0.95,
"topP": 1.0,
"maxOutputTokens": 8192
}
}'
Python
Node.js
Nächste Schritte
Eine ausführliche Dokumentation finden Sie hier: