All guides
IntermediateSelf-pacedFree GuideSection 72/95

Agents IA — Concepts et architecture

Practise development foundations: programming, web, APIs, data and AI tools. Work through sections and exercises to build your first projects.

The full lessons for this course are currently available in French. Use the section menu to navigate the French course.

💡

Free content, available without an account. Tools and models change: use the current model guide to check their versions. Models and 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
Quick Check

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

Quick Check

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

Learn AI, from prompts to agents

15 free guidesQuizzes, diagrams and workshopsNo account needed

Your progress

Progress is self-reported and stored in your browser. The final completion record is not a qualification or an independent assessment.

View progress and completion record

Learn AI, from prompts to agents

15 free guidesQuizzes, diagrams and workshopsNo account needed

One practical AI workflow in your inbox

Methods, resources and new exercises. Free, unsubscribe at any time.