Cas d'usage multi-agents
Du concept à la réalité
Vous maîtrisez maintenant les handoffs, les modes d’exécution et le chaînage. Dans cette leçon, vous allez explorer trois cas d’usage concrets qui montrent la puissance du multi-agents en production.
Cas 1 : Support client multi-niveaux
Un système de support où la complexité de la requête détermine l’escalade :
from mistralai import Mistral
import os
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
# Niveau 1 : FAQ et questions simples
level1 = client.beta.agents.create(
model="mistral-medium-latest",
name="support-level1",
description="Support niveau 1 : FAQ, questions courantes, informations de base.",
instructions="""Vous êtes le premier niveau de support.
- Répondez aux questions simples (horaires, tarifs, FAQ)
- Si la question est technique ou complexe, transférez au niveau 2
- Soyez poli et professionnel""",
tools=[{"type": "document_library", "library_ids": ["faq-library-id"]}]
)
# Niveau 2 : Support technique
level2 = client.beta.agents.create(
model="mistral-large-latest",
name="support-level2",
description="Support technique : diagnostic, dépannage, configuration.",
instructions="""Vous êtes le support technique.
- Diagnostiquez les problèmes techniques
- Proposez des solutions étape par étape
- Si le problème nécessite une intervention manuelle, transférez au niveau 3""",
tools=[{"type": "web_search"}, {"type": "code_interpreter"}]
)
# Niveau 3 : Escalade humaine (simulation)
level3 = client.beta.agents.create(
model="mistral-large-latest",
name="support-level3",
description="Escalade : problèmes critiques nécessitant une intervention humaine.",
instructions="""Préparez un résumé du problème pour l'équipe technique :
- Contexte du problème
- Étapes de diagnostic effectuées
- Solutions tentées
- Recommandation"""
)
# Chaîner les escalades
level1 = client.beta.agents.update(agent_id=level1.id, handoffs=[level2.id])
level2 = client.beta.agents.update(agent_id=level2.id, handoffs=[level3.id])
Flux type
- Client : “Je n’arrive pas à me connecter à mon compte”
- Level 1 → Vérifie dans la FAQ → Problème non standard → handoff
- Level 2 → Diagnostic technique → Problème de base de données → handoff
- Level 3 → Prépare le ticket d’escalade avec tout le contexte
Cas 2 : Pipeline de veille stratégique
Un système qui collecte, analyse et synthétise de l’information :
# Collecteur — recherche les informations brutes
collector = client.beta.agents.create(
model="mistral-large-latest",
name="intelligence-collector",
description="Collecte d'informations stratégiques via recherche web.",
instructions="""Recherchez des informations sur le sujet demandé.
- Couvrez plusieurs sources
- Incluez les données chiffrées
- Notez les dates de publication""",
tools=[{"type": "web_search"}]
)
# Analyste — extrait les insights
analyst = client.beta.agents.create(
model="mistral-large-latest",
name="intelligence-analyst",
description="Analyse et extraction d'insights à partir de données brutes.",
instructions="""Analysez les données collectées :
- Identifiez les tendances
- Repérez les opportunités et les menaces
- Quantifiez quand possible""",
tools=[{"type": "code_interpreter"}]
)
# Rédacteur — produit le rapport
reporter = client.beta.agents.create(
model="mistral-large-latest",
name="intelligence-reporter",
description="Rédaction de rapports de veille structurés.",
instructions="""Rédigez un rapport de veille professionnel :
## Résumé exécutif (3 phrases)
## Faits clés (bullet points)
## Analyse (2-3 paragraphes)
## Recommandations (actions concrètes)
## Sources"""
)
# Pipeline
collector = client.beta.agents.update(agent_id=collector.id, handoffs=[analyst.id])
analyst = client.beta.agents.update(agent_id=analyst.id, handoffs=[reporter.id])
# Lancer
response = client.beta.conversations.start(
agent_id=collector.id,
inputs="Veille stratégique : marché de l'IA souveraine en Europe, T1 2026."
)
Cas 3 : Assistant de recherche multi-compétences
Un assistant polyvalent avec un routeur intelligent :
# Spécialistes
web_researcher = client.beta.agents.create(
model="mistral-large-latest",
name="web-researcher",
description="Recherche d'informations actuelles sur Internet.",
tools=[{"type": "web_search"}]
)
data_analyst = client.beta.agents.create(
model="mistral-large-latest",
name="data-analyst",
description="Analyse de données, statistiques et visualisations.",
tools=[{"type": "code_interpreter"}]
)
doc_expert = client.beta.agents.create(
model="mistral-large-latest",
name="doc-expert",
description="Interrogation et synthèse de documents internes.",
tools=[{"type": "document_library", "library_ids": ["docs-lib-id"]}]
)
creative = client.beta.agents.create(
model="mistral-large-latest",
name="creative-agent",
description="Création de contenu visuel et illustrations.",
tools=[{"type": "image_generation"}]
)
# Routeur central
assistant = client.beta.agents.create(
model="mistral-large-latest",
name="research-assistant",
description="Assistant de recherche polyvalent.",
instructions="""Vous êtes un assistant de recherche. Analysez chaque requête et transférez au spécialiste approprié :
- Informations actuelles → web-researcher
- Calculs et données → data-analyst
- Questions sur nos documents → doc-expert
- Besoin d'illustrations → creative-agent""",
handoffs=[web_researcher.id, data_analyst.id, doc_expert.id, creative.id]
)
Bonnes pratiques multi-agents
Conception
- Un agent = une responsabilité — Ne surchargez pas un agent avec trop de rôles
- Descriptions précises — Le routeur se base dessus pour ses décisions
- Instructions spécifiques — Chaque agent sait exactement quoi faire et quoi ne pas faire
Production
- Logging — Utilisez le mode client pour tracer chaque handoff
- Timeouts — Prévoyez des mécanismes de timeout pour les chaînes longues
- Fallbacks — Que se passe-t-il si un agent échoue ? Prévoyez un plan B
- Coûts — Monitorez le nombre de tokens consommés par chaîne
Points clés à retenir
- Le support client multi-niveaux est un cas d’usage naturel pour les handoffs
- Les pipelines de veille (collecte → analyse → rédaction) exploitent le chaînage linéaire
- Les assistants polyvalents utilisent un routeur central vers des spécialistes
- En production : logging, timeouts, fallbacks et monitoring des coûts sont essentiels
- Un agent = une responsabilité, avec une description précise pour le routage