Puoi fornire funzioni personalizzate a un modello di AI generativa con l'API Function Calling. Il modello non richiama direttamente queste funzioni, ma genera un output di dati strutturati che specifica il nome della funzione e gli argomenti suggeriti.
Questo output consente di chiamare API o sistemi di informazioni esterni come database, sistemi di gestione dei rapporti con i clienti e repository di documenti. L'output dell'API risultante può essere utilizzato dall'LLM per migliorare la qualità delle risposte.
Per una documentazione più concettuale sulle chiamate di funzione, consulta Chiamata di funzione.
Modelli supportati:
Modello | Versione |
---|---|
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 |
Limitazioni:
- Il numero massimo di dichiarazioni di funzioni che possono essere fornite con la richiesta è 128.
FunctionCallingConfig.Mode.ANY
è disponibile solo con i modelli Gemini 1.5 Pro e Gemini 1.5 Flash.
Sintassi di esempio
Sintassi per inviare una richiesta API di chiamata di funzione.
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( ... ) ] ) ], )
Elenco dei parametri
Per informazioni dettagliate sull'implementazione, consulta gli esempi.
FunctionDeclaration
Definisce una funzione per la quale il modello può generare input JSON in base alle specifiche di OpenAPI 3.0.
Parametri | |
---|---|
|
Il nome della funzione da chiamare. Deve iniziare con una lettera o un trattino basso. Deve essere a-z, A-Z, 0-9 o contenere trattini bassi, punti o trattini, con una lunghezza massima di 64. |
|
(Facoltativo) La descrizione e lo scopo della funzione. Il modello utilizza queste informazioni per decidere come e se chiamare la funzione. Per ottenere risultati ottimali, ti consigliamo di includere una descrizione. |
|
(Facoltativo) Descrive i parametri della funzione nel formato dell'oggetto dello schema JSON OpenAPI: specifica OpenAPI 3.0. |
|
(Facoltativo) Descrive l'output della funzione nel formato dell'oggetto dello schema JSON OpenAPI: specifica OpenAPI 3.0. |
Per ulteriori informazioni, consulta Chiamata di funzioni
Schema
Definisce il formato dei dati di input e output in una chiamata di funzione in base alla specifica dello schema OpenAPI 3.0.
Parametri | |
---|---|
tipo |
Enum. Il tipo di dati. Deve essere uno dei seguenti:
|
description |
(Facoltativo) Descrizione dei dati. |
enum |
(Facoltativo) Possibili valori dell'elemento di tipo primitivo con formato enum. |
items |
(Facoltativo) Schema degli elementi di |
properties |
(Facoltativo) Schema delle proprietà di |
required |
(Facoltativo) Proprietà obbligatorie di |
nullable |
(Facoltativo) Indica se il valore può essere |
FunctionCallingConfig
FunctionCallingConfig
controlla il comportamento del modello e determina il tipo di funzione da chiamare.
Parametri | |
---|---|
|
(Facoltativo)
|
|
(Facoltativo) Nomi delle funzioni da chiamare. Impostato solo quando |
Esempi
Invia una dichiarazione di funzione
L'esempio seguente è un esempio di base di invio di una query e di una dichiarazione di funzione al modello.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto.
- LOCATION: la regione in cui elaborare la richiesta.
- MODEL_ID: l'ID del modello in fase di elaborazione.
- ROLE: l'identità dell'entità che crea il messaggio.
- TEXT: il prompt da inviare al modello.
- NAME: il nome della funzione da chiamare.
- DESCRIPTION: descrizione e scopo della funzione.
- Per altri campi, consulta la tabella Elenco dei parametri.
Metodo HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent
Corpo JSON della richiesta:
{ "contents": [{ "role": "ROLE", "parts": [{ "text": "TEXT" }] }], "tools": [{ "function_declarations": [ { "name": "NAME", "description": "DESCRIPTION", "parameters": { "type": "TYPE", "properties": { "location": { "type": "TYPE", "description": "DESCRIPTION" } }, "required": [ "location" ] } } ] }] }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
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
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$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
Comando curl di esempio
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
Vai
REST (OpenAI)
Puoi chiamare l'API Function Calling utilizzando la libreria OpenAI. Per ulteriori informazioni, consulta Chiama i modelli Vertex AI utilizzando la libreria OpenAI.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto.
- LOCATION: la regione in cui elaborare la richiesta.
- MODEL_ID: l'ID del modello in fase di elaborazione.
Metodo HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions
Corpo JSON della richiesta:
{ "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"] } } } ] }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
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
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$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)
Puoi chiamare l'API Function Calling utilizzando la libreria OpenAI. Per ulteriori informazioni, consulta Chiama i modelli Vertex AI utilizzando la libreria OpenAI.
Invia una dichiarazione di funzione con FunctionCallingConfig
Il seguente esempio mostra come passare un FunctionCallingConfig
al modello.
functionCallingConfig
garantisce che l'output del modello sia sempre una chiamata di funzione specifica. Per configurare:
- Imposta la chiamata di funzione
mode
suANY
. Specifica i nomi delle funzioni che vuoi utilizzare in
allowed_function_names
. Seallowed_function_names
è vuoto, può essere restituita una delle funzioni fornite.
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
Vai
REST (OpenAI)
Puoi chiamare l'API Function Calling utilizzando la libreria OpenAI. Per ulteriori informazioni, consulta Chiama i modelli Vertex AI utilizzando la libreria OpenAI.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto.
- LOCATION: la regione in cui elaborare la richiesta.
- MODEL_ID: l'ID del modello in fase di elaborazione.
Metodo HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions
Corpo JSON della richiesta:
{ "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" }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
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
Salva il corpo della richiesta in un file denominato request.json
,
quindi esegui il comando seguente:
$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)
Puoi chiamare l'API Function Calling utilizzando la libreria OpenAI. Per ulteriori informazioni, consulta Chiama i modelli Vertex AI utilizzando la libreria OpenAI.
Passaggi successivi
Per una documentazione dettagliata, consulta quanto segue: