Gere um rascunho de postmortem de incidente com IA

Um agente combina um incidente da página de status com o registro de um pagamento afetado e preenche um modelo de postmortem sem culpados.

  • Arquivos
  • Conexão somente leitura
  • Web
  • Limite de orçamento

Veja uma execução real

Uma execução real em 7 de out. de 2026, reproduzida. Modelo: openai/gpt-6-luna.

Entrada
{
  "payment_id": "pay_124",
  "status_url": "https://ephemer.al/api/samples/status"
}
Concluídarun_19f2f90e2a609356f9dfd2cee0bc326a$0.004235 de $0.05
  1. Na filaorçamento de $0.05 reservado
  2. MicroVMmicroVM ready
  3. MicroVMworker started · shell off · web on
  4. Conexãopayments GET /payments/pay_124
  5. Conexãopayments GET /payments/pay_124/attempts
  6. Webweb_fetch https://ephemer.al/api/samples/status
  7. Arquivoread postmortem-template.md
  8. Resultadopayments GET → 200
  9. Resultadopayments GET → 200
  10. Resultadoweb https://ephemer.al/api/samples/status → 200
  11. MicroVMmicroVM destroyed
  12. Concluída2 chamadas ao modelo, 4,039 tokensSaída gravada (em inglês)

    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 destruído$0.004235 cobrados, $0.045765 liberados
Modelo $0.000435 · Web $0.001 · Computação $0.0028

Execute você mesmo

Abra o exemplo no playground com a requisição inteira preenchida. Ele roda na sua própria conta, dentro do orçamento indicado, contra os mesmos sistemas de exemplo somente leitura.

Orçamento deste exemplo: $0.05

Como funciona

Duas fontes somente leitura, um modelo. O agente lê a linha do tempo do incidente na página de status e o pagamento que falhou na API de pagamentos, e escreve apenas o que essas fontes dizem. Os itens de ação citam funções, não pessoas.

O que o agente pode e não pode fazer

As permissões fazem parte da requisição. Tudo o que não está listado aqui não está disponível para a execução.

ConfiguraçãoPermitido
Conexões
payments: somente GET, em ephemer.al/api/samples/payments-api
WebSomente ephemer.al
ShellDesativado
Arquivospostmortem-template.md (somente leitura)
Retenção zero de dadosDesativada: o registro é mantido por 30 dias
Orçamento$0.05, um limite rígido
Tempo limite120 segundos

As credenciais nunca entram na máquina: um broker as adiciona a cada chamada e aplica os métodos acima.

O código

Esta é a requisição exata que o exemplo envia. Defina EPHEMERAL_API_KEY com uma chave de membro da sua organização.

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

Arquivos na requisição

Enviados inline, então nada é carregado antes. O agente vê cada um como um arquivo somente leitura.

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)
Corpo completo da requisição request.json

O mesmo corpo, com os arquivos inline.

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
}

Saiba mais

Exemplos relacionados

esc

Nada corresponde a “”.