Introduction aux Agents IA

Qu’est-ce qu’un Agent IA ?
Un agent IA est un système autonome qui utilise un modèle de langage pour :
- Percevoir son environnement (APIs, bases de données, fichiers)
- Raisonner sur la meilleure action à entreprendre
- Agir en utilisant des outils
- Apprendre de ses succès et échecs
Différence avec un LLM Simple
| Aspect | LLM Simple | Agent IA |
|---|---|---|
| Action | Génère du texte | Exécute des actions |
| Outils | Aucun | Accès à des APIs, bases de données |
| Raisonnement | Une seule réponse | Boucle de réflexion itérative |
| Mémoire | Contexte limité | Mémoire persistante |
| Autonomie | Répond à une question | Décompose et résout des problèmes |
Exemple concret :
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)
# 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
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)
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
| Framework | Points Forts | Cas d’Usage |
|---|---|---|
| LangChain | Écosystème complet, 500+ intégrations | Agents génériques, RAG |
| CrewAI | Multi-agents, collaboration | Workflows complexes |
| AutoGPT | Autonomie maximale, boucle infinie | Recherche, exploration |
| Semantic Kernel | Intégration Microsoft, C#/.NET | Entreprise, Azure |
| OpenAI Assistants | Hébergé, mémoire incluse | Chatbots simples |
Choix recommandé pour débuter : LangChain (Python) ou Semantic Kernel (C#)
Exercices Pratiques
Agent Météo
Créez un agent qui :
- Prend une ville en entrée
- Appelle une API météo
- Traduit la réponse en français
- Donne des recommandations vestimentaires
Outils nécessaires :
get_weather(city: str) -> dicttranslate(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
- ReAct (2022) : Reasoning + Acting
- Toolformer (2023) : LLMs + Tools
- Generative Agents (2023) : Simulation de sociétés
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 :
- Architecture détaillée - Les 4 piliers des agents (Perception, Raisonnement, Action, Mémoire)
- ReAct en profondeur - Patterns de raisonnement avancés
- LangChain pratique - Créer des agents production-ready
- Function calling - Intégrer n’importe quel outil
- Mémoire long-terme - RAG, bases vectorielles, contexte illimité
- 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.
Navigation
← Retour à la série Agents IA | Module suivant : Architecture des Agents →