- lire une information dynamique
- déclencher une action
- aller chercher des données dans votre app
L’idée simple
Vous décrivez un outil en Swift. Le modèle décide ensuite s’il doit l’appeler en fonction :- de son nom
- de sa description
- de la forme de ses arguments
Exemple minimal
Ce qui fait un bon tool
Un nom explicite
Utilisez un nom unique et lisible commeget_weather, pas tool1.
Une description claire
Le modèle lit la description. C’est elle qui l’aide à décider si l’outil est utile.Des arguments simples
Plus les arguments sont clairs, plus le modèle les remplit correctement.Des effets de bord assumés
Un tool peut lire des données, mais aussi déclencher une action. Si c’est le cas, gardez son périmètre étroit et son erreur explicite.includesSchemaInInstructions : quand c’est utile
La propriété includesSchemaInInstructions permet d’injecter dans la session le nom du tool, sa description et le schéma de ses arguments.
Pour un développeur intermédiaire, la règle pratique est simple :
- activez cette injection quand vous voulez aider le modèle à comprendre rapidement quand appeler le tool
- désactivez-la seulement si vous avez une raison claire de contrôler ce contexte autrement
Tool et sortie structurée
Si vous avez besoin d’un résultat fiable côté app, combinez tool et sortie structurée :- le tool récupère la donnée réelle au runtime
- la sortie structurée impose la forme finale attendue par votre UI
Bon cas d’usage dans une app Swift
Calendrier
Lister ou créer des événements à partir d’une demande en langage naturel.
Base locale
Chercher des enregistrements dans SwiftData ou SQLite.
Rappels
Transformer une demande en action applicative.
Données métier
Interroger votre propre couche de service ou votre backend.
Gérer les erreurs d’un tool
Un tool peut échouer comme n’importe quelle fonction Swift. Utilisez des erreurs claires :ToolCallError côté session.
Recommandations pratiques
- gardez les tools ciblés
- ne mélangez pas trop d’actions dans un seul tool
- donnez des descriptions lisibles par un humain
- combinez avec Guided Generation si l’app dépend d’un format stable