Introduction aux Agents IA

tl;dr: Les agents IA combinent LLM + outils + raisonnement pour accomplir des tâches autonomes. De simples chatbots (2020) aux systèmes multi-agents (2025), ils transforment l'IA en assistants capables d'agir.

Schéma illustrant les concepts fondamentaux des agents IA dans les systèmes d’agents d’intelligence artificielle

Qu’est-ce qu’un Agent IA ?

Un agent IA est un système autonome qui utilise un modèle de langage pour :

  1. Percevoir son environnement (APIs, bases de données, fichiers)
  2. Raisonner sur la meilleure action à entreprendre
  3. Agir en utilisant des outils
  4. Apprendre de ses succès et échecs

Différence avec un LLM Simple

AspectLLM SimpleAgent IA
ActionGénère du texteExécute des actions
OutilsAucunAccès à des APIs, bases de données
RaisonnementUne seule réponseBoucle de réflexion itérative
MémoireContexte limitéMémoire persistante
AutonomieRépond à une questionDécompose et résout des problèmes

Exemple concret :

💡 Différence clé : Un agent ne se contente pas de générer du texte. Il peut exécuter des actions concrètes (appeler des APIs, manipuler des fichiers, interroger des bases de données) pour accomplir des tâches réelles.

LLM simple :

User: Quelle est la météo à Paris aujourd'hui ?
LLM: Je ne peux pas accéder aux données en temps réel.

Agent IA :

User: Quelle est la météo à Paris aujourd'hui ?
Agent:
1. [PENSE] Je dois utiliser l'API météo
2. [AGIT] Appelle weather_api("Paris", "today")
3. [RÉPOND] Il fait 18°C à Paris avec des nuages, 70% d'humidité

Évolution des Agents IA (2020-2025)

2020-2021 : Les Précurseurs

GPT-3 Plugins primitifs

  • Agents basiques avec règles hard-codées
  • Intégrations manuelles d’APIs
  • Limité à 2-3 actions séquentielles
# Approche 2020 : Hard-coded
def agent_v1(query):
    if "météo" in query:
        return call_weather_api()
    elif "calcul" in query:
        return call_calculator()
    else:
        return gpt3_response(query)

2022 : L’Émergence (Chain-of-Thought)

ReAct (Reasoning + Acting)

  • Raisonnement explicite avant chaque action
  • Capacité à corriger ses erreurs
  • 5-10 actions en chaîne
# Approche 2022 : ReAct pattern
def agent_v2(query):
    thoughts = []
    while not task_complete:
        thought = llm(f"Pensée: {context}")
        action = llm(f"Action: {thought}")
        observation = execute(action)
        thoughts.append((thought, action, observation))
    return final_answer(thoughts)

2023-2024 : L’Industrialisation

LangChain, AutoGPT, BabyAGI

  • Frameworks standardisés
  • Agents spécialisés (SQL, Web, Code)
  • Mémoire vectorielle + RAG
  • Function calling natif (GPT-4, Claude)
💡 Approfondir : Pour comprendre comment structurer un agent moderne, consultez notre guide Architecture des agents IA qui détaille les patterns Planner, Executor et Memory.
# Approche 2023 : Frameworks
from langchain.agents import create_react_agent

agent = create_react_agent(
    llm=ChatOpenAI(model="gpt-4"),
    tools=[weather_tool, calculator_tool, search_tool],
    prompt=react_prompt
)

2025 : Multi-Agents et Orchestration

CrewAI, LangGraph, Semantic Kernel

  • Agents qui collaborent entre eux
  • Workflows complexes (20+ étapes)
  • Agents superviseurs + agents spécialisés
  • Intégration deep avec outils métiers
🔎 Tip
Cas d’usage multi-agents : Support client (triage → technique → escalade), création de contenu (recherche → rédaction → édition → SEO), analyse de données (collecte → nettoyage → analyse → visualisation).
# Approche 2025 : Multi-agents
from crewai import Crew, Agent, Task

researcher = Agent(role="Researcher", tools=[search, scrape])
analyst = Agent(role="Analyst", tools=[pandas, sql])
writer = Agent(role="Writer", tools=[grammar_check])

crew = Crew(agents=[researcher, analyst, writer])
crew.kickoff("Analyse le marché des voitures électriques")

Votre Premier Agent en 10 Minutes

Installation

pip install openai python-dotenv

Code Minimal

import openai
import json
from datetime import datetime

# Définir les outils disponibles
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_current_time",
            "description": "Retourne l'heure actuelle",
            "parameters": {"type": "object", "properties": {}}
        }
    },
    {
        "type": "function",
        "function": {
            "name": "calculator",
            "description": "Effectue un calcul mathématique",
            "parameters": {
                "type": "object",
                "properties": {
                    "expression": {
                        "type": "string",
                        "description": "Expression mathématique (ex: '2+2', '10*5')"
                    }
                },
                "required": ["expression"]
            }
        }
    }
]

# Implémenter les fonctions
def get_current_time():
    return datetime.now().strftime("%H:%M:%S")

def calculator(expression):
    try:
        return str(eval(expression))  # ⚠️ Attention en prod !
    except Exception as e:
        return f"Erreur: {str(e)}"

# Mapper les noms de fonctions
function_map = {
    "get_current_time": get_current_time,
    "calculator": calculator
}

# Boucle agent
def run_agent(user_query, max_iterations=5):
    messages = [{"role": "user", "content": user_query}]

    for iteration in range(max_iterations):
        print(f"\n🔄 Itération {iteration + 1}")

        # Appel LLM
        response = openai.chat.completions.create(
            model="gpt-4",
            messages=messages,
            tools=tools,
            tool_choice="auto"
        )

        message = response.choices[0].message
        messages.append(message)

        # Si le LLM veut utiliser un outil
        if message.tool_calls:
            for tool_call in message.tool_calls:
                function_name = tool_call.function.name
                arguments = json.loads(tool_call.function.arguments)

                print(f"  🔧 Appelle {function_name}({arguments})")

                # Exécuter la fonction
                function_result = function_map[function_name](**arguments)
                print(f"  ✅ Résultat: {function_result}")

                # Ajouter le résultat aux messages
                messages.append({
                    "role": "tool",
                    "tool_call_id": tool_call.id,
                    "name": function_name,
                    "content": function_result
                })
        else:
            # L'agent a terminé
            print(f"\n💬 Réponse finale: {message.content}")
            return message.content

    return "Limite d'itérations atteinte"

# Test
if __name__ == "__main__":
    run_agent("Quelle heure est-il ? Combien font 15 * 7 ?")

Résultat

🔄 Itération 1
  🔧 Appelle get_current_time({})
  ✅ Résultat: 14:32:15
  🔧 Appelle calculator({'expression': '15*7'})
  ✅ Résultat: 105

🔄 Itération 2
💬 Réponse finale: Il est 14:32:15 et 15 × 7 = 105.

Anatomie d’un Agent

Le LLM (Cerveau)

Le modèle de langage qui :

  • Comprend la requête utilisateur
  • Décide quelle action entreprendre
  • Génère la réponse finale

Recommandations :

  • Production : GPT-4, Claude 3 Opus (raisonnement complexe)
  • Développement : GPT-3.5-turbo, Claude 3 Haiku (rapide, économique)
  • Open-source : Llama 3 70B, Mixtral 8x7B (auto-hébergé)

Les Outils (Mains)

Fonctions que l’agent peut appeler :

  • APIs externes : météo, recherche web, bases de données
  • Calculateurs : mathématiques, conversions
  • Lecteurs : fichiers, emails, documents
  • Écrivains : génération de rapports, envoi d’emails

Exemple d’outil :

def search_wikipedia(query: str, max_results: int = 3) -> str:
    """Recherche sur Wikipédia et retourne les résumés."""
    import wikipedia
    wikipedia.set_lang("fr")

    try:
        results = wikipedia.search(query, results=max_results)
        summaries = []
        for result in results:
            try:
                page = wikipedia.page(result, auto_suggest=False)
                summaries.append(f"**{page.title}**\n{page.summary[:300]}...")
            except:
                continue
        return "\n\n".join(summaries)
    except Exception as e:
        return f"Erreur: {str(e)}"

La Mémoire (Contexte)

Stockage des informations :

  • Court-terme : Conversation actuelle (context window)
  • Long-terme : Base vectorielle, fichiers, bases de données
  • Épisodique : Historique des tâches accomplies
class AgentMemory:
    def __init__(self):
        self.short_term = []  # Messages de la conversation
        self.long_term = {}   # Faits persistants

    def remember(self, key, value):
        """Stocke une information long-terme"""
        self.long_term[key] = value

    def recall(self, key):
        """Récupère une information"""
        return self.long_term.get(key)

    def add_message(self, role, content):
        """Ajoute un message à la conversation"""
        self.short_term.append({"role": role, "content": content})

La Boucle de Contrôle (Cervelet)

Orchestration des actions :

def agent_loop(query, tools, max_steps=10):
    state = {"query": query, "step": 0, "complete": False}

    while state["step"] < max_steps and not state["complete"]:
        # 1. Observer
        observation = perceive(state)

        # 2. Raisonner
        thought = llm_think(observation)

        # 3. Décider
        action = llm_decide(thought, tools)

        # 4. Agir
        result = execute_action(action)

        # 5. Mettre à jour l'état
        state = update_state(state, result)
        state["step"] += 1

    return state["final_answer"]

Cas d’Usage Réels

Assistant Service Client

customer_agent = Agent(
    llm="gpt-4",
    tools=[
        check_order_status,
        initiate_refund,
        search_knowledge_base,
        escalate_to_human
    ],
    system_prompt="""Tu es un agent de service client.
    1. Identifie le numéro de commande
    2. Vérifie son statut
    3. Résous le problème ou escalade si nécessaire
    """
)

# Exemple
customer_agent.run("Ma commande #12345 n'est pas arrivée")
# → Vérifie le statut → Voit qu'elle est perdue → Initie un remboursement

Résultats réels :

  • 70% des tickets résolus sans humain
  • Temps de réponse : < 30 secondes
  • Satisfaction client : 4.2/5

Analyste de Données

data_agent = Agent(
    llm="gpt-4",
    tools=[
        execute_sql,
        generate_chart,
        calculate_statistics,
        write_report
    ]
)

data_agent.run("""Analyse les ventes du Q4 2024 :
- Quel produit s'est le mieux vendu ?
- Quelles régions ont surperformé ?
- Crée un graphique et un résumé exécutif""")

# L'agent :
# 1. Écrit et exécute une requête SQL
# 2. Calcule les KPIs
# 3. Génère un graphique
# 4. Rédige un rapport

Gain de temps : 2h d’analyse manuelle → 3 minutes automatisées

Assistant de Code

code_agent = Agent(
    llm="claude-3-opus",
    tools=[
        read_file,
        write_file,
        run_tests,
        search_documentation,
        run_linter
    ]
)

code_agent.run("""Ajoute une validation email
dans le formulaire d'inscription""")

# L'agent :
# 1. Lit le fichier du formulaire
# 2. Recherche les best practices de validation email
# 3. Modifie le code
# 4. Lance les tests
# 5. Corrige les erreurs de linting

Limites et Défis

Coûts

Les agents font beaucoup d’appels LLM :

  • Simple question : 1-2 appels
  • Tâche complexe : 10-50 appels
  • Coût moyen : 0,10€ - 2€ par tâche (GPT-4)
⚠️ Warning
Attention aux coûts : Un agent en boucle infinie peut générer des centaines d’appels LLM. Toujours fixer une limite d’itérations (max 10-20) et un budget maximum pour éviter les mauvaises surprises.

Solutions :

  • Utiliser GPT-3.5 pour les décisions simples
  • Caching des réponses fréquentes
  • Limiter le nombre d’itérations

Fiabilité

Les agents peuvent :

  • Boucler infiniment
  • Halluciner des résultats d’outils
  • Faire de mauvaises décisions

Solutions :

  • Timeout strict (10-20 itérations max)
  • Validation des sorties d’outils
  • Human-in-the-loop pour actions critiques

Latence

Une tâche peut prendre 30-120 secondes :

  • Chaque appel LLM : 2-5 secondes
  • Exécution d’outils : 1-10 secondes

Solutions :

  • Streaming des réponses
  • Agents asynchrones
  • Cache Redis

Frameworks Populaires

FrameworkPoints FortsCas d’Usage
LangChainÉcosystème complet, 500+ intégrationsAgents génériques, RAG
CrewAIMulti-agents, collaborationWorkflows complexes
AutoGPTAutonomie maximale, boucle infinieRecherche, exploration
Semantic KernelIntégration Microsoft, C#/.NETEntreprise, Azure
OpenAI AssistantsHébergé, mémoire incluseChatbots simples

Choix recommandé pour débuter : LangChain (Python) ou Semantic Kernel (C#)

Exercices Pratiques

Agent Météo

Créez un agent qui :

  1. Prend une ville en entrée
  2. Appelle une API météo
  3. Traduit la réponse en français
  4. Donne des recommandations vestimentaires

Outils nécessaires :

  • get_weather(city: str) -> dict
  • translate(text: str, target_lang: str) -> str

Agent Multi-Tâches

Étendez l’agent de base pour gérer :

"Donne-moi l'heure à Tokyo, le taux EUR/USD actuel,
et dis-moi si c'est un bon moment pour acheter"

Outils à implémenter :

  • get_time_in_timezone(timezone: str)
  • get_exchange_rate(from_curr: str, to_curr: str)
  • get_financial_news(keyword: str)

Agent avec Mémoire

Ajoutez une mémoire pour que l’agent se souvienne :

User: Mon nom est Alice
Agent: Enchanté Alice !

[30 minutes plus tard]

User: Comment je m'appelle ?
Agent: Tu t'appelles Alice.

Ressources

Papers Fondateurs

Tutoriels

Outils Open-Source

  • LangChain : Framework complet
  • LlamaIndex : Spécialisé RAG + agents
  • AutoGPT : Agent autonome expérimental
  • BabyAGI : Task management agent

Prochaines Étapes

Dans les articles suivants, nous couvrirons :

  1. Architecture détaillée - Les 4 piliers des agents (Perception, Raisonnement, Action, Mémoire)
  2. ReAct en profondeur - Patterns de raisonnement avancés
  3. LangChain pratique - Créer des agents production-ready
  4. Function calling - Intégrer n’importe quel outil
  5. Mémoire long-terme - RAG, bases vectorielles, contexte illimité
  6. Multi-agents - Orchestration de systèmes complexes

À retenir :

  • Un agent = LLM + outils + boucle de raisonnement
  • Les agents transforment les LLM en systèmes capables d’agir
  • La technologie est mature pour la production (avec les bonnes contraintes)
  • Les frameworks comme LangChain accélèrent drastiquement le développement

Les agents IA ne sont plus de la science-fiction : ils sont déployés en production chez Shopify, Stripe, Notion, et des centaines d’entreprises B2B.


Retour à la série Agents IA | Module suivant : Architecture des Agents →