「使えない」の連絡を、過去の障害と設定変更の履歴に照らして切り分ける
利用者から届いた「使えない」という連絡を、過去の障害の記録と直近の変更の履歴に照らし、似た事例、関係しそうな変更、次に確かめることを出どころ付きで並べます。原因の断定と復旧作業はさせません。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- Amazon Kendra/Azure AI/OpenSearch
- 連携・自動化
- Make/n8n/Power Automate
- 対象業界
- IT・SaaS/その他/教育/自治体/金融
- 対象部門
- カスタマーサポート/情報システム
- 対象業務
- 問い合わせ対応/情報検索
- 主な課題
- 問い合わせが多い/属人化している/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 属人化解消/工数削減/検索時間短縮
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 連絡を受け、ITサービス管理ツールにチケットを作る
- 文面を読み、いつから、誰が、どの画面でという情報が足りなければ聞き返す
- 過去の障害の記録を、思いついた言葉で検索する。当たらなければ言葉を変えて引き直す
- 変更管理の台帳を開き、直近の設定変更とリリースに対象が重なるものが無いかを見る
- 該当しそうな外部サービスがあれば、稼働情報のページを開いて現在の状態を読む
- 本人だけか、拠点全体か、全社かを決め、担当を割り振るか自分で対応する
- 終わったら、切り分けの結果と対処をチケットに書いて閉じる
- 人連絡を受け、ITサービス管理ツールにチケットを作る
- 自動直近15分に作られた同種のチケットの件数を数える。利用者で重複を除く
- 自動3件以上なら全体の障害を疑う印を立て、当番のリーダーへ承認要求を出す
- 自動本文から氏名と端末名を置き換え、署名と定型の挨拶を落とす
- 自動過去の障害の記録と、直近72時間の設定変更・リリースの履歴を検索する
- 自動引いた記録を渡し、似た事例、関係しそうな変更、次に確かめることを引用付きで出させる
- 自動本文だけを別に見て、型の項目のうち足りないものと、聞き返しの下書きを作る
- 自動引用の付いていない記述を落とし、記録の番号と日付を付けて1枚にまとめる
- 自動関係しそうな外部サービスの稼働情報ページへのリンクを並べる
- 人担当者が候補を見て、確かめる順番を決める。稼働情報は自分で開いて読む
- 人聞き返しの下書きを直して利用者へ送る
- 人切り分けの結果と、役に立った記録の番号をチケットに書く
各工程の詳しい説明を読む
- 連絡を受け、ITサービス管理ツールにチケットを作る
- 文面を読み、いつから、誰が、どの画面でという情報が足りなければ聞き返す
- 過去の障害の記録を、思いついた言葉で検索する。当たらなければ言葉を変えて引き直す
- 変更管理の台帳を開き、直近の設定変更とリリースに対象が重なるものが無いかを見る
- 該当しそうな外部サービスがあれば、稼働情報のページを開いて現在の状態を読む
- 本人だけか、拠点全体か、全社かを決め、担当を割り振るか自分で対応する
- 終わったら、切り分けの結果と対処をチケットに書いて閉じる
(a)3番と4番が、毎回の調べ直しになっている。 過去に同じ現象があっても、そのときの記録の言葉と今回の利用者の言葉が違えば当たりません。「印刷できない」と「出力されない」が別の記録として並んでいます。 何度か言葉を変えて探し、見つからなければ無いものとして進みます。
(b)経験の差がそのまま時間の差になる。 経験のある担当者は、文面を見た時点で見に行く先の見当が付きます。不慣れな担当者は3番から順に全部を見て、当たる言葉を知らず空振りが続きます。同じ連絡で5分と30分の差が出ます。
(c)同じ時間帯の複数件に気づくのが遅い。 チケットは1件ずつ開くので、隣の担当者が別の拠点から似た連絡を受けていても分かりません。全社の障害を、個別の問い合わせとして3件別々に切り分けていたことが起きます。
(d)聞き返しが1往復ずつ増える。 足りない情報を聞き返すと、返事が来るまで止まります。最初に何を聞くかが担当者ごとに違うので、2往復、3往復になります。この待ち時間は工数に出ませんが、利用者から見た復旧までの時間には乗ります。
- 【人】 連絡を受け、ITサービス管理ツールにチケットを作る
- 【自動】 直近15分に作られた同種のチケットの件数を数える。利用者で重複を除く
- 【自動】 3件以上なら全体の障害を疑う印を立て、当番のリーダーへ承認要求を出す
- 【自動】 本文から氏名と端末名を置き換え、署名と定型の挨拶を落とす
- 【自動】 過去の障害の記録と、直近72時間の設定変更・リリースの履歴を検索する
- 【自動】 引いた記録を渡し、似た事例、関係しそうな変更、次に確かめることを引用付きで出させる
- 【自動】 本文だけを別に見て、型の項目のうち足りないものと、聞き返しの下書きを作る
- 【自動】 引用の付いていない記述を落とし、記録の番号と日付を付けて1枚にまとめる
- 【自動】 関係しそうな外部サービスの稼働情報ページへのリンクを並べる
- 【人】 担当者が候補を見て、確かめる順番を決める。稼働情報は自分で開いて読む
- 【人】 聞き返しの下書きを直して利用者へ送る
- 【人】 切り分けの結果と、役に立った記録の番号をチケットに書く
2番と3番を先頭に近い位置に置いたのが、一つ目の要点です。 件数は、AIに考えさせなくても数えれば分かります。同じ時間帯に3件来ているという事実は、どんな候補よりも強い手がかりです。 個別の切り分けの前に一度止めます。
6番と7番を分けているのが二つ目の要点です。 6番は記録を引用付きで読ませる処理、7番は本文だけを決まった形で受け取る処理で、この2つは1回の呼び出しにまとめられません。 理由は第7章に書きます。
02今回想定するシステム構成
利用者からの連絡(メール/チャット/電話の口頭) ▼【トリガー】ITサービス管理ツールにチケットが作られる Power Automate ├──▶ 直近15分の同種チケットの件数を数える(利用者で重複を除く) │ └─ 3件以上 ─▶【全体障害の疑い】当番リーダーへ承認要求 ▼ 氏名・端末名の置き換え/署名の除去/サービス名の統一 ▼ Azure AI Search ── ハイブリッド検索(フルテキストとベクターを並列、RRFで統合) ├─ インデックス① 過去の障害の記録(セマンティックランカーで再ランク) └─ インデックス② 設定変更・リリースの履歴(直近72時間で絞り込み) ▼ Claude API ├─【呼び出しA】記録を引用付きで読む(似た事例/関係しそうな変更/次に確かめること) └─【呼び出しB】連絡の本文だけを見る(型の項目/足りない項目/聞き返しの下書き) ▼ Power Automate ── 引用の無い記述を落とし、記録番号と日付を付けて1枚にする ├──▶ 外部サービスの稼働情報ページへのリンク(対応表から。中身は読まない) ▼ 【人】候補を見て、確かめる順番を決める ├──▶ 聞き返しの下書きを直して利用者へ送る └──▶ 切り分けの結果を書き、翌日インデックスに入る
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | Claude API | OpenAI API、Gemini API |
| 検索基盤 | Azure AI Search | Amazon Kendra、OpenSearch |
| 連携 | Power Automate | Make、n8n |
ITサービス管理ツールと変更管理の台帳は、新しく足すものではありません。 読むだけで、書き込みはしません。
検索の中心は、Azure AI Search のハイブリッド検索です。 これは search と vectorQueries の両方のクエリパラメーターを含む1つのクエリ要求で、フルテキスト検索とベクター検索を並列で実行し、逆ランク融合(RRF)で結果をマージします。
ハイブリッドにする理由がはっきりしています。 ベクター検索の利点は、逆インデックスにキーワードの一致が無い場合でも、検索クエリと概念的に似た情報が検索されることです。「印刷できない」と「出力されない」が当たるのはこちらです。 一方、キーワード検索の利点は精度で、製品コード、高度に特殊化された専門用語、日付、人の名前に対するクエリなど、完全一致を識別できる場面で強くなります。
そのうえでセマンティックランカーを重ねます。 queryType=semantic を指定すると呼び出され、機械読解を適用して関連性の高い結果を上に出します。ただし、後段の設計を縛る制約も持ち込みます。
連携は Power Automate です。 件数を数える、検索を呼ぶ、結果を1枚にまとめる、承認を挟む、という役回りで、承認を機能として持つことが選定理由です。
03どうやって実装するのか
処理の起点を決める
ITサービス管理ツールにチケットが作られたことを起点にします。 定時実行にはしません。切り分けは受けた直後にしか意味がなく、まとめて処理すると、全社の障害に気づくのが夕方になります。
トリガーの直後に置くのが、件数を数える処理です。 チケットが作られるたびに、直近15分の同種のチケットを数えます。この処理だけはAIを通しません。 数えれば分かることに推測を挟みません。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 連絡の本文 | 文面、起票日時、対象サービス名(分かれば) | ITサービス管理ツール |
| 過去の障害の記録 | 記録番号、日付、現象、対象サービス、拠点、原因と対処 | ITサービス管理ツール |
| 設定変更・リリースの履歴 | 変更番号、適用日時、対象、変更の内容 | 変更管理の台帳、作業記録 |
| 外部サービスの対応表 | サービス名と稼働情報ページのURL | 情報システム部の一覧 |
| 直近15分の起票件数 | 件数と内訳(拠点、対象サービス) | ITサービス管理ツール |
正直に書いておきます。過去の障害の記録が残っていない会社では、この仕組みは動きません。 記録が手元のメモやチャットの流れにしかなければ、検索する先が存在しないからです。先に要るのは、記録番号と日付が付いた記録を1年分ためることで、これはAIではなく運用の話です。 変更の履歴も同じで、メールに散らばっていると72時間で絞れません。
データの取得方法を決める
インデックスは2つに分けます。 探し方が違うからです。
| 引くもの | 引き方 | 絞り込み |
|---|---|---|
| 過去の障害の記録 | ハイブリッド検索+セマンティックランカー | 対象サービス、拠点 |
| 設定変更・リリースの履歴 | ハイブリッド検索。適用日時で絞ってから引く | 直近72時間、対象サービス |
記録側で効くのは、セマンティックランカーの制約です。 これは既定のランク付けアルゴリズムでスコア付けされた上位50件を再ランク付けするもので、50を超える結果が含まれている場合でも、上位50件のみが進みます。
だから、母数を先に絞ります。 対象サービスと拠点で filter をかけてから引けば、50件の枠に近いものが入ります。絞らずに全社1年分から引くと、上位50件が別のサービスの記録で埋まります。 公式の記述にも、セマンティックランカーを使用している場合は k を 50 に設定して入力を最大化する、とあります。
並べ替えは指定しません。 明示的な並べ替え順序は関連性の順位を上書きするとされています。後段で使う値は @search.rerankerScore、範囲は 4 から 0(高から低)です。
AIへ渡す前に整形する
- 氏名の置き換え … 氏名を社員番号に置き換えます。宛名と署名の両方です
- 端末名の置き換え … 資産管理番号は下3桁だけを残し、機種名は残します
- 署名と定型の挨拶の除去 … 落とさないと検索の言葉がぶれます
- サービス名の統一 … 「勤怠」を正式名称に、対応表で寄せます
- 件数の集計 … 直近15分の同種のチケットを数えます。同じ利用者の連続は1件です
- 記録の分割 … 長い対応記録を、見出しごとに分けて入れます
- 変更履歴の絞り込み … 適用日時が直近72時間のものだけにします
6番目に理由があります。 セマンティックランク付けでは、ドキュメントごとに要約モデルが最大2,000個のトークンを受け入れ、トークンは約10文字とされ、入力は「title」「keywords」「content」から組み立てられます(タイトル128、キーワード128、コンテンツが残り)。長すぎる文字列はトリミングされ、上限を超える内容は無視されます。 何時間も続いた対応記録を丸ごと入れると、末尾の「原因はこれだった」が捨てられます。
1番目と2番目は、第13章につながります。 外部のAPIへ渡すのは置き換えのあとの文面で、前処理に置かないと、渡す直前に確かめることになって漏れます。
AIに処理させる
呼び出しを2つに分けます。 渡すものと受け取る形が違うからです。
| 呼び出しA | 呼び出しB | |
|---|---|---|
| 渡すもの | 検索で引いた記録(上位5件ずつ) | 連絡の本文だけ |
| させること | 似た事例/関係しそうな変更/次に確かめること | 型の項目/足りない項目/聞き返しの下書き |
| 受け取る形 | テキストと引用 | 構造化出力(決めたJSONスキーマ) |
分けているのは、好みの問題ではありません。併用できないからです。 Claude の引用(citations)と構造化出力は併用できず、渡したドキュメントで引用を有効にしたうえで output_config.format パラメーター(および非推奨の output_format)を含めると、APIは400エラーを返します。 引用はテキスト出力に引用ブロックを差し込む必要があり、構造化出力の厳格なJSONスキーマの制約と両立しないためとされています。
呼び出しAで引用を使うのは、出どころを人に書かせないためです。 応答は複数のテキストブロックに分かれ、各ブロックが主張と、それを支える引用を持ちます。
| させないこと | 理由 |
|---|---|
| 原因の断定 | 候補までにする。断定されると確かめる手順が飛ばされる |
| 復旧の操作 | 再起動、設定の戻し、権限の付け直しは人が決めて人が行う |
| 外部サービスの稼働情報の解釈 | ページを渡さない。読むのは担当者 |
| 全体の障害かどうかの宣言 | 件数は数えれば分かる。推測を挟まない |
| 記録番号や日付を本文に書くこと | 引用から機械で付ける。書かせると番号がずれる |
| 記録に無い事例の提示 | 該当が無ければ「該当なし」と言わせる |
下から2行目が、いちばん起きやすい失敗です。 記録番号を本文に書かせると、「INC-2416の事例では」と書きながら、引用は別の記録を指すことが起こります。
指示内容を固定する
呼び出しA(記録を引用付きで読ませる)
あなたは情報システム部門で、利用者からの「使えない」という連絡の切り分けを
手伝う立場です。渡した記録に書かれていることだけを使ってください。
【出すもの】次の3つを、この見出しのまま順に書いてください。
1. 似た過去の事例
2. 直近の変更で関係しそうなもの
3. 次に確かめること
【厳守事項】
- 1と2は、渡した記録のどれかを根拠にしてください。根拠にできる記録が
無ければ「該当なし」と書き、なぜ該当しないかを1文で書いてください。
それらしい事例を思い出して書かないでください。
- 記録の番号と日付を本文に書かないでください。番号はこちらで付けます。
- 原因を断定しないでください。「〜が原因です」と書かず、「〜の事例では
〜だった」「〜の変更が同じ対象に当たっている」と書いてください。
- 再起動する、設定を戻すといった復旧の操作を書かないでください。
- 外部のサービスが止まっているかどうかを書かないでください。
- 3は確かめる順に3つまで。結果で次にやることが変わる順に並べてください。
- 利用者の氏名を、文面に残っていても書き写さないでください。
【利用者からの連絡】{ticket_body}
【同じ時間帯の連絡件数】直近15分に {concurrent_count} 件
【過去の障害の記録/設定変更・リリースの履歴】
documentブロックで渡す(引用を有効にする)
「それらしい事例を思い出して書かない」を書かないと、書きます。 記録に近いものが無いとき、よくある障害の話を、記録から読んだ体裁で並べます。
呼び出しB(連絡の本文だけを決まった形で受け取る)
あなたは情報システム部門の受付です。利用者からの連絡の本文だけを見て、
切り分けに必要な項目が書かれているかを確かめ、足りない項目を聞き返す文を作ります。
【型の項目】
- since ... いつから - who_scope ... 本人だけか周りにもか
- screen ... どの画面・操作で - device ... 端末の種類
- error_text ... 画面に出ている文言 - service_name ... どのシステムか
【厳守事項】
- 書かれていない項目は空のままにし、missing に入れてください。
文面から推測して埋めないでください。
- 「たぶん全社」のような書き方をせず、本人が書いた範囲だけを読んでください。
- ask_back_draft は、missing に入れた項目だけを尋ねる文にしてください。
200文字以内、箇条書きで、謝罪や前置きを入れないでください。
- 原因、対処、復旧の見込みと、利用者の氏名を出力に含めないでください。
【連絡の本文】{ticket_body}
「200文字以内」をプロンプトに書くのは、スキーマで縛れないからです。 構造化出力のJSONスキーマでは、minLength と maxLength といった文字列の制約がサポートされていません。
出力形式を固定する
呼び出しAは、テキストと引用で返ります。 引用を有効にするには各ドキュメントに citations.enabled=true を設定します。 現時点では、1つのリクエスト内のすべてのドキュメントで有効にするか、すべてで無効にするかのどちらかにする必要があります。
{
"type": "text",
"text": "同じ拠点の利用者から、同じ画面で同じ文言が出た事例がある",
"citations": [
{ "type": "char_location",
"cited_text": "(記録から引かれた文がそのまま入る)",
"document_index": 2,
"document_title": "INC-2416 / 2026-06-11 / 申請画面が開かない",
"start_char_index": 0, "end_char_index": 128 }
]
}
記録番号と日付は document_title から取ります。 タイトルは長さに制限があるため、メタデータをテキストまたは文字列化したJSONとして保存するには context フィールドが役に立つとされています。拠点や対象サービスはそちらへ入れます。
引用の付いていない記述は、ここで落とします。 citations が空のテキストブロックを捨てます。禁じたうえで、機械でも落とします。
呼び出しBは、次のスキーマで受け取ります。 8項目すべてを required に入れます。
{
"type": "object",
"properties": {
"since": { "type": "string" },
"who_scope": { "type": "string", "enum": ["self_only", "others_too", "unknown"] },
"screen": { "type": "string" },
"device": { "type": "string" },
"error_text": { "type": "string" },
"service_name": { "type": "string" },
"missing": { "type": "array",
"items": { "type": "string",
"enum": ["since", "who_scope", "screen",
"device", "error_text", "service_name"] } },
"ask_back_draft": { "type": "string" }
},
"additionalProperties": false
}
オブジェクトの additionalProperties は false に設定する必要があります。 決めた項目以外が混ざらず、後段の分岐が書きやすくなります。
2つの結果は、ワークフローが1枚にまとめます。 similar_incidents と recent_changes には引用から取った記録番号・日付・cited_text を、asked_back には呼び出しBの missing と下書きを入れます。その先頭に、数えた結果である concurrent_count と「全体障害の疑い」を置きます。 AIの出力ではありませんが、担当者が最初に見る場所をそろえるために同じ1枚に載せます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| ITサービス管理ツール | Power Automate のトリガー | チケットの作成を検知し、本文を取る |
| ITサービス管理ツール | 検索 | 直近15分の同種チケットの件数を数える |
| Azure AI Search | API呼び出し | 記録と変更履歴をハイブリッド検索で引く |
| Claude API | API呼び出し(2回) | 引用付きの候補提示と、型の項目の抜き出し |
| 外部サービスの対応表 | 表の参照 | サービス名からURLを引く。ページは開かない |
| 当番リーダー | Power Automate の承認 | 全体障害の疑いが立ったときの周知可否 |
チケットへは書き込みません。 出すのは担当者が見る1枚までで、結果を書くのは人です。 書き込みを足すと、候補が事実として記録に残り、次の検索で引かれます。
承認は、全社周知を出すかどうかにだけ使います。 Power Automate では「承認 - 開始して承認を待機」アクションを任意のフローに追加することで承認を管理でき、承認者は承認センターまたはメールから返信できます。「詳細」フィールドは Markdown で書式を設定できるので、件数と時間帯と拠点の内訳を並べます。
人が確認する
人が見るのは全件です。 減らすのは1件あたりの調べ物の時間です。
- 全体障害の疑いを先に見る …
concurrent_countと内訳を見ます。3件以上なら、個別の端末を見に行く前に止まります - 候補の出どころを確かめる … 記録番号と日付から元の記録を開き、
cited_textを読んで今回の連絡と本当に近いかを見ます - 外部サービスの稼働情報は自分で読む … リンクを開いて現在の状態を読みます。AIの出力を経由しません
- 確かめる順番を決める … 「次に確かめること」は候補です。並べ替えても、捨ててもかまいません
2番目を省かないでください。 引用が付いていても、その記録が今回と似ているかの判断は人の仕事です。 同じ文言のエラーでも、原因が違うことはいくらでもあります。
例外に対処する
| 起きること | 対応 |
|---|---|
| 似た記録が1件も無い | 「該当なし」と理由を返す。無理に候補を出させない |
rerankerScore が低い | 参考として出し、順位を下げる |
| 記録が50件の枠に入らない | 対象サービスと拠点で絞ってから引き直す |
| 引用の無い記述が混ざる | ワークフローで落とし、落とした件数を記録する |
| 構造化出力と引用を同時に指定した | 400エラーになる。 呼び出しを2つに分ける |
| 連絡の本文が1文しかない | missing が埋まる。聞き返しの下書きを出す |
| 同じ利用者が5分おきに連絡する | 件数の集計から重複を除き、1件として数える |
| 稼働情報のページが読めない | リンクだけ出して人へ。中身をAIに渡さない |
| 変更の履歴が台帳に入っていない | 「該当なし」と出る。台帳側の未整備をまず疑う |
| 検索や呼び出しが失敗する | 従来どおりの画面を出す |
外部サービスの稼働情報を渡さないのは、書式が一定でないからです。 ページには現在の状態と過去の障害の記載が並び、過去の記載を現在の状態として読まれると、対応の方向が丸ごと変わります。
しきい値を細かく決めないのにも根拠があります。 公式の記述では@search.rerankerScore の分布はインフラストラクチャレベルの条件により若干の変動を示す可能性があるとされ、最小しきい値のカスタムコードを書くときは限度を細かくしすぎないようにとあります。
記録を残す
- 連絡の本文(置き換え後)と、置き換える前との対応表(社内にだけ置く)
- 検索に投げたクエリと、返ってきた記録の番号・
@search.rerankerScore - 呼び出しAの応答全文と、引用が無くて落とした記述の件数
- 呼び出しBのJSONと、聞き返しを送ったかどうか
- 担当者が実際に確かめた順番と、候補のうち役に立ったもの
- 切り分けの結果(範囲と出どころ)と、最終的な原因
- 全体障害の疑いが立った回数と、そのうち実際に全体障害だった回数
5番目と6番目が、翌日の検索の材料になります。 どの候補が当たったかを残さないと、検索が良くなっているのか誰も言えません。
最後の行は、件数のしきい値を直すための数字です。 疑いが外れることが多ければ、15分か3件のどちらかが合っていません。
04実装レベルの3段階
最小構成では件数がさばけません。 記録を毎回貼るので、月120件には使えません。確かめるための段階です。 半自動化で、1件20分が7分程度になります。この段階が本記事の想定です。 調べ物の②と③がほぼ無くなり、残るのは候補を読んで順番を決める時間です。本格構成に進んでも、1件あたりの時間はこれ以上あまり下がりません。 下がるのは全社周知までの時間と、記録が次の検索に戻るまでの時間です。 段階を飛ばさないでください。 半自動化を1か月動かすと、どの言葉が当たらないか、どの記録が使えないかが先に分かります。
05工数削減シミュレーション
導入後 120件 × 7分 ÷ 60 = 14 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 過去1年分の障害の記録と、設定変更・リリースの履歴が記録として残っており、記録番号と日付で引ける企業。情報システム部門が数名で、利用者からの「使えない」という連絡を月100件以上受けている場合。経験のある担当者と不慣れな担当者で切り分けにかかる時間が5分と30分ほど開いており、経験の差がそのまま対応時間の差になっている場合。
- 障害の記録が担当者の手元のメモやチャットの流れにしか残っていない場合。この構成は過去の記録を引くことが土台なので、引ける記録が無ければ何も出ません。利用者が数十名で、連絡が月に数件しかない場合。外部のサービスをほとんど使わず、社内の機器だけで完結していて、変更の履歴を1人が把握できている場合。
07最小構成で試す方法
- 先月の連絡から30件を選ぶ(うち数件は、全体障害だったものを入れる)
- その30件について、当時かかった時間と、誰が対応したかを記録から拾う
- 関係しそうな過去の記録を20件ほどと、直近の変更の履歴をまとめる
- 手元のAIサービスに、その記録と1件の連絡文を貼り付ける
- 「この連絡に似た過去の事例、関係しそうな直近の変更、次に確かめることを出してください。渡した記録に無いことを書かず、該当が無ければ該当なしと書いてください。原因の断定と復旧の手順は書かないでください」と指示する
見るのは、渡した記録の中から出しているかどうかです。 30件のうち何件で「該当なし」と正しく言えたかを数えてください。
| 出てきた内容 | 判断 |
|---|---|
| 当時の担当者が見た記録と同じものが出た | 検索基盤の構築に進む |
| 記録に無い一般的な障害の話が混ざった | 指示の書き方で直る。構成は有効 |
| そもそも渡せる記録が20件も集まらない | 記録を残すところから。 AIの問題ではない |
3行目が出たら、この構成には進まないでください。 失敗ではなく、順番が違うということです。 記録の書き方を決めて半年ためてから試し直します。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 過去の障害の記録が残っていない | この構成は動きません。 記録の書き方を決めるのが先 |
| 記録に対象サービスが書かれていない | セマンティック構成の keywords に入れる項目を決める |
| 変更の履歴が台帳とメールに分かれている | 日付と対象で引ける1つの場所に寄せる |
| 引用と構造化出力を同時に使う | 400エラーになる。 呼び出しを2つに分ける |
| セマンティックランカーが効かない | 上位50件しか再ランクされない。 filterで母数を絞る |
| 対応記録の末尾が捨てられる | 要約モデルは最大2,000トークン。見出しごとに分ける |
| 記録の番号をAIが本文に書く | 番号は引用から機械で付ける。本文に書かせない |
| 出どころの無い候補が出る | 禁止を書き、引用の無い記述を機械でも落とす |
| 全社周知が自動で飛ぶ | 承認を挟む。 送信は人が行う |
| 件数の窓が合っていない | 15分・3件で始め、疑いが外れた回数を見て動かす |
上から3行が、着手前に決まる勝負です。 どれもAIの話ではなく、記録の残り方の話です。 整わないまま作ると、動くけれど毎回「該当なし」しか返らない仕組みになります。
続く3行は、作っている最中に必ず当たります。 400エラーは呼び出しを分ければ済みますが、上位50件と2,000トークンの制約は、動いているのに当たらないという形で出ます。 検索の結果を一度そのまま目で見る工程を、構築中に入れてください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 利用者の氏名、所属拠点、端末の資産管理番号、どの画面で何をしていたかという業務の内容、エラーの文面です。過去の記録には当時の対応の経緯と、社内システムの構成も含まれます。
- 外部のAPIへ渡す範囲を、前処理で決める … 呼び出しBに渡すのは置き換え後の本文だけ、呼び出しAに渡すのは上位に来た記録の本文だけです。氏名は社員番号に、資産管理番号は下3桁に置き換えてから渡します
- 記録の側にも、顧客の情報を書かない運用にする … 引かれた記録はそのまま外部へ渡ります。障害の記録に顧客名や口座番号を書く習慣があると、置き換えの対象外から出ていきます
- 画面の写真を渡さない … スクリーンショットには業務画面が写ります。引用の機能も、現時点では画像の引用に対応していません
- 渡す件数を絞る … 入力の量が増えるほど、外に出る記録の量が増えます。外部サービスの稼働情報も渡しません
- 人が決めることを固定する … 原因の断定、復旧の操作、全社周知の可否の3つです。全社周知は承認を挟み、送信は人が行います
- ログに、渡した本文そのものを残す … 何を渡した結果かを後から見られるようにします。置き換え前の対応表は社内にだけ置きます
誤りが起きた場合のリスクは、出どころの無い候補を信じて違う方向へ進むことと、全体の障害を個別の問い合わせとして扱い続けることの2つです。 前者は引用で、後者は件数で止めます。AIの精度ではなく、設計で止める失敗です。
10まず何から始めるか
1週目:引ける記録がどれだけあるかを数える
過去1年分の障害の記録を開き、記録番号と日付が付いていて、対象サービスが分かるものが何件あるかを数えます。あわせて、直近3か月の設定変更とリリースが日付と対象で引けるかを見ます。数十件しか無ければ、記録の書き方を決める作業に切り替えます。
2週目:30件で試す
先月の連絡から30件を選び、記録をまとめて手元のAIサービスに貼ります。渡した記録の中から出しているか、該当が無いときに「該当なし」と言えるかだけを見ます。
3週目:聞き返しの型を決める
いつから、誰が、どの画面で、どの端末で、どんな文言が出ているか、どのシステムの話か。この6つを、部署の全員が同じ順番で聞くと決めます。 型が無いと、下書きが担当者ごとに書き換えられます。
4週目:検索だけを作る
記録をインデックスに入れ、ハイブリッド検索とセマンティックランカーで引けるところまで作ります。この時点ではAIを通しません。 30件の連絡文をクエリにして、当時の担当者が見た記録が上位に来るかを確かめます。
2か月目: 呼び出しAとBをつなぎ、1枚にまとめて出します。件数の集計と承認も足します。3か月目以降: 切り分けの結果を書き戻す動線を作り、1件20分が何分になったかを実測します。経験のある担当者と不慣れな担当者の差が何分まで縮まったかを見た時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
引用の有効化の単位、document_title と context。構造化出力との併用が400エラーになること | Claude Docs: Citations | 2026-09-28 |
additionalProperties を false にする必要。文字列の長さの制約が無いこと | Claude Docs: Structured outputs | 2026-09-28 |
| 並列実行とRRF。ベクターとキーワードの得意な場面 | Microsoft Learn: ハイブリッド検索の概要 | 2026-09-28 |
上位50件のみの再ランク。最大2,000トークンと配分。k は50。rerankerScore の範囲と変動。課金の条件 | Microsoft Learn: セマンティックランキングの概要 | 2026-09-28 |
| 「承認 - 開始して承認を待機」、承認センターとメールからの返信、Markdown | Microsoft Learn: Power Automate での承認ワークフロー | 2026-09-28 |
どの記録を残し、どこまでを情報システム部門の判断とするかは、自社の運用ルールとして決めてください。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0272)についてのご相談はこちらから。
