Si vous disposez d'une fonctionnalité accessible par votre code client, mais pas par des outils hébergés, tels qu' 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 :
- Bloc de 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 client
application doit renvoyer la réponse à l'agent à l'aide des
toolResponseschamps.
L'agent attend cette réponse avant de poursuivre la conversation.
Configuration
Lorsque vous créez un outil de fonction client, vous définissez comment l'agent comprend et interagit avec votre code côté client :
- 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'interface utilisateur/d'expérience utilisateur : déclencher des modifications dans l'interface de votre application (par exemple, « Accéder à l'écran d'assistance »).
- Données d'appareil local : accéder à des informations disponibles uniquement dans le contexte de l'application (par exemple, « Obtenir le niveau de batterie actuel »).
- API privées : intégrer des services accessibles uniquement à partir de 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 exécution de session ultérieure avec la sortie de l'outil jointe à la requête. L'application cliente doit remplir ces champs et utiliser 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"
},
}
]
}
}
]