Je me souviens avoir été très confus lorsque j'ai entendu parler pour la première fois de la capacité d'un LLM à demander l'exécution de code. Cette fonctionnalité a été appelée sous différents noms : outil, action, plugin, fonction. Désormais, la terminologie s'arrête sur un seul nom : outil. Cependant, en discutant avec d'autres développeurs et en lisant les commentaires en ligne, je constate que la confusion s'est déplacée ailleurs. Certains soutiennent qu'avec l'introduction des compétences par Anthropic, MCP n'a plus de sens, et d'autres ne sont pas convaincus de l'utilité de MCP par rapport aux appels directs à des outils.
La confusion est architecturale. Les outils, les serveurs MCP et les compétences résolvent différents problèmes à différentes couches.
Au niveau le plus fondamental, un outil d’IA est une fonction qu’un modèle de langage peut décider d’appeler. Il ne s'agit pas d'une métaphore de la « capacité » en général, mais d'une fonction spécifique et appelable avec un schéma d'entrée défini et une sortie prévisible.
Lorsqu'un modèle a besoin d'informations ou d'une action qu'il ne peut pas produire à partir de la seule formation, il génère un appel structuré à un outil : quelque chose comme "callget_customer_recordavecidentifiant_client : 12345. " L'application hôte intercepte cet appel, exécute la fonction réelle et renvoie le résultat au modèle. Le modèle l'intègre ensuite et continue.
Bien que le concept d'appel d'outils soit le même dans les différents LLM, chacun a ses propres spécifications pour appeler des outils. Consultez la documentation OpenAI, Claude ou Gemini pour quelques exemples spécifiques.
Ce sont les outils qui donnent à l’IA ses « mains ». Sans eux, un modèle est incroyablement articulé mais isolé des données réelles et des systèmes où se déroule le travail réel. Avec eux, il peut rechercher des bases de données, appeler des API, envoyer des messages ou déclencher une logique métier en réponse aux besoins d'un utilisateur.
La propriété clé à conserver : un outil doit savoir exécuter une chose. Il ne décide pas quand être appelé. Ce jugement appartient au modèle, ou dans des systèmes plus complexes, à quelque chose qui se trouve au-dessus de lui.
Voici à quoi cela ressemble dans le code. À l'aide du SDK Anthropic, vous définissez un outil sous la forme d'un schéma JSON : son nom, une description que le modèle utilise pour décider quand l'invoquer et les entrées qu'il attend :
import anthropic client = anthropic.Anthropic() tools = [{ "name": "get_customer_record", "description": "Récupérer les détails du compte d'un client pa...
[Courte citation de 8% de l'article original]