Tous les guides
IntermédiaireÀ votre rythmeGuide gratuitSection 72/95

Agents IA — Concepts et architecture

Pratiquez les fondations du développement : programmation, web, API, données et usages de l’IA. Des sections et exercices pour construire vos premiers projets.

💡

Contenu gratuit, accessible sans compte. Les outils et modèles évoluent : consultez le dossier actuel pour vérifier leurs versions. Modèles et sources

Section 11.4.13 : Agents IA — Concepts et architecture

🎯 Objectif pédagogique

Comprendre ce qu'est un agent IA, en quoi il diffère d'un chatbot, et les patterns d'architecture fondamentaux. Vous serez capable de concevoir un agent IA avec boucle de raisonnement et capacité d'action.


Du chatbot à l'agent — Le saut quantique

Le chatbot de Marc répond aux questions. Un agent IA agit : il raisonne, planifie, utilise des outils (APIs, bases de données, code), et itère jusqu'à atteindre son objectif. C'est la différence entre un interlocuteur et un collaborateur.

Chatbot vs Agent — Comparaison

AspectChatbotAgent IA
InteractionRéponse à une questionExécution d'une tâche
AutonomieAucune — suit le fluxPlanifie et décide
OutilsAucun (texte seulement)APIs, BDD, fichiers, code
Itérations1 appel LLMN appels (boucle)
Exemple"Qu'est-ce que Python ?""Analyse 50 offres et classe-les par pertinence"

Le pattern ReAct : Reason + Act

Pattern ReAct (Reason and Act) :

1. THOUGHT (réflexion) : "Je dois trouver les offres Data Analyst à Paris"
2. ACTION : search_jobs(query="Data Analyst", location="Paris")
3. OBSERVATION : [liste de 23 offres]
4. THOUGHT : "J'ai 23 offres, je dois les analyser par rapport au profil de Marc"
5. ACTION : analyze_offer(offer=offres[0], profile=marc)
6. OBSERVATION : \{match_score: 4, skills_gap: ["Tableau"]\}
7. THOUGHT : "Bonne offre mais il manque Tableau. Je continue avec les autres."
8. ACTION : analyze_offer(offer=offres[1], profile=marc)
...
N. THOUGHT : "J'ai analysé les 23 offres. Les 5 meilleures sont..."
N+1. FINAL ANSWER : [top 5 offres avec analyses]

Implémentation basique d'un agent

import json
from openai import OpenAI

client = OpenAI()

# Définir les outils disponibles
TOOLS = \{
    "search_jobs": \{
        "description": "Recherche des offres d'emploi",
        "params": ["query", "location", "max_results"]
    \},
    "analyze_offer": \{
        "description": "Analyse une offre par rapport à un profil",
        "params": ["offer_text", "profile"]
    \},
    "get_market_data": \{
        "description": "Obtient des données sur le marché de l'emploi",
        "params": ["role", "location"]
    \}
\}

def run_agent(objective, max_iterations=5):
    """Agent simple avec boucle ReAct."""
    
    tools_desc = "\n".join([f"- \{name\}: \{info['description']\} (params: \{info['params']\})" 
                            for name, info in TOOLS.items()])
    
    system = f"""Tu es un agent de recherche d'emploi.

## Outils disponibles :
\{tools_desc\}

## Format de réponse :
À chaque étape, réponds en JSON :
\{\{
    "thought": "ta réflexion",
    "action": "nom_de_loutil" ou "FINAL_ANSWER",
    "action_input": \{\{...params...\}\} ou "réponse finale"
\}\}

## Règles :
- Réfléchis AVANT d'agir
- Utilise un outil par étape
- Quand tu as assez d'infos, utilise FINAL_ANSWER"""

    messages = [
        \{"role": "system", "content": system\},
        \{"role": "user", "content": f"Objectif : \{objective\}"\}
    ]
    
    for i in range(max_iterations):
        response = client.chat.completions.create(
            model="gpt-4o",
            messages=messages,
            response_format=\{"type": "json_object"\},
            temperature=0.2
        )
        
        result = json.loads(response.choices[0].message.content)
        
        print(f"\n--- Étape \{i+1\} ---")
        print(f"Thought: \{result['thought']\}")
        
        if result["action"] == "FINAL_ANSWER":
            print(f"\n🎯 Résultat final : \{result['action_input']\}")
            return result["action_input"]
        
        print(f"Action: \{result['action']\}(\{result['action_input']\})")
        
        # Exécuter l'outil (mock pour l'exemple)
        observation = execute_tool(result["action"], result["action_input"])
        print(f"Observation: \{observation[:200]\}...")
        
        # Ajouter au contexte
        messages.append(\{"role": "assistant", "content": json.dumps(result)\})
        messages.append(\{"role": "user", "content": f"Observation: \{observation\}"\})
    
    return "Limite d'itérations atteinte."

def execute_tool(tool_name, params):
    """Exécuter un outil (mock)."""
    if tool_name == "search_jobs":
        return json.dumps([
            \{"title": "Data Analyst", "company": "TechCorp", "salary": "45-55k€"\},
            \{"title": "Junior Data Analyst", "company": "FinStart", "salary": "40-48k€"\}
        ])
    elif tool_name == "analyze_offer":
        return json.dumps(\{"match_score": 4, "skills_match": ["Python", "SQL"], "gaps": ["Tableau"]\})
    elif tool_name == "get_market_data":
        return json.dumps(\{"avg_salary": "48k€", "demand": "forte", "growth": "+15%/an"\})
    return "Outil non trouvé"

# Utilisation
run_agent("Trouve les 3 meilleures offres Data Analyst à Paris pour un profil finance + Python")
Loading diagram…

Frameworks d'agents populaires

Frameworks à connaître :

1. LangChain — Le plus populaire, très complet
   + Écosystème riche, many integrations
   - Lourd, abstraction complexe

2. LlamaIndex — Spécialisé RAG et data agents
   + Excellent pour les documents
   - Moins générique que LangChain

3. CrewAI — Multi-agents collaboratifs
   + Simple, agents spécialisés travaillent ensemble
   - Nouveau, moins mature

4. AutoGen (Microsoft) — Agents conversationnels
   + Agents qui discutent entre eux
   - Complexe à configurer

5. Custom (ce qu'on fait ici) — Code from scratch
   + Contrôle total, pas de dépendance
   - Plus de code à écrire

→ Recommandation débutant : commencez custom pour comprendre, 
  puis migrez vers LangChain/CrewAI pour la production.

Agent ≠ AGI

Un agent IA n'est pas une intelligence artificielle autonome. C'est un programme qui utilise un LLM pour décider quels outils appeler et dans quel ordre. Il est aussi limité que les outils qu'on lui donne et les instructions qu'on lui écrit. Pas de science-fiction — juste de l'ingénierie logicielle.

🏋️ Exercice pratique (25 minutes)

  1. →Implémentez l'agent ReAct simplifié ci-dessus
  2. →Testez avec l'objectif : "Trouve les meilleures offres Data Analyst à Paris"
  3. →Observez la trace (thought → action → observation)
  4. →Modifiez le nombre max d'itérations et observez l'effet
Vérification rapide

Quelle est la différence fondamentale entre un chatbot et un agent IA ?

Vérification rapide

Pourquoi le pattern ReAct (Reason + Act) est-il efficace pour les agents ?

Apprendre l’IA, du premier prompt aux agents

15 guides gratuitsQuiz, schémas et ateliersSans compte

Votre progression

Cette progression est déclarative et conservée dans votre navigateur. L’attestation finale ne constitue pas un diplôme ni une évaluation indépendante.

Voir ma progression et mon attestation

Apprendre l’IA, du premier prompt aux agents

15 guides gratuitsQuiz, schémas et ateliersSans compte

Un cas pratique IA dans votre boîte mail

Méthodes, ressources et nouveaux exercices. Gratuit, avec désinscription à tout moment.