Que ce soit ChatGPT pour rédiger des e-mails ou GitHub Copilot pour auto-compléter notre code, nous prenons de plus en plus l'habitude de travailler avec ces outils. Ils sont sympas : ils attendent sagement vos instructions et vous répondent.
Mais imaginez vouloir automatiser un processus réel comme chercher les dernières actualités ou interroger votre base de données.
C'est là que ça devient intéressant, on parlera d'agents IA. Alors oui, des outils no-code très connus comme n8n permettent de faire ça. Mais ici, on a envie de faire du Python 😛 et de coder notre propre agent.
Qu'est-ce qu'un agent IA ?
Aujourd'hui, les interfaces que l'on utilise tous les jours comme ChatGPT, Gemini ou Claude sont des cerveaux extraordinairement puissants : ils possèdent énormément de connaissances et savent raisonner. Il est assez simple de leur attacher des outils pour qu'ils aillent chercher des informations ou exécuter des actions.
Mais si on greffe des mains et des yeux à ce cerveau et qu'on lui donne la capacité d'agir de façon autonome, de planifier, d'utiliser ses outils et de s'adapter aux résultats, on va créer un agent IA.
Je vous rassure, on va arrêter de parler du corps humain, ça fait un peu trop Terminator 😅 ! En programmation, ces extensions s'appellent tout simplement des outils.
Il faut voir un agent comme un système automatisé qui :
-
Reçoit une requête
-
Planifie des actions
-
Utilise des outils (recherche sur le web ou vos propres outils par exemple !)
-
Synthétise les résultats pour fournir une réponse finale
Créer son propre agent avec smolagents
Il est temps de créer notre propre agent ! Pour notre exemple, nous allons utiliser smolagents, une bibliothèque open-source développée par Hugging Face.
Les deux écoles : CodeAgent vs ToolCallingAgent
Cette bibliothèque nous permet de travailler de deux façons différentes avec un agent :
-
Le
ToolCallingAgent: l'agent rédige ses actions sous forme de JSON. Il est fiable et sécurisé, mais rigide -
Le
CodeAgent: il écrit et exécute des scripts Python pour appeler vos outils. Il peut faire preuve d'une vraie logique de programmation
Pour obtenir le détail des forces et faiblesses, n'hésitez pas à consulter la documentation.
Pour la suite de cet article, nous adopterons la doctrine CodeAgent 😎.
Notre premier agent
Nous allons créer un simple agent connecté au web. Je commence par me créer un dossier avec un environnement virtuel, puis j'installe la bibliothèque :
# On installe smolagents avec les outils de base (toolkit) pip install "smolagents[toolkit]"
Vous devez ensuite créer un compte pour générer une clé d'API sur Hugging Face.
Créer une clé d'API
Nous pouvons développer notre agent, capable d'aller chercher des informations sur Internet :
import os from smolagents import CodeAgent, InferenceClientModel, DuckDuckGoSearchTool os.environ["HF_TOKEN"] = "votre clé api" agent = CodeAgent( # On crée un agent [DuckDuckGoSearchTool()], # On lui confie l'outil de recherche DuckDuckGo pour qu'il puisse faire des recherches sur internet model=InferenceClientModel() # On utilise le modèle par défaut de Hugging Face : ) r = agent.run("Qui est Robert Patrick ?") print(r)
Je lance mon script
À noter
Par défaut, InferenceClientModel utilise les modèles de Hugging Face. Toutefois, vous pouvez utiliser OpenAI ou Anthropic grâce à LiteLLMModel.
Créer son propre outil métier
Nous disposons d'un agent capable d'effectuer des recherches sur le Web ; c'est plutôt sympa, mais je souhaite qu'il accède à mes propres fonctions. Si un outil est une fonction Python classique, l'IA doit être en mesure de l'utiliser. Pour cela, il est nécessaire d'avoir recours au typage et aux docstrings.
import os from smolagents import tool, CodeAgent, InferenceClientModel, DuckDuckGoSearchTool os.environ["HF_TOKEN"] = "votre clé d'api" @tool def verifier_stock(produit: str) -> int: """ Vérifie le stock disponible pour un produit donné dans notre magasin. Args: produit: Le nom du produit à chercher (ex: 'clavier', 'souris'). """ stocks_en_base = {"clavier": 15, "souris": 0} return stocks_en_base.get(produit.lower(), 0) # On donne nos deux outils à l'agent agent = CodeAgent( tools=[DuckDuckGoSearchTool(), verifier_stock], model=InferenceClientModel() ) agent.run( "Vérifie si nous avons des souris en stock. " "Si non, cherche sur internet quel est le modèle de souris le plus populaire en 2026." )
Le décorateur @tool analyse votre docstring pour expliquer à l'IA l'utilité de la fonction. L'agent va ainsi exécuter le code pour récupérer le stock ; si le résultat est nul, il décidera par lui-même de générer un nouveau script utilisant DuckDuckGoSearchTool.
Notre agent métier (partie 1)
Notre agent métier (partie 2)
Créer une interface visuelle en une seule ligne de code
Je n'avais pas forcément prévu cette partie, mais c'est tellement sympa de voir son agent fonctionner avec Gradio. Gradio est une bibliothèque permettant de créer des interfaces web... en Python ! D'ailleurs, sur Docstring, nous en parlons dans cet article.
Il suffit d'installer Gradio et d'importer GradioUI :
pip install 'smolagents[gradio]'
import os from smolagents import tool, CodeAgent, InferenceClientModel, DuckDuckGoSearchTool, GradioUI os.environ["HF_TOKEN"] = "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" @tool def verifier_stock(produit: str) -> int: """ Vérifie le stock disponible pour un produit donné dans notre magasin. Args: produit: Le nom du produit à chercher (ex: 'clavier', 'souris'). """ stocks_en_base = {"clavier": 15, "souris": 0} return stocks_en_base.get(produit.lower(), 0) # On donne nos deux outils à l'agent agent = CodeAgent( tools=[DuckDuckGoSearchTool(), verifier_stock], model=InferenceClientModel() ) GradioUI(agent).launch()
Rien de plus simple ! Il ne reste plus qu'à lancer notre script et Gradio se charge de l'interface :
Description
Interface Gradio (suite)
Félicitations, vous venez de coder votre premier agent d'IA avec interface graphique ! 😎
Cette mise en bouche à smolagents touche à sa fin, mais voici quelques pistes pour aller plus loin :
-
Créer un système multi-agents : plutôt que d'avoir un agent avec 50 outils, il est possible de créer plusieurs agents spécialisés
-
Héberger et partager son interface Gradio sur Hugging Face Spaces