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 référentiels 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 Appels de fonction.
Modèles compatibles :
Modèle | 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 |
Limites :
- Le nombre maximal de déclarations de fonction pouvant être fournies avec la requête est de 128.
FunctionCallingConfig.Mode.ANY
n'est disponible qu'avec les modèles Gemini 1.5 Pro et Gemini 1.5 Flash.
Exemple de syntaxe
Syntaxe permettant d'envoyer une requête d'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": [ { ... } ] }] }'
Python
gemini_model = GenerativeModel( MODEL_ID, generation_config=generation_config, tools=[ Tool( function_declarations=[ FunctionDeclaration( ... ) ] ) ], )
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 être composé de a-z, A-Z, 0-9, ou contenir des traits de soulignement et des tirets, avec une longueur maximale de 64. |
|
Facultatif : Description et objectif de la fonction. Le modèle s'en sert pour décider s'il convient ou non d'appeler la fonction 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 de schéma JSON OpenAPI : Spécification OpenAPI 3.0. |
|
Facultatif : Décrit la sortie de la fonction au format d'objet de schéma JSON OpenAPI : Spécification OpenAPI 3.0. |
Pour en savoir plus, consultez la page 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 être l'un des suivants:
|
description |
Facultatif : Description des données. |
enum |
Facultatif : Valeurs possibles de l'élément de type |
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 |
Exemples
Envoyer une déclaration de fonction
L'exemple suivant est un exemple de base d'envoi d'une requête et d'une déclaration de fonction au modèle.
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : l'ID de votre projet.
- LOCATION : région dans laquelle traiter la requête.
- 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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent" | Select-Object -Expand Content
Exemple de commande curl
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)
Vous pouvez appeler l'API d'appel de fonction à l'aide de la bibliothèque OpenAI. Pour en savoir plus, consultez la page Appeler des modèles Vertex AI à l'aide de la bibliothèque OpenAI.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : l'ID de votre projet.
- LOCATION : région dans laquelle traiter la requête.
- MODEL_ID : ID du modèle en cours de traitement.
Méthode HTTP et URL :
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions" | Select-Object -Expand Content
Python (OpenAI)
Vous pouvez appeler l'API d'appel de fonction à l'aide de la bibliothèque OpenAI. Pour en savoir plus, consultez la page Appeler des modèles Vertex AI à l'aide de la bibliothèque OpenAI.
Envoyer une déclaration de fonction avec FunctionCallingConfig
L'exemple suivant montre comment transmettre un FunctionCallingConfig
au modèle.
functionCallingConfig
garantit que la sortie du modèle est toujours un appel de fonction spécifique. Pour configurer :
- Définissez la fonction appelant
mode
surANY
. Spécifiez les noms de fonction 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-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)
Vous pouvez appeler l'API d'appel de fonction à l'aide de la bibliothèque OpenAI. Pour en savoir plus, consultez la page Appeler des modèles Vertex AI à l'aide de la bibliothèque OpenAI.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : l'ID de votre projet.
- LOCATION : région dans laquelle traiter la requête.
- MODEL_ID : ID du modèle en cours de traitement.
Méthode HTTP et URL :
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions" | Select-Object -Expand Content
Python (OpenAI)
Vous pouvez appeler l'API d'appel de fonction à l'aide de la bibliothèque OpenAI. Pour en savoir plus, consultez la page Appeler des modèles Vertex AI à l'aide de la bibliothèque OpenAI.
Étape suivante
Pour obtenir une documentation détaillée, consultez les pages suivantes :