AIワークフロー設計
fail-closedなAIワークフロー設計
AIワークフローで危険なのは、明確なエラーだけではありません。出典が取れない、検証結果が返らない、外部サービスの状態が分からないときに「たぶん大丈夫」と進むことです。
fail-closedは、異常や不明を検知したら安全側で止める設計です。止める条件と再開手順を先に決め、正常時だけ自動化の速度を出します。
01
「失敗したら止める」だけでは足りない
例外が出なくても、検索結果が0件、レビュー応答が空、価格の取得時点が古い状態は業務上の失敗です。正常データとして次工程へ渡すと、後段のAIが不足を推測で埋めます。
各工程は完了、再試行可能、人の確認待ち、情報不足、恒久失敗を区別します。必要条件を満たした完了状態だけを次へ渡します。
- 技術的な不明
- タイムアウト、接続切れ、応答形式の不一致。未実行とは限りません。
- 業務上の不明
- 根拠不足、対象外、承認者不在、ルール競合。人の判断へ戻します。
02
状態と遷移条件を定義する
工程ごとに受け付ける入力、成功条件、停止理由、次に進める状態を定義します。状態遷移はAIの自由文ではなく決定的なルールで判定します。
工程ごとに定義する項目
- 必須入力と有効期限
- 成功を示す機械判定可能な条件
- 情報不足・矛盾・対象外の状態
- 自動再試行できる条件と上限
- 人へ渡す判断材料
- 次工程が受け付ける状態
03
再試行の前に実行済みか確認する
外部APIがタイムアウトしても、相手側では処理が完了している場合があります。送信、公開、決済をそのまま再試行すると重複します。
実行単位に一意なキーを付け、完了状態を照合します。止まった画面には、どの工程で何が不足し、誰が何をすれば再開できるかを表示します。
本番前の受け入れチェック
- 必須データが空または古いと次へ進まない
- 検証サービスが応答しない場合に合格扱いしない
- 同じイベントが複数回来ても外部作用は一度だけ
- 再起動後も停止状態と試行回数が保持される
- 期限切れ・対象違いの承認を拒否する
- 停止理由と復旧操作をログから追える

