Générer un brouillon de postmortem d'incident avec l'IA

Un agent combine un incident de la page de statut avec un paiement concerné et remplit un modèle de postmortem sans recherche de coupable.

  • Fichiers
  • Connexion en lecture seule
  • Web
  • Plafond de budget

Regardez une vraie exécution

Une vraie exécution du 7 oct. 2026, rejouée. Modèle : openai/gpt-6-luna.

Entrée
{
  "payment_id": "pay_124",
  "status_url": "https://ephemer.al/api/samples/status"
}
Réussierun_19f2f90e2a609356f9dfd2cee0bc326a$0.004235 sur $0.05
  1. En file d'attentebudget de $0.05 réservé
  2. MicroVMmicroVM ready
  3. MicroVMworker started · shell off · web on
  4. Connexionpayments GET /payments/pay_124
  5. Connexionpayments GET /payments/pay_124/attempts
  6. Webweb_fetch https://ephemer.al/api/samples/status
  7. Fichierread postmortem-template.md
  8. Résultatpayments GET → 200
  9. Résultatpayments GET → 200
  10. Résultatweb https://ephemer.al/api/samples/status → 200
  11. MicroVMmicroVM destroyed
  12. Réussie2 appels au modèle, 4,039 jetonsSortie enregistrée (en anglais)

    Postmortem: Elevated card payment errors in Europe

    Blameless. Describe what happened and what the system allowed, not who did it.

    Summary (2 sentences)

    On 2026-10-05, some EU card payments failed with processor timeouts during an incident. Payment pay_124 failed with a processor timeout and was not retried in the recorded attempt.

    Impact (who, how many, how long, money if known)

    One failed payment is documented: €129.00. Total customers and payments affected are not known. The incident timeline says affected failures occurred between 13:25 and 14:15 UTC.

    Timeline (UTC, one line each, only facts from the sources)

    • 2026-10-05 13:31 UTC — Incident investigating: some EU card payments failed with a processor timeout.
    • 2026-10-05 13:42:51 UTC — pay_124 failed; its attempt recorded a processor timeout.
    • 2026-10-05 13:58 UTC — Incident identified as a network change at one acquiring partner.
    • 2026-10-05 14:20 UTC — Incident resolved; card payments in Europe were processing normally. Failed payments from 13:25–14:15 UTC could be retried.

    Cause

    The incident source attributes the errors to a network change at one acquiring partner.

    What went well

    The incident was identified and resolved, and the status update said affected payments could be retried.

    Action items (owner role, not a person)

    Not known from the sources.

  13. Worker détruit$0.004235 facturé, $0.045765 libéré
Modèle $0.000435 · Web $0.001 · Calcul $0.0028

Lancez-le vous-même

Ouvrez l'exemple dans le playground avec toute la requête déjà remplie. Il s'exécute sur votre propre compte, dans le budget indiqué, sur les mêmes systèmes d'exemple en lecture seule.

Budget pour cet exemple : $0.05

Fonctionnement

Deux sources en lecture seule, un modèle. L'agent lit la chronologie de l'incident sur la page de statut et le paiement échoué dans l'API de paiements, et n'écrit que ce que ces sources disent. Les actions de suivi désignent des rôles, pas des personnes.

Ce que l'agent peut et ne peut pas faire

Les permissions font partie de la requête. Tout ce qui n'est pas listé ici n'est pas disponible pour l'exécution.

ParamètreAutorisé
Connexions
payments : GET uniquement, sur ephemer.al/api/samples/payments-api
WebUniquement ephemer.al
ShellDésactivé
Fichierspostmortem-template.md (lecture seule)
Rétention zéro des donnéesDésactivée : l'historique est conservé 30 jours
Budget$0.05, un plafond strict
Délai120 secondes

Les identifiants n'entrent jamais dans la machine : un broker les ajoute à chaque appel et impose les méthodes ci-dessus.

Le code

Voici la requête exacte envoyée par l'exemple. Définissez EPHEMERAL_API_KEY avec une clé de membre de votre organisation.

curl -X POST $EPHEMERAL_URL/v1/runs \
  -H "Authorization: Bearer $EPHEMERAL_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d @request.json

Fichiers de la requête

Transmis en ligne, rien n'est donc importé au préalable. L'agent voit chacun comme un fichier en lecture seule.

postmortem-template.md
postmortem-template.md
# Postmortem: <title>

Blameless. Describe what happened and what the system allowed, not who did it.

## Summary (2 sentences)
## Impact (who, how many, how long, money if known)
## Timeline (UTC, one line each, only facts from the sources)
## Cause
## What went well
## Action items (owner role, not a person)
Corps complet de la requête request.json

Le même corps, avec les fichiers en ligne.

request.json
{
  "prompt": "Write a postmortem draft for the incident that affected the payment in input.payment_id. Read the payment and its attempts from the payments connection, and the incident timeline from input.status_url with web_fetch. Fill postmortem-template.md, at most 250 words in total. Put every timeline line in UTC and only from the sources. If the sources do not show something (such as the number of customers affected), write 'not known' instead of estimating. Use only what the data returns and never guess; if a call fails or a field is missing, say so.",
  "input": {
    "payment_id": "pay_124",
    "status_url": "https://ephemer.al/api/samples/status"
  },
  "files": [
    {
      "path": "postmortem-template.md",
      "content": "# Postmortem: <title>\n\nBlameless. Describe what happened and what the system allowed, not who did it.\n\n## Summary (2 sentences)\n## Impact (who, how many, how long, money if known)\n## Timeline (UTC, one line each, only facts from the sources)\n## Cause\n## What went well\n## Action items (owner role, not a person)\n"
    }
  ],
  "connections": {
    "payments": {
      "type": "http",
      "url": "https://ephemer.al/api/samples/payments-api",
      "auth": {
        "type": "bearer",
        "token": "sample_read_key"
      },
      "allowed_methods": [
        "GET"
      ],
      "instructions": "GET /payments/{id} returns a payment (status, amount in cents, currency, failure_code, failure_message, attempt_count). GET /payments/{id}/attempts returns its attempts."
    }
  },
  "web": {
    "allow": [
      "ephemer.al"
    ],
    "search": false
  },
  "shell": false,
  "timeout_seconds": 120,
  "max_cost_micros": 50000
}

En savoir plus

Exemples liés

esc

Aucun résultat pour « ».