Si vous disposez d'une fonctionnalité accessible par votre code client, mais pas par les outils hébergés, tels que OpenAPI ou MCP, vous pouvez utiliser des outils de fonction client. Les outils de fonction client sont toujours exécutés côté client, et non par l'agent.
Fonctionnement
Lorsqu'un agent déclenche un outil de fonction client :
- Blocage de la session : la session de conversation est effectivement "bloquée" côté serveur.
- Exécution du client : votre application cliente doit identifier l'appel d'outil et exécuter la logique correspondante dans votre environnement local.
- Fournir une réponse : une fois l'exécution terminée, votre application cliente doit renvoyer la réponse à l'agent à l'aide des champs
toolResponses.
L'agent attend cette réponse avant de poursuivre la conversation.
Configuration
Lorsque vous créez un outil de fonction client, vous définissez la façon dont l'agent comprend et interagit avec votre code côté client :
- Name (Nom) : identifiant unique de l'outil (par exemple,
open_settings). - Description : brève description de l'objectif de l'outil. Les modèles d'agent utilisent cette description pour décider quand appeler la fonction.
- Schéma d'entrée/de sortie : défini au format OpenAPI. Cela détermine la structure des données que l'agent envoie et s'attend à recevoir.
Cas d'utilisation
Les outils de fonction client sont idéaux pour :
- Actions d'UI/UX : déclenchent des modifications dans l'interface de votre application (par exemple, "Accéder à l'écran d'assistance").
- Données locales de l'appareil : accès aux informations disponibles uniquement dans le contexte de l'application (par exemple, "Obtenir le niveau de batterie actuel").
- API privées : intégration aux services accessibles uniquement depuis l'environnement côté client.
Exemple
L'exemple suivant est une réponse de session indiquant que l'application cliente doit appeler une fonction :
"outputs": [
{
"toolCalls": {
"toolCalls": [
{
"id": "<execution id>",
"tool": "<client function tool's resource name>",
"args": {
"zip_code": "92031"
},
"displayName": "get_nearest_store"
}
]
},
"turnCompleted": true,
}
]
L'exemple suivant est une session ultérieure exécutée avec la sortie de l'outil jointe à la requête. L'application cliente doit renseigner ces champs et indiquer les mêmes valeurs id, tool et display_name que dans le message précédent.
"inputs": [
{
"toolResponses": {
"toolResponses": [
{
"displayName": "get_nearest_store",
"id": "<execution id>",
"tool": "<client function tool's resource name>",
"response": {
"name": "Alibaba",
"address": "43 Alpha Road, Mountain View, CA 92039, USA"
},
}
]
}
}
]