Mit der Function Calling API können Sie einem generativen KI-Modell benutzerdefinierte Funktionen zur Verfügung stellen. Das Modell ruft diese Funktionen nicht direkt auf, sondern generiert eine strukturierte Datenausgabe, in der der Funktionsname und die vorgeschlagenen Argumente angegeben sind.
Diese Ausgabe ermöglicht den Aufruf externer APIs oder Informationssysteme wie Datenbanken, Customer-Relationship-Management-Systeme und Dokumenten-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-002 gemini-1.5-flash-001 |
Gemini 1.5 Pro, | gemini-1.5-pro-002 gemini-1.5-pro-001 |
Gemini 1.0 Pro | gemini-1.0-pro-001 gemini-1.0-pro-002 |
Beschränkungen:
- Die maximale Anzahl von Funktionsdeklarationen, die mit der Anfrage angegeben werden können, beträgt 128.
FunctionCallingConfig.Mode.ANY
ist nur mit den Modellen Gemini 1.5 Pro und Gemini 1.5 Flash 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
Hiermit wird eine Funktion definiert, für die das Modell JSON-Eingaben generieren kann, basierend auf den OpenAPI 3.0-Spezifikationen.
Parameter | |
---|---|
|
Der Name der aufzurufenden Funktion. Er muss mit einem Buchstaben oder Unterstrich beginnen. Muss a–z, A–Z, 0–9 sein oder Unterstriche, Punkte oder Bindestriche enthalten. Die maximale Länge beträgt 64. |
|
Optional: Die Beschreibung und der Zweck der Funktion. Anhand dieser Informationen entscheidet das Modell, wie und ob die Funktion aufgerufen werden soll. Die besten Ergebnisse erzielen Sie, wenn Sie eine Beschreibung hinzufügen. |
|
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. |
Weitere Informationen finden Sie unter Funktionsaufrufe.
Schema
Definiert das Format der Eingabe- und Ausgabedaten in einem Funktionsaufruf basierend auf der OpenAPI 3.0-Schemaspezifikation.
Parameter | |
---|---|
Typ |
Enum. Der Datentyp. Muss einer der folgenden sein:
|
description |
Optional: Beschreibung der Daten. |
enum |
Optional: Mögliche Werte des Elements vom primitiven Typ im enum-Format. |
items |
Optional: Schema der Elemente von |
properties |
Optional: Schema der Eigenschaften von |
required |
Optional: Erforderliche Properties von |
nullable |
Optional: Gibt an, ob der Wert |
FunctionCallingConfig
Die FunctionCallingConfig
steuert das Verhalten des Modells und bestimmt, welche Art von Funktion aufgerufen wird.
Parameter | |
---|---|
|
Optional:
|
|
Optional: Zu aufzurufende Funktionsnamen. Nur festgelegt, wenn der |
Beispiele
Funktionsdeklaration senden
Das folgende Beispiel zeigt, wie eine Abfrage und eine Funktionsdeklaration an das Modell gesendet werden.
REST
Ersetzen Sie diese Werte in den folgenden 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
Java
Go
REST (OpenAI)
Sie können die Function Calling API mithilfe der OpenAI-Bibliothek aufrufen. Weitere Informationen finden Sie unter Vertex AI-Modelle mithilfe der OpenAI-Bibliothek aufrufen.
Ersetzen Sie diese Werte in den folgenden 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.
HTTP-Methode und URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions
JSON-Text der Anfrage:
{ "model": "google/MODEL_ID", "messages": [ { "role": "user", "content": "What is the weather in Boston?" } ], "tools": [ { "type": "function", "function": { "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"] } } } ] }
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/v1beta1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions"
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/v1beta1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions" | Select-Object -Expand Content
Python (OpenAI)
Sie können die Function Calling API mithilfe der OpenAI-Bibliothek aufrufen. Weitere Informationen finden Sie unter Vertex AI-Modelle mithilfe der OpenAI-Bibliothek aufrufen.
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:
- Legen Sie die Funktion, die
mode
aufruft, aufANY
fest. Geben Sie die Funktionsnamen an, die Sie in
allowed_function_names
verwenden möchten. Wennallowed_function_names
leer ist, kann eine beliebige der angegebenen Funktionen zurückgegeben werden.
REST
PROJECT_ID=myproject
LOCATION=us-central1
MODEL_ID=gemini-1.5-pro-001
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
Go
REST (OpenAI)
Sie können die Function Calling API mithilfe der OpenAI-Bibliothek aufrufen. Weitere Informationen finden Sie unter Vertex AI-Modelle mithilfe der OpenAI-Bibliothek aufrufen.
Ersetzen Sie diese Werte in den folgenden 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.
HTTP-Methode und URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions
JSON-Text der Anfrage:
{ "model": "google/MODEL_ID", "messages": [ { "role": "user", "content": "What is the weather in Boston?" } ], "tools": [ { "type": "function", "function": { "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"] } } } ], "tool_choice": "auto" }
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/v1beta1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions"
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/v1beta1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions" | Select-Object -Expand Content
Python (OpenAI)
Sie können die Function Calling API mithilfe der OpenAI-Bibliothek aufrufen. Weitere Informationen finden Sie unter Vertex AI-Modelle mithilfe der OpenAI-Bibliothek aufrufen.
Nächste Schritte
Eine ausführliche Dokumentation finden Sie hier: