La chiamata di funzione migliora la capacità dell'LLM di fornire risposte pertinenti e contestuali.
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 la chiamata di 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à della risposta.
Per una documentazione più concettuale sulla chiamata di funzione, consulta Chiamata di funzione.
Modelli supportati
- Gemini 3 Pro Modello di anteprima
- Gemini 2.5 Pro
- Gemini 2.5 Flash Modello di anteprima
- Gemini 2.5 Flash-Lite Modello di anteprima
- Gemini 2.5 Flash
- Gemini 2.5 Flash-Lite
- Gemini 2.5 Flash con audio nativo dell'API Live Modello di anteprima
- Gemini 2.0 Flash con API Live Modello di anteprima
- Gemini 2.0 Flash
- Gemini 2.0 Flash-Lite
Limitazioni:
- Il numero massimo di dichiarazioni di funzioni che possono essere fornite con la richiesta è 128.
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": [ { ... } ] }] }'
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 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 caratteri. |
|
(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 schema JSON OpenAPI: specifica OpenAPI 3.0. |
|
(Facoltativo) Descrive l'output della funzione nel formato dell'oggetto schema JSON OpenAPI: specifica OpenAPI 3.0. |
Per saperne di più, 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) Valori possibili 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 |
|
(Facoltativo) Se |
functionCall
Un functionCall previsto restituito dal modello che contiene una stringa
che rappresenta il functionDeclaration.name e un oggetto JSON strutturato
contenente i parametri e i relativi valori.
| Parametri | |
|---|---|
|
Il nome della funzione da chiamare. |
|
I parametri e i valori della funzione in formato oggetto JSON. Per i dettagli sui parametri, consulta Chiamata di funzione. |
|
(Facoltativo) Un token opaco che incapsula lo stato di ragionamento interno del modello. Se presente, deve essere incluso nel turno successivo della conversazione per mantenere il contesto per l'utilizzo di strumenti in più passaggi. |
functionResponse
L'output risultante da un FunctionCall che contiene una stringa che rappresenta
FunctionDeclaration.name. Contiene anche un oggetto JSON strutturato con l'output della funzione (e lo utilizza come contesto per il modello). Deve contenere il risultato di un FunctionCall effettuato in base alla previsione del modello.
| Parametri | |
|---|---|
|
Il nome della funzione da chiamare. |
|
La risposta della funzione in formato oggetto JSON. |
|
(Facoltativo) Parti multimodali facoltative della risposta della funzione. Può essere utilizzato per restituire immagini, audio o video insieme a una risposta JSON strutturata. |
FunctionResponsePart
FunctionResponsePart contiene dati multimodali della chiamata di funzione.
| Parametri | |
|---|---|
|
(Facoltativo) Dati incorporati della parte di risposta della funzione. |
|
(Facoltativo) Dati basati sull'URI della parte di risposta della funzione. |
FunctionResponseBlob
FunctionResponseBlob contiene dati in linea per un FunctionResponsePart.
| Parametri | |
|---|---|
|
Il tipo MIME IANA dei dati incorporati. |
|
I dati binari non elaborati. |
|
(Facoltativo) Il nome visualizzato dei dati in linea. |
FunctionResponseFileData
FunctionResponseFileData contiene dati basati su URI per un FunctionResponsePart.
| Parametri | |
|---|---|
|
Il tipo MIME IANA dei dati del file. |
|
L'URI dei dati del file. |
|
(Facoltativo) Il nome visualizzato dei dati del file. |
Esempi
Inviare 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 sostituzioni seguenti:
- PROJECT_ID: il tuo ID progetto
- 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://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/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 di queste 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://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/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://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/MODEL_ID:generateContent" | Select-Object -Expand Content
Comando curl di esempio
PROJECT_ID=myproject
LOCATION=us-central1
MODEL_ID=gemini-2.5-flash
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, for example San Francisco, CA or a zip code such as 95616"
}
},
"required": [
"location"
]
}
}
]
}]
}'
SDK Gen AI per Python
Node.js
Java
Go
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 sostituzioni seguenti:
- PROJECT_ID: .
- MODEL_ID: l'ID del modello in fase di elaborazione.
Metodo HTTP e URL:
POST https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/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 di queste 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://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/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://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/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
L'esempio seguente 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
modesuANY. Specifica i nomi delle funzioni che vuoi utilizzare in
allowed_function_names. Seallowed_function_namesè vuoto, può essere restituita una qualsiasi delle funzioni fornite.
REST
PROJECT_ID=myproject
LOCATION=us-central1
MODEL_ID=gemini-2.5-flash
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, for example: 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
}
}'
SDK Gen AI per Python
Node.js
Go
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 sostituzioni seguenti:
- PROJECT_ID: .
- MODEL_ID: l'ID del modello in fase di elaborazione.
Metodo HTTP e URL:
POST https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/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 di queste 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://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/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://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/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 la documentazione dettagliata, consulta quanto segue: