Replay et debugging pour agents IA

Rejouer les exécutions d’agents pour comprendre les erreurs et décisions.
Sur cette page
  1. Idée en 30 secondes
  2. Le problème
  3. Quand l'utiliser
  4. Implémentation
  5. Comment cela fonctionne dans une analyse
  6. 1. Conserver la trace avec le contexte complet
  7. 2. Rejouer la trace dans les mêmes conditions
  8. 3. Analyser la timeline pas à pas
  9. 4. Capturer la root cause de façon structurée
  10. 5. Ajouter l'incident au set de regression
  11. Erreurs typiques
  12. Trace d'incident incomplète
  13. Replay dans des conditions runtime différentes
  14. Debugging uniquement sur le texte final
  15. Root cause non documentée de façon structurée
  16. Cas non ajouté à regression
  17. En bref
  18. FAQ
  19. Et ensuite

Idée en 30 secondes

Le replay pour agents IA consiste à reprendre une trace réelle problématique, la rejouer dans des conditions contrôlées, puis trouver la cause de l'échec étape par étape.

La valeur principale est que l'équipe ne devine pas la cause de l'incident. Elle voit la chaîne complète des décisions de l'agent et le point exact où le comportement s'est cassé.

Le problème

Sans replay, les équipes déboguent souvent "de mémoire" :

  • elles regardent seulement la réponse finale de l'agent ;
  • elles n'ont pas le contexte complet de la requête ;
  • elles ne voient pas les résultats des appels d'outils étape par étape.

Dans ce mode, il est difficile de distinguer symptôme et cause. Les fixes deviennent imprécis, et les incidents reviennent.

Conséquences typiques :

  • l'erreur est corrigée localement, mais le scénario réel de production n'est pas reproduit ;
  • la même classe d'échec réapparaît après la release ;
  • l'équipe perd du temps sur des analyses manuelles répétées.

Quand l'utiliser

Le replay est utilisé quand :

  • un incident est survenu en production et il faut trouver la root cause ;
  • après changement de modèle ou de prompt, un diff inattendu apparaît dans le comportement ;
  • un test de regression montre une chute sur un cas critique ;
  • il faut vérifier qu'un fix ferme réellement le scénario d'incident.

Le replay est surtout utile dans les systèmes avec comportement agent multi-étapes et outils externes.

Implémentation

En pratique, le replay repose sur un principe : même trace, mêmes conditions de run, analyse pas à pas des décisions. Les exemples ci-dessous sont schématiques et non liés à un framework précis.

Comment cela fonctionne dans une analyse

Flux de replay et de debugging
🧭 Analyse d'incident
🗂️
Capture de traceinput, contexte, réponses d'outils, stop reason
▶️
Exécution replaymêmes conditions que l'incident
🪵
Timeline des étapeschemin de décision et appels d'outils
🔎
Cause racineproblème de prompt, modèle, outil ou runtime
🛠️
Fix + vérificationajouter un test et relancer les checks
Résolupas de régression sur le chemin critique
🔁
Non résolucorriger et rejouer
Qualité du replay
⚙️ même trace et même runtime sont obligatoires
🎯 objectif : expliquer l'échec, pas réussir par hasard
Cycle court d'une analyse replay
  • Trace - conserver input, contexte, étapes et réponses d'outils.
  • Replay - rejouer le même scénario en environnement contrôlé.
  • Timeline des étapes - voir où l'agent a pris une mauvaise décision.
  • Root cause - fixer la cause technique : prompt, modèle, outil ou runtime.
  • Fix et vérification - appliquer le fix et confirmer par rerun.

1. Conserver la trace avec le contexte complet

PYTHON
trace = {
    "trace_id": "incident-2026-03-11-42",
    "input": "Refund order #8472",
    "conversation_state": {"user_tier": "pro"},
    "steps": [
        {"tool": "payments_api", "args": {"order_id": "8472"}, "result": {"status": "timeout"}},
        {"tool": "fallback_policy", "args": {}, "result": {"action": "ask_for_retry"}}
    ],
    "final_output": "Please try again later.",
    "stop_reason": "fallback_used",
}

Sans trace complète, le replay reproduit rarement la vraie cause d'incident.

2. Rejouer la trace dans les mêmes conditions

PYTHON
def replay_trace(agent, trace, runtime_config):
    return agent.replay(
        trace=trace,
        model_version=runtime_config["model_version"],
        tool_mocks=runtime_config["tool_mocks"],
        timeout_sec=runtime_config["timeout_sec"],
    )

Si modèle, timeouts ou conditions d'outils diffèrent, le replay peut paraître faussement sûr.

3. Analyser la timeline pas à pas

PYTHON
def find_first_bad_step(replayed_steps):
    return next(
        ((idx, step) for idx, step in enumerate(replayed_steps) if step["status"] == "unexpected"),
        None,
    )

L'objectif principal du debugging est de trouver la première étape où le système sort du scénario attendu.

4. Capturer la root cause de façon structurée

PYTHON
incident_report = {
    "trace_id": "incident-2026-03-11-42",
    "root_cause": "tool_timeout_not_handled_as_retryable",
    "affected_component": "retry_policy",
    "fix_plan": "treat payments timeout as retryable before fallback",
}

Une root cause structurée facilite la vérification du fix et le transfert de connaissance dans l'équipe.

5. Ajouter l'incident au set de regression

PYTHON
def promote_to_regression_case(trace, report):
    return {
        "id": trace["trace_id"],
        "input": trace["input"],
        "expected_behavior": {"stop_reason": "resolved"},
        "tags": ["incident", "replay", report["affected_component"]],
    }

Après l'analyse replay, le cas doit être ajouté à regression ou golden dataset, sinon l'incident peut revenir.

Erreurs typiques

Trace d'incident incomplète

Les logs ont la réponse finale, mais pas les étapes de l'agent ni les résultats d'outils.

Cause typique : seule la summary est stockée, sans détails step-level.

Replay dans des conditions runtime différentes

La trace est rejouée avec un autre modèle ou d'autres paramètres timeout/retry.

Cause typique : conditions runtime de l'incident non figées.

Debugging uniquement sur le texte final

L'équipe analyse seulement la dernière réponse et manque la cause de l'échec au milieu du run.

Cause typique : absence de timeline détaillée des décisions de l'agent.

Root cause non documentée de façon structurée

Après l'incident, il y a une conclusion orale mais pas de trace technique claire.

Cause typique : absence de template d'incident report.

Cas non ajouté à regression

L'incident est corrigé, mais non ajouté au set de tests permanent.

Cause typique : analyse replay déconnectée du workflow de regression.

En bref

En bref
  • Replay et debugging donnent une analyse reproductible des incidents de production.
  • Un replay de qualité exige la même trace et les mêmes conditions runtime.
  • Le debugging doit suivre les étapes de l'agent, pas seulement le texte final.
  • Après fix, le cas incident doit être promu vers regression ou golden dataset.

FAQ

Q : Quelle différence entre replay et regression testing ?
R : Regression compare les versions du système sur des sets de cas, alors que replay reproduit un incident réel précis pour trouver la root cause.

Q : Quel minimum faut-il pour un replay de qualité ?
R : input, état de contexte, appels d'outils pas à pas, leurs résultats, stop_reason et config runtime.

Q : Peut-on faire du replay sans accès à l'API production ?
R : Oui. En général, on utilise des réponses sauvegardées ou des mocks pour reproduire la logique d'incident de façon stable.

Q : Quand un cas replay est-il considéré comme fermé ?
R : Quand le fix passe en replay répété et que le même scénario passe de façon stable dans le set de regression.

Et ensuite

Après les analyses replay, ajoutez les cas d'incident dans Golden Datasets et validez-les via Regression Testing. Utilisez Eval Harness pour des runs standardisés, et Unit Testing pour la logique locale.

⏱️ 5 min de lectureMis à jour 13 mars 2026Difficulté: ★★☆
Intégré : contrôle en productionOnceOnly
Ajoutez des garde-fous aux agents tool-calling
Livrez ce pattern avec de la gouvernance :
  • Budgets (steps / plafonds de coût)
  • Permissions outils (allowlist / blocklist)
  • Kill switch & arrêt incident
  • Idempotence & déduplication
  • Audit logs & traçabilité
Mention intégrée : OnceOnly est une couche de contrôle pour des systèmes d’agents en prod.
Auteur

Cette documentation est organisée et maintenue par des ingénieurs qui déploient des agents IA en production.

Le contenu est assisté par l’IA, avec une responsabilité éditoriale humaine quant à l’exactitude, la clarté et la pertinence en production.

Les patterns et recommandations s’appuient sur des post-mortems, des modes de défaillance et des incidents opérationnels dans des systèmes déployés, notamment lors du développement et de l’exploitation d’une infrastructure de gouvernance pour les agents chez OnceOnly.