Comprendre et créer son premier Agent IA en Python

Comment passer d'un simple assistant LLM à un véritable Agent IA autonome en Python ?

Publié le par Gabriel Trouvé (mis à jour le )

18 minutes

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]"
PYTHON

Vous devez ensuite créer un compte pour générer une clé d'API sur Hugging Face.

Créer une clé d'API

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)
PYTHON
Je lance mon script

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."
)
PYTHON

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 1)

Notre agent métier (partie 2)

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]'
SHELL
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()
PYTHON

Rien de plus simple ! Il ne reste plus qu'à lancer notre script et Gradio se charge de l'interface :

Description

Description

Interface Gradio (suite)

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

Bravo, tu es prêt à passer à la suite

Rechercher sur le site

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.