Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Définitions des outils
Lorsqu'un LLM reçoit une demande qu'il ne peut pas traiter directement, il passe en revue les outils disponibles pour l'aider à compléter la demande. Le LLM sélectionne les outils en fonction de sa compréhension sémantique des noms et des descriptions des outils fournis et des instructions fournies dans l'invite. Il créera ensuite une entrée basée sur le schéma d'entrée défini et s'attend à une sortie basée sur le schéma de sortie. Par conséquent, la création de définitions d'outils descriptives et de schémas d'entrée et de sortie validés est essentielle pour aider le LLM à sélectionner efficacement les outils. Il existe généralement deux approches pour créer cette documentation : l'approche de spécification de l'outil et l'approche docstring.
Approche de spécification des outils
L'approche recommandée consiste à suivre directement les spécifications de l'outil
@tool( name = "search_website", description = "This tool searches the provided website for semantic matches to the query provided", inputSchema = { "json": { "type": "object", "properties": { "url": { "type": "string", "description": "The url of the website to load and search." }, "query": { "type": "string", "description": "The content you want to try and match in the website." } }, "required": ["url", "query"] }, outputSchema = { "json": { "type": "object", "properties": { "results": { "type": "array", "items": { "type": "string" } } } } } ) def search_website: …
L'utilisation de champs standard, tels que namedescription,inputSchema,, et outputSchema garantit que chaque outil dispose d'une documentation cohérente que le LLM et les humains peuvent comprendre. Chaque outil doit définir ces champs au minimum et éventuellement fournir un titre et des annotations, qui sont des indications facultatives sur le comportement de l'outil. Dans la mesure du possible, utilisez des enums pour les valeurs des paramètres afin de permettre au LLM de sélectionner facilement les bonnes options. Les énumérations fonctionnent mieux pour les ensembles finis, tels que les valeurs de statut ou de priorité, mais ne conviennent pas au texte de forme libre, aux valeurs dynamiques, aux nombres arbitraires ou aux identificateurs de ressources. Dans ces cas, fournissez plutôt des descriptions et des exemples clairs. Incluez également une valeur par défaut lorsque cela est possible afin que le LLM n'ait pas à deviner quelle est la bonne option. N'oubliez pas que les définitions d'outils sont incluses dans l'invite LLM à chaque appel, ce qui consomme de l'espace dans la fenêtre contextuelle aux côtés des instructions système et de l'historique des conversations.
Approche Docstring
Une autre approche, si vous écrivez vos outils en Python, consiste à utiliser des docstrings pour fournir la description, l'utilisation et le résultat de l'outil. Voici un exemple de cette approche :
def search_website(url: str, query: str) -> list: """ This tool loads the specified website and then attempts to find content that matches the provided query through semantic search. It provides back a list of strings that are the sentences that match the query. Args: url: the website url to load query: the content you want to semantically match in the website """
Les Docstrings n'appliquent pas de schéma ou de format standardisé. L'utilisation de cette approche peut donner des résultats incohérents en fonction de la manière dont les développeurs d'outils choisissent de documenter chaque outil. La définition et l'application d'une norme à l'échelle de l'organisation sont essentielles si vous suivez cette approche.
Bonnes pratiques pour les définitions d'outils MCP
-
Respectez les spécifications de l'outil MCP : indiquez
namedescription,inputSchema, etoutputSchemades champs pour chaque outil. Pour les implémentations de Python, utilisez les modèles Pydanticpour fournir une documentation en ligne via des descriptions de champs, une validation automatique des types et des valeurs contraintes via des énumérations. Cela permet aux schémas de s'auto-documenter et améliore la compréhension par LLM des options de paramètres valides. -
Rédigez les descriptions sous forme d'instructions — Les descriptions des outils sont des instructions qui guident la prise de décision en matière de LLM. Incluez les éléments essentiels de l'objectif de l'outil (ce que fait l'outil), le moment où il doit être utilisé (modèles d'intention de l'utilisateur ou scénarios), le contexte de la sortie (à quoi sert la sortie), les paramètres et les conditions d'erreur.
-
Fournir des exemples concrets — L'inclusion d'exemples de flux de travail avec des valeurs réelles est le moyen le plus efficace de guider les LLM sur l'utilisation correcte des outils.
-
Documentez les dépendances de manière explicite : incluez les prérequis, les séquences numérotées, les changements d'état et les actions de suivi.