Lorsque vous utilisez un modèle d'intelligence artificielle (IA) générative tel que Gemma, vous pouvez l'utiliser pour exploiter des interfaces de programmation afin d'effectuer des tâches ou de répondre à des questions. L'instruction d'un modèle en définissant une interface de programmation, puis en effectuant une requête qui utilise cette interface, s'appelle appel de fonction.
Gemma n'affiche pas de jeton spécifique à l'outil. Votre framework doit détecter un appel d'outil en vérifiant si la structure de la sortie correspond à la spécification de sortie de la fonction demandée.
Vous pouvez utiliser les appels de fonction pour un certain nombre d'applications:
- Créez une interface en langage naturel pour une API de programmation afin de permettre aux non-programmeurs d'utiliser une interface programmatique sans avoir à coder.
- Générer des appels de programmation dans le cadre d'un workflow d'agent d'IA
Les appels de fonction sont compatibles avec Gemma 3, mais la technique d'appel de fonction peut être utilisée avec les versions antérieures de Gemma. Ce guide explique comment créer des requêtes Gemma qui utilisent l'appel de fonction. Nous vous recommandons de choisir Gemma3 27B pour des performances optimales et Gemma3 12B pour des performances et une latence équilibrées.
Appeler des fonctions de programmation
Vous pouvez utiliser l'appel de fonction avec Gemma en créant une invite qui fournit des instructions spécifiant le format de sortie et définissant les fonctions disponibles.
Lorsque l'invite utilisateur est incluse, le modèle génère un appel de fonction, qui est une chaîne correspondant au format de sortie que vous avez spécifié. Cela signale une requête à analyser par votre framework de modèle pour appeler les fonctions définies.
L'exemple d'invite suivant montre un bloc de définition de fonction, ainsi qu'une syntaxe d'appel de fonction et une sortie d'appel de fonction du modèle. L'exemple d'invite suivant est destiné à être utilisé avec une interface de programmation pour un catalogue de produits:
You have access to functions. If you decide to invoke any of the function(s), you MUST put it in the format of [func_name1(params_name1=params_value1, params_name2=params_value2...), func_name2(params)] You SHOULD NOT include any other text in the response if you call a function [ { "name": "get_product_name_by_PID", "description": "Finds the name of a product by its Product ID", "parameters": { "type": "object", "properties": { "PID": { "type": "string" } }, "required": [ "PID" ] } } ] While browsing the product catalog, I came across a product that piqued my interest. The product ID is 807ZPKBL9V. Can you help me find the name of this product?
Cette invite doit générer la réponse suivante:
[get_product_name_by_PID(PID="807ZPKBL9V")]
Cet exemple utilise une sortie d'appel de fonction de style Python. Vous pouvez également spécifier un format de sortie de style JSON, comme illustré dans l'exemple suivant:
You have access to functions. If you decide to invoke any of the function(s), you MUST put it in the format of {"name": function name, "parameters": dictionary of argument name and its value} You SHOULD NOT include any other text in the response if you call a function [ { "name": "get_product_name_by_PID", "description": "Finds the name of a product by its Product ID", "parameters": { "type": "object", "properties": { "PID": { "type": "string" } }, "required": [ "PID" ] } } ] While browsing the product catalog, I came across a product that piqued my interest. The product ID is 807ZPKBL9V. Can you help me find the name of this product?
Cette invite doit générer la réponse suivante:
{"name": "get_product_name_by_PID", "parameters": {"PID": "807ZPKBL9V"}}
Composants de l'invite d'appel de fonction
Lorsque vous utilisez l'appel de fonction avec des modèles Gemma, votre invite du modèle doit respecter l'ordre et la structure suivants:
- Configuration de l'appel de fonction
- Définitions des fonctions
Les sections suivantes fournissent plus d'informations sur chacun de ces composants de requête.
Configuration de l'appel de fonction
La section configuration de l'invite d'appel de fonction définit le comportement global attendu du modèle. Vous pouvez ajouter des instructions générales supplémentaires sur le comportement du modèle dans cette section, par exemple en spécifiant que la sortie doit être affichée à l'aide d'une fonction print
ou console.log
. Utilisez des apostrophes simples (func_name
) de style Markdown pour indiquer la syntaxe du code.
You have access to functions. If you decide to invoke any of the function(s), you MUST put it in the format of {"name": function name, "parameters": dictionary of argument name and its value} You SHOULD NOT include any other text in the response if you call a function
Ces instructions doivent être aussi claires et concises que possible. Priorisez les instructions les plus importantes et soyez prudent lorsque vous fournissez de nombreuses instructions générales. Les modèles Gemma peuvent ignorer les instructions trop détaillées ou non clairement exprimées, en particulier lorsque vous utilisez des versions de modèle avec un nombre de paramètres inférieur.
Définition de la fonction
La section définition de l'invite fournit le nom, les paramètres et la sortie de la fonction, y compris une description pour chacun d'eux. Vous pouvez déclarer des fonctions au format indiqué. Une ou plusieurs fonctions peuvent être définies dans le bloc de déclaration de fonction.
[ { "name": "get_product_name_by_PID", "description": "Finds the name of a product by its Product ID", "parameters": { "type": "object", "properties": { "PID": { "type": "string" } }, "required": [ "PID" ] } }, { "name": "get_product_price_by_PID", "description": "Finds the price of a product by its Product ID", "parameters": { "type": "object", "properties": { "PID": { "type": "string" } }, "required": [ "PID" ] } } ]
Étapes suivantes
Découvrez comment déployer et exécuter des modèles Gemma: