Tools
Un Agent basé sur des fichiers découvre les Tools à partir des fichiers .ts et .js situés directement dans son répertoire tools/. Chaque fichier découvert est importé lors de la compilation, doit exporter par défaut le résultat de createTool(), et son nom sans extension devient la clé de Tool que le modèle peut appeler.
Utilisez cette page pour la convention basée sur les fichiers. Pour les schémas de Tool, les options d’exécution, la mise en forme de la sortie et les options d’approbation, consultez la référence de createTool().
Démarrage rapideLien direct vers Démarrage rapide
Placez un Tool par fichier dans tools/. Ce fichier est exposé à l’Agent sous le nom get_weather.
import { createTool } from '@mastra/core/tools'
import { z } from 'zod'
export default createTool({
id: 'get_weather',
description: 'Get the current weather for a location.',
inputSchema: z.object({
location: z.string(),
}),
outputSchema: z.object({
location: z.string(),
temperatureCelsius: z.number(),
conditions: z.string(),
}),
execute: async ({ location }) => {
return { location, temperatureCelsius: 21, conditions: 'sunny' }
},
})
Organiser les ToolsLien direct vers Organiser les Tools
Utilisez un fichier par Tool. Nommez le fichier d’après l’action que le modèle doit effectuer :
- Utilisez
get_weather.ts,search_docs.tsoucreate_ticket.ts. - Évitez les noms vagues comme
helper.ts,api.tsouutils.ts. - Colocalisez les tests à côté du Tool sous la forme
*.test.tsou*.spec.ts. La découverte ignore ces fichiers. - Conservez le code d’assistance partagé en dehors de
tools/ou dans des fichiers qui ne correspondent pas aux extensions découvertes danstools/.
Comme les répertoires imbriqués ne sont pas découverts en tant que Tools, regroupez les Tools associés avec des préfixes de nom de fichier explicites plutôt qu’avec des sous-dossiers, par exemple calendar_create_event.ts et calendar_list_events.ts.
Options de ToolLien direct vers Options de Tool
La convention basée sur les fichiers contrôle uniquement l’emplacement du Tool et son mode d’enregistrement. L’API du Tool provient toujours de createTool() :
- Utilisez
descriptionpour indiquer au modèle quand appeler le Tool. - Utilisez
inputSchemaetoutputSchemapour des entrées et sorties structurées. - Utilisez
toModelOutputlorsque le modèle doit voir une forme différente de la valeur brute renvoyée parexecute. - Utilisez
requireApprovallorsqu’un Tool requiert une confirmation humaine avant son exécution.
Consultez la référence de createTool() pour toutes les options et l’approbation des Tools pour le flux d’approbation.
Limite d’exécutionLien direct vers Limite d’exécution
Le code de Tool s’exécute dans l’environnement d’exécution de votre application ou serveur lorsque l’Agent appelle le Tool. Si un Tool nécessite l’isolation du système de fichiers ou de l’interpréteur de commandes, appelez explicitement les API d’espace de travail ou de bac à sable.
Priorité par rapport à configLien direct vers Priorité par rapport à config
Les Tools découverts sont fusionnés avec les tools de config.ts. En cas de conflit de clé, config.tools est prioritaire et un avertissement est consigné.
Si config.tools est une fonction, les Tools découverts sont ignorés avec un avertissement, car les Tools définis par une fonction ne peuvent pas être fusionnés statiquement.