Aller au contenu principal

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

  1. Client : “Je n’arrive pas à me connecter à mon compte”
  2. Level 1 → Vérifie dans la FAQ → Problème non standard → handoff
  3. Level 2 → Diagnostic technique → Problème de base de données → handoff
  4. 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