AI でインシデントのポストモーテム下書きを生成する
エージェントがステータスページのインシデントと、影響を受けた決済レコードを組み合わせ、責任追及をしないポストモーテムのテンプレートを埋めます。
- ファイル
- 読み取り専用の接続
- Web
- 予算の上限
実際の実行を見る
2026年10月7日 の実際の実行を再生しています。モデル: openai/gpt-6-luna。
{
"payment_id": "pay_124",
"status_url": "https://ephemer.al/api/samples/status"
}- 待機中予算 $0.05 を確保
- MicroVMmicroVM ready
- MicroVMworker started · shell off · web on
- 接続payments GET /payments/pay_124
- 接続payments GET /payments/pay_124/attempts
- Web
web_fetch https://ephemer.al/api/samples/status - ファイル
read postmortem-template.md - 結果
payments GET → 200 - 結果
payments GET → 200 - 結果
web https://ephemer.al/api/samples/status → 200 - MicroVMmicroVM destroyed
- 成功モデル呼び出し 2 回、トークン 4,039記録された出力(英語)
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_124failed 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_124failed; 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.
- ワーカーを破棄$0.004235 を請求、$0.045765 を解放
自分で実行する
リクエスト全体が入力された状態で、サンプルをプレイグラウンドで開きます。実行はご自身のアカウントで、表示された予算の範囲内で、同じ読み取り専用のサンプルシステムに対して行われます。
このサンプルの予算: $0.05
仕組み
読み取り専用の情報源が 2 つ、テンプレートが 1 つです。エージェントはステータスページからインシデントのタイムラインを、決済 API から失敗した決済を読み、それらが示す内容だけを書きます。アクションアイテムには、個人名ではなく役割を記載します。
エージェントにできること、できないこと
権限はリクエストの一部です。ここに挙げていないものは、実行では利用できません。
| 設定 | 許可 |
|---|---|
| 接続 | payments: GET のみ、ephemer.al/api/samples/payments-api へ |
| Web | ephemer.al のみ |
| シェル | オフ |
| ファイル | postmortem-template.md(読み取り専用) |
| ゼロデータ保持 | オフ: 記録は 30 日間保存されます |
| 予算 | $0.05、厳格な上限 |
| タイムアウト | 120 秒 |
認証情報がマシンに入ることはありません。ブローカーが各呼び出しに認証情報を付与し、上記のメソッドだけを通します。
コード
サンプルが送信する正確なリクエストです。EPHEMERAL_API_KEY には、組織のメンバーキーを設定してください。
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リクエストに含まれるファイル
インラインで渡すため、事前にアップロードする必要はありません。エージェントには、それぞれが読み取り専用のファイルとして見えます。
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)
リクエスト本文の全体 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
}