Le pattern d’utilisation d’outils : le pont vers le monde extérieur
Après avoir exploré le pattern de réflexion, nous aurions pu croire que nos agents étaient imbattables. Un agent capable de réfléchir sur sa propre production, quoi de mieux ? 🤔
Pourtant, le pattern de réflexion a une faiblesse majeure. Que se passe-t-il si vous demandez à cet agent le prix actuel de l’action NVIDIA ? Ou la température d’hier à Madrid ? Comme vous le savez, l’information encodée dans les poids d’un LLM ne suffit pas à fournir des réponses précises, fraîches et spécifiques au contexte.
C’est pourquoi nous devons équiper notre agent de moyens d’accéder au monde extérieur 🌍. C’est ici qu’interviennent les Outils (Tools). Fondamentalement, les outils sont des fonctions que le LLM peut appeler pour renforcer ses capacités. C’est le cœur du deuxième pattern : le Tool Pattern.
Vous pouvez trouver le code de toute la série sur GitHub !
Le pattern d’utilisation d’outils en bref
Le Tool Use Pattern permet à un agent d’exécuter des actions concrètes en appelant des fonctions ou des APIs externes. Au lieu de se limiter à générer du texte, l’agent peut :
- Rechercher des informations fraîches et véridiques.
- Effectuer des calculs complexes ou des opérations de données.
- Interagir avec des services tiers (météo, bourse, GitHub, etc.).
Dans ce post, vous apprendrez comment fonctionnent les outils et comment les construire de zéro en utilisant Python et les LLM de Groq.
Implémentation de zéro : construire un outil
Commençons par les bases. Regardez cette fonction extrêmement simple :
La question est : comment rendre cette fonction disponible pour un LLM ?
Un System Prompt qui fonctionne
Pour que le LLM soit conscient de cette fonction, nous devons lui fournir des informations pertinentes dans le contexte : nom de la fonction, arguments, description, etc. Regardez le System Prompt suivant :
Ce prompt force le LLM à se comporter comme un modèle de “function calling” qui, à partir d’une liste de signatures de fonctions entre des balises XML, sélectionnera celle à utiliser.
Testons en pratique avec une question simple : “Quelle est la température actuelle à Madrid en Celsius ?”
Après avoir exécuté ce code, nous voyons que le LLM génère l’appel à l’outil :
C’est une avancée ! Nous n’avons pas encore la réponse finale, mais nous savons comment l’obtenir. Il nous suffit de :
1. Parser la sortie du LLM (supprimer les balises XML).
2. Charger la sortie sous forme de dictionnaire Python.
L’implémentation de ces étapes est disponible dans ce module Python. Une fois les arguments en place, exécuter la fonction devient facile :
Le résultat est exactement ce qu’on attendait : {"temperature": 25, "unit": "celsius"}. Enfin, nous ajoutons ce résultat à l’historique du chat pour que le LLM puisse répondre à l’utilisateur :
Et voilà comment un outil fonctionne sous le capot !
Le décorateur d’outils
Automatiser la transformation de n’importe quelle fonction en outil est essentiel. C’est là qu’intervient le décorateur d’outils (tool decorator), qui transforme une fonction Python en un objet Tool. Vous pouvez voir l’implémentation du tool_decorator ici.
Pour voir le décorateur en action, construisons un outil qui interagit avec Hacker News :
Le bloc de code ci-dessus transforme la fonction fetch_top_hacker_news_stories en un Tool. Sous le capot, la classe Tool génère automatiquement la signature de la fonction (vous pouvez voir comment ici).
Maintenant que nous avons notre outil, lançons l’agent :
Et voilà ! Un outil pleinement fonctionnel 🛠️ :
Pourquoi ça marche si bien ?
- Accès au monde réel : Dépasse les limites de connaissances statiques du modèle.
- Actions concrètes : Permet de passer de la réflexion à l’exécution.
- Extensibilité : N’importe quelle API ou fonction locale devient une capacité pour l’agent.
Prochaines étapes
Dans le prochain post de cette série, nous aborderons le Planning Pattern, la technique ReAct et comment implémenter des heuristiques de raisonnement pour nos agents.
Ressources
- Article original : Agent Tools: The bridge to the outside world
- Vidéo YouTube couvrant le Tool Pattern
- GitHub de la série










