Puoi fornire funzioni personalizzate per un modello di AI generativa con l'API Function Calling. Il modello non richiama direttamente queste funzioni, ma genera invece un output di dati strutturati che specifica il nome della funzione e gli argomenti suggeriti.
Questo output consente la chiamata di API o sistemi informativi esterni come database, sistemi di gestione dei rapporti con i clienti e repository di documenti. L'output API risultante può essere utilizzato dall'LLM per migliorare la qualità della risposta.
Per documentazione più concettuale sulle chiamate di funzione, consulta Chiamate di funzione.
Modelli supportati:
Modello | Versione |
---|---|
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 (l'assistenza per le chiamate alla funzione è Anteprima) |
Limitazioni:
- Il numero massimo di funzioni che è possibile chiamare è 64.
FunctionCallingConfig
è disponibile solo con il modellogemini-1.5-pro-001
.
Sintassi di esempio
Sintassi per inviare una richiesta API della chiamata di funzione.
arricciatura
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 parametri
Consulta gli esempi per i dettagli di implementazione.
FunctionDeclaration
Una rappresentazione strutturata di una dichiarazione di funzione come definita dalla specifica OpenAPI 3.0 che rappresenta una funzione per cui il modello può generare input JSON.
Parametri | |
---|---|
|
Il nome della funzione da chiamare. |
|
Facoltativo: Descrizione e scopo della funzione. |
|
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: OpenAPI 3.0 specifica. |
Schema
Lo schema viene utilizzato per definire il formato dei dati di input e di output in una chiamata di funzione. Una rappresentazione strutturata della dichiarazione di una funzione come definita dalla specifica OpenAPI 3.0 Schema.
Parametri | |
---|---|
Tipo |
Enum. Il tipo di dati. Deve essere uno dei seguenti:
|
description |
Facoltativo: Descrizione dei dati. |
enum |
Facoltativo: Valori possibili dell'elemento |
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
(anteprima)
L'elemento FunctionCallingConfig
controlla il comportamento del modello e
determina il tipo di funzione da chiamare.
Questa funzionalità è disponibile solo per il modello gemini-1.5-pro-preview-0409
.
Parametri | |
---|---|
|
Facoltativo:
|
|
Facoltativo: Nomi delle funzioni da chiamare. Impostato solo quando |
Esempi
Invia una dichiarazione di funzione
L'esempio seguente è un esempio di base dell'invio di una query e di una dichiarazione di funzione al modello.
REST
Prima di utilizzare i dati della richiesta, effettua 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 gli altri campi, consulta la tabella Elenco 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:
arricciatura
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
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
ed esegui questo comando:
$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
Invia una dichiarazione di funzione con FunctionCallingConfig
L'esempio seguente mostra come passare FunctionCallingConfig
al modello.
functionCallingConfig
assicura che l'output del modello sia sempre una
chiamata funzione specifica. Per eseguire la configurazione:
- Imposta la funzione che chiama
mode
suANY
. - Specifica i nomi delle funzioni che vuoi utilizzare in
allowed_function_names
. Seallowed_function_names
è vuoto, è possibile restituire una qualsiasi delle funzioni fornite.
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
Passaggi successivi
Per la documentazione dettagliata, vedi quanto segue: