Aller au contenu principal
Leçon 16 sur 16 · Production — Batch, Optimisation et Observabilité

Pipeline complet : traces, juges, datasets, évaluations

Leçon 16 sur 16 Mis à jour le 2 novembre 2026 Avancé
Sur cette page
  1. Le workflow d’observabilité de bout en bout
  2. Implémentation Python
  3. Récapitulatif du cours
  4. Prochaines étapes recommandées
  5. Points clés à retenir
  6. Testez vos connaissances

Leçon réécrite le 2 novembre 2026 d’après la documentation Observability de Mistral et le SDK mistralai 3.7.0 : le pipeline enchaîne désormais traces, juges, datasets et évaluations hors ligne ; les « Campaigns » et les méthodes chat_completion_events.search, campaigns.* et import_from_explorer de l’ancienne version n’existent plus. Sources : Explore traces · Offline evaluations.

Le workflow d’observabilité de bout en bout

Vous maîtrisez désormais chacun des composants de l’observabilité Mistral. Cette leçon finale assemble les pièces dans un pipeline complet que vous pouvez reproduire et adapter à votre contexte de production.

1

Tracer et explorer

Activez la télémétrie, puis filtrez les traces des 7 derniers jours dans l'Explorer : erreurs, lenteurs, réponses douteuses. Notez l'expression de recherche.

2

Juger

Formalisez le critère de qualité en cause dans un juge (classification ou régression), validé sur 10 à 20 cas connus.

3

Constituer un dataset

Transformez les spans problématiques en enregistrements, avec la sortie attendue corrigée à la main.

4

Évaluer

Mesurez la version actuelle puis chaque variante sur ce dataset, avec des objectifs PASS/FAIL.

5

Itérer

Déployez la variante gagnante, gardez le dataset comme garde-fou de non-régression, et recommencez.

Implémentation Python

Le script ci-dessous automatise les étapes 1, 3 et 4 ; le juge de l’étape 2 se crée une fois, comme en leçon 13. Deux clients cohabitent : celui du SDK mistralai pour les traces et les datasets, celui de mistralai-evaluations pour l’évaluation.

import asyncio
import os
from datetime import datetime, timedelta, timezone

from mistralai.client import Mistral
from mistralai.evaluations import Dataset, Evaluation, Evaluator, Goal, Project, System
from mistralai.evaluations import Mistral as MistralEvaluations

cle = os.environ["MISTRAL_API_KEY"]
api = Mistral(api_key=cle)
evaluations = MistralEvaluations(api_key=cle)

# 1. Repérer les traces en échec de la semaine
maintenant = datetime.now(timezone.utc)
reponse = api.beta.observability.traces.search(
    from_=maintenant - timedelta(days=7),
    to=maintenant,
    search_expression="service_name = 'agent-support' AND status_code = 'Error'",
)
for trace in reponse.traces.results or []:
    print(trace.trace_id, trace.root_span_name)

# 3. Ajouter au dataset les cas relus et corrigés à la main
cas_corriges = [
    {"ticket": "Le paiement est refusé alors que ma carte est valide.", "categorie": "facturation"},
    {"ticket": "Impossible d'ajouter un collègue à mon espace.", "categorie": "acces"},
]
dataset = api.beta.observability.datasets.create(
    name="Incidents support — semaine 44",
    description="Cas tirés des traces en échec, sortie attendue corrigée",
)
for cas in cas_corriges:
    api.beta.observability.datasets.create_record(dataset_id=dataset.id, payload=cas)


# 4. Évaluer la version candidate (tache et exactitude : voir la leçon 14)
async def main():
    run = await evaluations.evaluation.run(
        project=Project(name="Tri des tickets"),
        evaluation=Evaluation(name="Non-régression semaine 44"),
        system=System(name="medium-prompt-v2", params={
            "model": "mistral-medium-latest",
            "system_prompt": "Classe le ticket : acces, facturation ou bug. Réponds par le seul mot.",
        }),
        dataset=Dataset(id=dataset.id),
        task=tache,
        evaluators=[Evaluator(name="exactitude", scorer=exactitude, goal=Goal.gte(0.9))],
    )
    run.show(level="records")


asyncio.run(main())

Lancé chaque semaine, ce script fait grossir le jeu de non-régression avec les incidents réels, et chaque version candidate doit y passer ses objectifs avant d’être déployée.

Récapitulatif du cours

Ce cours vous a guidé à travers quatre domaines essentiels pour la production IA avec Mistral :

Batch Inference (Leçons 1-4)

Vous savez traiter des millions de requêtes à coût réduit, en utilisant le format JSONL, le file batching et l’inline batching.

Predicted Outputs (Leçons 5-7)

Vous savez réduire la latence de génération en fournissant une prédiction de la sortie, particulièrement pour l’édition de code et de texte.

Citations et Références (Leçons 8-10)

Vous savez ancrer les réponses de votre LLM dans des sources vérifiées, parser les citations, et construire des pipelines RAG fiables.

Observabilité (Leçons 11-16)

Vous savez tracer votre application avec OpenTelemetry, explorer les traces de production, automatiser l’évaluation de la qualité avec des juges, constituer des datasets et mesurer chaque version par des évaluations hors ligne.

Prochaines étapes recommandées

Le meilleur moyen d’ancrer ces acquis est de les appliquer dans l’ordre où votre production en bénéficiera. Commencez par déployer un pipeline batch sur un cas concret de votre organisation — une classification mensuelle, un enrichissement de catalogue — parce que c’est le gain le plus rapide à démontrer. Intégrez ensuite les Predicted Outputs là où vos outils éditent du code ou des documents existants : le gain de latence se mesure en jours. Ajoutez les citations à votre système RAG dès que des utilisateurs s’appuient sur ses réponses pour décider. L’observabilité, enfin, commence par l’envoi de traces, possible avec une simple clé d’API ; l’Explorer et les évaluations hors ligne demandent une organisation Enterprise. C’est elle qui transformera les trois premiers chantiers en boucle d’amélioration continue plutôt qu’en déploiements ponctuels.

Points clés à retenir

  • Le pipeline suit la boucle : tracer et explorer, juger, constituer un dataset, évaluer, itérer
  • Chaque incident de production peut devenir un cas de test, et chaque version candidate doit passer ses objectifs
  • Automatisez la boucle avec le SDK (traces.search, datasets.create_record, evaluation.run) et lancez-la à intervalle régulier
  • Les quatre domaines de ce cours (batch, predicted outputs, citations, observabilité) se complètent pour une IA de production robuste

Testez vos connaissances

Batch, latence, citations, observabilité : les quatre piliers de la production.

1. Quand la Batch Inference est-elle le bon choix ?

Réponse : Pour les gros volumes sans contrainte temps réel : jobs JSONL asynchrones (ou inline jusqu’à 10K requêtes) à coût réduit — classification, enrichissement, génération en masse.

2. Que sont les Predicted Outputs ?

Réponse : Une accélération quand la réponse est largement prévisible (édition d’un texte existant, gabarits) : on fournit la prédiction, le modèle ne « paie » que les écarts — latence en forte baisse.

3. Que permettent les citations avec Référence Object ?

Réponse : Relier chaque affirmation de la réponse à ses sources dans un RAG : réponses vérifiables, hallucinations réduites — la confiance devient une propriété du produit.

4. Que fait-on dans Explorer ?

Réponse : Rechercher et inspecter les traces de production — par un langage d’expressions sur service_name, status_code, duration_ns ou les attributs de spans — pour retrouver les requêtes problématiques, puis en faire des cas de test : la matière première de toute amélioration.

5. Comment s'articulent juges, datasets et évaluations ?

Réponse : Les juges évaluent automatiquement (LLM-as-judge), les datasets capitalisent les cas de test tirés de la production, et les évaluations hors ligne mesurent chaque version sur ces datasets, avec des objectifs PASS/FAIL — la boucle tracer → juger → constituer → évaluer.

Le pipeline final du cours enchaîne les quatre : produire économique, répondre vite, sourcer, observer — la production mature en un workflow.