ストーリー
田
田中VPoE
モニタリングでAIの品質劣化を検知できるようになった。次は「検知した後にどうするか」だ
あなた
従来のインシデント対応と同じフローで対応すれば良いのでは?
あ
田
田中VPoE
基本的なフローは同じだ。だがAIシステム固有のインシデント類型がある。ハルシネーションによる誤情報拡散、学習データからの個人情報漏洩、プロンプトインジェクションによるガードレール突破 — これらは従来の「サーバーが落ちた」とは全く異なる対応が必要だ
あなた
影響範囲の評価も難しそうですね。「何人が誤った情報を受け取ったか」を特定する必要がある
あ
田
田中VPoE
その通り。だからこそAIインシデント専用のプレイブックが必要だ。今日は実践的な対応手順を設計しよう
AIシステム固有のインシデント類型
インシデント分類
| 類型 | 説明 | 影響 | 発生頻度 |
|---|
| ハルシネーション | AIが事実でない情報を生成 | ユーザーの誤判断、信頼性低下 | 中〜高 |
| バイアス露出 | 特定の属性に対する偏った出力 | レピュテーションリスク、法的リスク | 低〜中 |
| データ漏洩 | 学習データやRAGソースの機密情報が出力に含まれる | コンプライアンス違反、法的リスク | 低 |
| プロンプトインジェクション成功 | ガードレールが突破される | 不正な出力、システムの悪用 | 低〜中 |
| モデル障害 | APIプロバイダーの障害、レート制限 | サービス停止 | 低 |
| 品質急劣化 | モデル更新やデータ変更による品質低下 | ユーザー体験の悪化 | 中 |
インシデント別の危険度マトリクス
影響度
低 中 高 極大
┌─────┬─────┬─────┬─────┐
高│ │品質 │ハルシ│ │ 発
│ │急劣化│ネーション│ │ 生
├─────┼─────┼─────┼─────┤ 頻
中│ │ │バイ │ │ 度
│ │ │アス │ │
├─────┼─────┼─────┼─────┤
低│モデル│ │プロンプト│データ│
│障害 │ │インジェ│漏洩 │
│ │ │クション│ │
└─────┴─────┴─────┴─────┘
AI障害の影響範囲評価
影響範囲の特定手順
AIインシデントでは「誰が、いつ、何を受け取ったか」を特定することが重要です。
| ステップ | アクション | ツール/手法 |
|---|
| 1. 時間範囲の特定 | インシデント発生時刻と検知時刻を確定 | ログ分析、アラート履歴 |
| 2. 影響ユーザーの特定 | 該当時間帯にサービスを利用したユーザー一覧 | アクセスログ、セッションログ |
| 3. 影響コンテンツの特定 | 問題のある出力を受け取ったリクエストを特定 | LLMトレースログ、評価結果 |
| 4. 二次影響の評価 | ユーザーが誤情報を基に行動した可能性 | 業務ログ、後続アクションの追跡 |
| 5. 影響度のスコアリング | ビジネスインパクトの定量評価 | 影響ユーザー数 x 深刻度 |
影響度スコアリング
# 影響度スコアの計算例
def calculate_impact_score(incident):
severity_weight = {
"data_leak": 10,
"hallucination_critical": 8, # 法務・医療等の重要領域
"bias_exposure": 7,
"prompt_injection": 6,
"hallucination_general": 4,
"quality_degradation": 3,
"model_outage": 2,
}
score = (
severity_weight[incident.type]
* incident.affected_users
* incident.duration_hours
)
# 高リスクドメインの場合は係数を上げる
if incident.domain in ["legal", "medical", "financial"]:
score *= 2.0
return score
AIインシデント対応プレイブック
フェーズ1: 検知
| 検知ソース | 検知方法 | 想定検知時間 |
|---|
| 自動モニタリング | 品質スコア急落、安全性フィルタ検知 | 数分以内 |
| ユーザー報告 | フィードバック、サポートチケット | 数時間 |
| 内部レビュー | 定期的なログレビュー、サンプリング評価 | 数日 |
| 外部報告 | SNS、メディア、セキュリティ研究者 | 数日〜数週間 |
フェーズ2: トリアージ
インシデントの深刻度を判定し、対応レベルを決定します。
| 深刻度 | 条件 | 初期対応 | 対応時間目標 |
|---|
| SEV1 | データ漏洩、重要領域でのハルシネーション | サービス即停止、経営層報告 | 15分以内 |
| SEV2 | バイアス露出、プロンプトインジェクション成功 | フォールバック切り替え、チーム召集 | 1時間以内 |
| SEV3 | 一般的なハルシネーション増加、品質劣化 | 原因調査開始、影響範囲確認 | 4時間以内 |
| SEV4 | 軽微な品質低下、一時的なレイテンシ増加 | 次営業日に対応 | 24時間以内 |
フェーズ3: 緩和
緩和アクションの判断フロー:
インシデント検知
│
├── データ漏洩? ──Yes──→ 即座にサービス停止
│ ├── 漏洩データの範囲特定
│ └── 法務・コンプライアンス通知
│
├── 安全性違反? ──Yes──→ フォールバックモードへ切替
│ ├── ガードレールの強化
│ └── 問題パターンのブロックルール追加
│
├── ハルシネーション?─Yes→ 問題カテゴリの回答を制限
│ ├── RAGソースの検証
│ └── 「確認中」メッセージへの切替
│
└── 品質劣化? ──Yes──→ 前バージョンへのロールバック検討
├── モデルバージョンの確認
└── プロンプト変更の巻き戻し
フェーズ4: 根本原因分析
| 分析対象 | 確認事項 | ツール |
|---|
| モデル変更 | プロバイダーのモデル更新があったか | リリースノート、バージョンログ |
| プロンプト変更 | 直近のプロンプト変更が原因か | Git履歴、デプロイログ |
| RAGデータ | ナレッジベースの更新で問題が混入したか | データ変更ログ、インデックス履歴 |
| 入力パターン | 想定外の入力パターンが増加したか | 入力ログ分析 |
| インフラ | APIレート制限、ネットワーク問題 | インフラモニタリング |
フェーズ5: 再発防止
| 再発防止策 | 実施内容 | 優先度 |
|---|
| テストケース追加 | インシデントの再現テストを評価スイートに追加 | 高 |
| ガードレール強化 | 問題パターンを検出するフィルタの追加 | 高 |
| モニタリング改善 | 検知ルールの追加・閾値の調整 | 中 |
| プロセス改善 | 変更管理プロセスの見直し | 中 |
| ドキュメント更新 | プレイブックへの知見の反映 | 低 |
モデルのロールバック手順
ロールバック戦略
AIシステムのロールバックは、従来のソフトウェアより複雑です。複数のコンポーネントが関連するためです。
| コンポーネント | ロールバック方法 | 注意点 |
|---|
| プロンプト | Gitで前バージョンに戻す | フィーチャーフラグで即座に切替可能にしておく |
| モデルバージョン | 設定ファイルでバージョン指定を変更 | 外部API側の旧バージョン廃止に注意 |
| RAGデータ | インデックスのスナップショットから復元 | 復元中の検索精度低下を考慮 |
| ガードレール | 設定ファイルの前バージョンに戻す | 強化方向のロールバックはリスクあり |
# ロールバック手順書の例
rollback_procedure:
pre_checks:
- name: "ロールバック先バージョンの確認"
command: "git log --oneline -5 -- prompts/"
- name: "現在のトラフィック量確認"
command: "kubectl get hpa ai-service"
steps:
- name: "フィーチャーフラグで新プロンプトを無効化"
action: "feature_flag.disable('prompt-v3')"
rollback_time: "即座"
- name: "モデルバージョンの切り替え"
action: "kubectl set env deploy/ai-service MODEL_VERSION=v2"
rollback_time: "2-3分"
- name: "RAGインデックスの復元"
action: "restore_index_snapshot('2025-01-15')"
rollback_time: "10-30分"
post_checks:
- name: "品質スコアの確認"
command: "python scripts/quick_eval.py --suite=smoke"
- name: "エラー率の確認"
command: "kubectl logs -l app=ai-service --since=5m | grep ERROR"
コミュニケーションプラン
ステークホルダー別の通知
| ステークホルダー | 通知タイミング | 通知内容 | チャネル |
|---|
| 運用チーム | 検知即座 | 技術詳細、影響範囲、対応状況 | Slack #incident |
| マネジメント | SEV1/2で即座、SEV3で4時間以内 | ビジネス影響、対応計画、復旧見込み | メール + Slack |
| 影響ユーザー | 対応方針確定後 | 何が起きたか、修正内容、今後の対策 | アプリ内通知 + メール |
| 経営層 | SEV1で即座 | 事業リスク、法的影響、対外コミュニケーション方針 | 電話 + メール |
| 法務/コンプライアンス | データ漏洩時に即座 | 漏洩範囲、法的義務、規制当局への報告要否 | 電話 + メール |
インシデント報告テンプレート
# AIインシデント報告
## 基本情報
- インシデントID: AI-INC-2025-042
- 発生日時: 2025-01-20 14:30 JST
- 検知日時: 2025-01-20 14:35 JST
- 深刻度: SEV2
- 類型: ハルシネーション(重要領域)
## 影響範囲
- 影響ユーザー数: 約150名
- 影響リクエスト数: 約320件
- 影響時間: 約2時間(14:30-16:30)
## 経緯
- 14:30 モデルプロバイダーのマイナーバージョン更新が適用
- 14:35 品質モニタリングがスコア低下を検知、P2アラート発報
- 14:45 オンコール担当が調査開始
- 15:00 原因をモデル更新と特定、ロールバック開始
- 16:30 ロールバック完了、品質スコア回復を確認
## 根本原因
- モデルプロバイダーのマイナーバージョン更新により、
特定ドメインの回答精度が低下
## 対策
- [ ] モデルバージョンの固定(ピンニング)
- [ ] モデル更新の自動検知アラートの追加
- [ ] 新バージョンの自動回帰テスト導入
まとめ
| ポイント | 内容 |
|---|
| AI固有のインシデント | ハルシネーション、バイアス、データ漏洩、プロンプトインジェクション |
| 影響範囲評価 | 「誰が、いつ、何を受け取ったか」を特定する |
| 対応プレイブック | 検知→トリアージ→緩和→根本原因分析→再発防止の5フェーズ |
| ロールバック | プロンプト、モデル、RAGデータの3層のロールバック戦略 |
| コミュニケーション | ステークホルダー別の通知プランを事前に準備 |
チェックリスト
次のステップへ
次は演習です。ここまで学んだLLMOps、モニタリング、インシデント対応の知識を統合して、AI運用設計書を作成しましょう。
推定読了時間: 15分