L'appel de fonction améliore la capacité des LLM à fournir des réponses pertinentes et contextuelles.
Vous pouvez fournir des fonctions personnalisées à un modèle d'IA générative avec l'API d'appel de fonction. Le modèle n'appelle pas directement ces fonctions, mais génère une sortie de données structurées spécifiant le nom de la fonction et les arguments suggérés.
Cette sortie permet d'appeler des API ou des systèmes d'information externes tels que des bases de données, des systèmes de gestion de la relation client et des dépôts de documents. Le résultat de l'API peut être utilisé par le LLM pour améliorer la qualité des réponses.
Pour en savoir plus sur les concepts liés aux appels de fonction, consultez Appel de fonction.
Modèles compatibles
- Gemini 2.5 Flash (preview)
- Gemini 2.5 Flash-Lite (preview)
- Gemini 2.5 Flash-Lite
- Gemini 2.5 Flash avec l'audio natif de l'API Live (Preview)
- Gemini 2.0 Flash avec l'API Live (Preview)
- Gemini 2.5 Pro
- Gemini 2.5 Flash
- Gemini 2.0 Flash
- Gemini 2.0 Flash-Lite
Limites
- Vous pouvez fournir avec la requête 128 déclarations de fonction au maximum.
Exemple de syntaxe
Voici la syntaxe permettant d'envoyer une requête API d'appel de fonction.
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": [ { ... } ] }] }'
Liste des paramètres
Consultez des exemples pour en savoir plus sur l'implémentation.
FunctionDeclaration
Définit une fonction pour laquelle le modèle peut générer des entrées JSON en fonction des spécifications OpenAPI 3.0.
Paramètres | |
---|---|
|
Nom de la fonction à appeler. Il doit commencer par une lettre ou un trait de soulignement. Il doit comporter 64 caractères maximum et contenir uniquement des lettres (A-Z, a-z), des chiffres (0-9), des traits de soulignement, des points ou des tirets. |
|
Facultatif : Description et objectif de la fonction. Le modèle s'en sert pour décider si la fonction doit être appelée ou non et de quelle façon. Pour des résultats optimaux, nous vous recommandons d'inclure une description. |
|
Facultatif : Décrit les paramètres de la fonction au format d'objet Schema JSON OpenAPI (spécification OpenAPI 3.0). |
|
Facultatif : Décrit la sortie de la fonction au format d'objet Schema JSON OpenAPI (spécification OpenAPI 3.0). |
Pour en savoir plus, consultez Appel de fonction.
Schema
Définit le format des données d'entrée et de sortie dans un appel de fonction en se basant sur la spécification de schéma OpenAPI 3.0.
Paramètres | |
---|---|
type |
Enum. Type des données. Doit avoir l'une des valeurs suivantes :
|
description |
Facultatif : Description des données. |
enum |
Facultatif : Valeurs possibles de l'élément de type primitif avec le format enum. |
items |
Facultatif : Schéma des éléments de |
properties |
Facultatif : Schéma des propriétés de |
required |
Facultatif : Propriétés obligatoires de |
nullable |
Facultatif : Indique si la valeur peut être |
FunctionCallingConfig
FunctionCallingConfig
contrôle le comportement du modèle et détermine le type de fonction à appeler.
Paramètres | |
---|---|
|
Facultatif :
|
|
Facultatif : Noms des fonctions à appeler. Défini uniquement lorsque |
functionCall
functionCall
prédit renvoyé par le modèle et qui contient une chaîne représentant le functionDeclaration.name
et un objet JSON structuré contenant les paramètres et leurs valeurs.
Paramètres | |
---|---|
|
Nom de la fonction à appeler. |
|
Paramètres et valeurs de la fonction au format d'objet JSON. Pour en savoir plus sur les paramètres, consultez Appel de fonction. |
functionResponse
Résultat d'un FunctionCall
contenant une chaîne qui représente le FunctionDeclaration.name
. Contient également un objet JSON structuré avec la sortie de la fonction (et l'utilise comme contexte pour le modèle). Doit contenir le résultat d'un FunctionCall
effectué en fonction de la prédiction du modèle.
Paramètres | |
---|---|
|
Nom de la fonction à appeler. |
|
Réponse de la fonction au format d'objet JSON. |
Exemples
Envoyer une déclaration de fonction
L'exemple de base suivant montre comment envoyer une requête et une déclaration de fonction au modèle.
REST
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_ID : ID de votre projet.
- MODEL_ID : ID du modèle en cours de traitement.
- ROLE : identité de l'entité qui crée le message.
- TEXT : requête à envoyer au modèle.
- NAME : nom de la fonction à appeler.
- DESCRIPTION : description et objectif de la fonction.
- Pour les autres champs, consultez le tableau Liste des paramètres.
Méthode HTTP et URL :
POST https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/MODEL_ID:generateContent
Corps JSON de la requête :
{ "contents": [{ "role": "ROLE", "parts": [{ "text": "TEXT" }] }], "tools": [{ "function_declarations": [ { "name": "NAME", "description": "DESCRIPTION", "parameters": { "type": "TYPE", "properties": { "location": { "type": "TYPE", "description": "DESCRIPTION" } }, "required": [ "location" ] } } ] }] }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
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
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$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
Exemple de commande curl
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, e.g. San Francisco, CA or a zip code e.g. 95616"
}
},
"required": [
"location"
]
}
}
]
}]
}'
SDK Gen AI pour Python
Node.js
Java
Go
REST (OpenAI)
Vous pouvez appeler l'API d'appel de fonction à l'aide des bibliothèques OpenAI. Pour en savoir plus, consultez Appeler des modèles Vertex AI à l'aide des bibliothèques OpenAI.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_ID : .
- MODEL_ID : ID du modèle en cours de traitement.
Méthode HTTP et URL :
POST https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/endpoints/openapi/chat/completions
Corps JSON de la requête :
{ "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"] } } } ] }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
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
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$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)
Vous pouvez appeler l'API d'appel de fonction à l'aide des bibliothèques OpenAI. Pour en savoir plus, consultez Appeler des modèles Vertex AI à l'aide des bibliothèques OpenAI.
Envoyer une déclaration de fonction avec FunctionCallingConfig
L'exemple suivant montre comment transmettre un élément FunctionCallingConfig
au modèle.
functionCallingConfig
garantit que la sortie du modèle est toujours un appel de fonction spécifique. Pour le configurer :
- Définissez la fonction appelant
mode
surANY
. Spécifiez les noms des fonctions que vous souhaitez utiliser dans
allowed_function_names
. Siallowed_function_names
est vide, n'importe laquelle des fonctions fournies peut être renvoyée.
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, 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
}
}'
SDK Gen AI pour Python
Node.js
Go
REST (OpenAI)
Vous pouvez appeler l'API d'appel de fonction à l'aide des bibliothèques OpenAI. Pour en savoir plus, consultez Appeler des modèles Vertex AI à l'aide des bibliothèques OpenAI.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
- PROJECT_ID : .
- MODEL_ID : ID du modèle en cours de traitement.
Méthode HTTP et URL :
POST https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/endpoints/openapi/chat/completions
Corps JSON de la requête :
{ "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" }
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
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
Enregistrez le corps de la requête dans un fichier nommé request.json
, puis exécutez la commande suivante :
$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)
Vous pouvez appeler l'API d'appel de fonction à l'aide des bibliothèques OpenAI. Pour en savoir plus, consultez Appeler des modèles Vertex AI à l'aide des bibliothèques OpenAI.
Étape suivante
Pour obtenir des informations détaillées, consultez cette documentation :