警備会社の隊員と管制の担当が、現場ごとの警備指令書と過去の対応記録を引き、異常のときの手順と連絡先を根拠付きで探す
現場の隊員や管制の担当が「この現場で火災の発報があったら」「夜間の搬入の立会いは」と尋ねると、その現場の警備指令書のいま効いている版と、過去の対応記録から手順を探し、該当箇所を引用して示します。 連絡先は連絡先表から順位どおりに並べます。
- 生成AI
- Gemini
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 連携・自動化
- Python
- 対象業界
- その他/不動産/宿泊/自治体
- 対象部門
- 総務
- 対象業務
- 情報検索
- 主な課題
- 属人化している/引き継ぎができていない/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 対応スピード向上/属人化解消/検索時間短縮
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 隊員から電話を受ける、または発報を受信する
- 管制の担当が、共有フォルダからその現場の警備指令書のPDFを探して開く
- 目次から該当しそうな章を探し、手順を読む
- 指令書に書かれていない状況なら、過去の日報と報告書から同じ現場の似た対応を探す
- 連絡先表を開き、その現場の夜間の連絡の順位と電話番号を確かめる
- 隊員に手順と連絡先を伝え、対応の記録を管制のシステムに残す
- 自動毎晩、改訂された警備指令書・日報・報告書と、連絡先表を取り込む
- 人管制の担当または隊員が、画面で現場を選び(発報なら管制のシステムから現場が入る)、状況を短く書く
- 自動中継プログラムが、現場と今日の日付で絞り込みの条件を作る
- 自動Agent Search(Vertex AI Search)の answer メソッドが、その現場のいま効いている指令書と過去の対応記録から手順を探し、引用付きで答える
- 自動中継プログラムが、連絡先表からその現場の連絡の順位と番号を、答えの横にそのまま並べる
- 人管制の担当が引用の元の頁を確かめ、隊員に手順と連絡先を伝える
- 人対応の結果を管制のシステムに残す
各工程の詳しい説明を読む
- 隊員から電話を受ける、または発報を受信する
- 管制の担当が、共有フォルダからその現場の警備指令書のPDFを探して開く
- 目次から該当しそうな章を探し、手順を読む
- 指令書に書かれていない状況なら、過去の日報と報告書から同じ現場の似た対応を探す
- 連絡先表を開き、その現場の夜間の連絡の順位と電話番号を確かめる
- 隊員に手順と連絡先を伝え、対応の記録を管制のシステムに残す
(a)どの版が最新か分からない。 指令書は契約先の要望で年に何度も改訂されます。共有フォルダに「改訂版」「最新」「最新2」が並び、 紙のファイルとPDFで版が違うこともあります。古い版の手順を伝えると、契約先が変えたはずの連絡先に電話がかかります。
(b)探せる人が限られる。 「あのビルは漏水なら先に設備の会社に電話する」と知っている担当は速い。その担当が非番の夜は、同じ問い合わせに倍の時間がかかります。 隊長の頭の中にある手順は、指令書に書かれていないこともあります。
(c)連絡先の順位を取り違える。 連絡先表は現場ごとに「第1連絡先が出なければ第2へ」と順位が書かれていますが、表計算の行を目で追うと、隣の現場の行を読みます。
(d)過去の対応が見つからない。 日報と報告書はPDFで日付ごとに置かれています。「前にもこのビルで夜中にエレベーターが止まった」と覚えていても、いつの報告かが分からなければ探せません。
- 【自動】 毎晩、改訂された警備指令書・日報・報告書と、連絡先表を取り込む
- 【人】 管制の担当または隊員が、画面で現場を選び(発報なら管制のシステムから現場が入る)、状況を短く書く
- 【自動】 中継プログラムが、現場と今日の日付で絞り込みの条件を作る
- 【自動】 Agent Search(Vertex AI Search)の answer メソッドが、その現場のいま効いている指令書と過去の対応記録から手順を探し、引用付きで答える
- 【自動】 中継プログラムが、連絡先表からその現場の連絡の順位と番号を、答えの横にそのまま並べる
- 【人】 管制の担当が引用の元の頁を確かめ、隊員に手順と連絡先を伝える
- 【人】 対応の結果を管制のシステムに残す
6番目を人が行うのは、隊員に指示を出すのが管制の担当だからです。 画面に出るのは指令書の手順の引用で、その場の状況に合っているかは、電話で隊員の話を聞いている担当にしか分かりません。
2番目で現場を選ばせるのも、意図してのことです。 現場を選ばずに探せる作りにすると、急いでいるときほど現場を選ばずに探し、隣の現場の手順が出ます。
02今回想定するシステム構成
警備指令書(PDF)・日報・報告書・連絡先表 ▼【トリガー】毎晩の取り込み(改訂分だけ) Cloud Storage + メタデータ(JSON Lines:現場・版の期間・文書の種類) ▼ Agent Search(Vertex AI Search)のデータストア ▼【人】管制の画面・隊員のタブレットで現場を選んで質問 中継プログラム(Cloud Run) ├──▶ 絞り込みの条件:site_id + 今日に効く版 ├──▶ answer メソッド(Gemini で生成、引用と根拠の強さ付き) ├──▶ 連絡先表 ── 順位と番号をそのまま ▼ 管制の画面 ──【人】元の頁を確かめ、隊員に伝える
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Vertex AI Search(Agent Search)の answer メソッド | Azure AI Search、Amazon OpenSearch Service |
| 生成AI | Gemini(answer メソッドの回答の生成に使うモデル) | ─ |
| 連携 | 中継プログラム(Python。Cloud Run で動かし、管制の画面・検索・連絡先表をつなぐ) | Node.js で同じものを書く |
| 保管 | Cloud Storage(指令書・日報・報告書の写しとメタデータ、問い合わせと答えの記録) | ─ |
管制のシステムには、この構成から書き込みません。 発報の受信から現場の番号を読むだけで、対応の記録は担当がいつもの画面で残します。
検索の土台は、Agent Search(Vertex AI Search から改称中)の answer メソッドです。 公式のドキュメントでは、検索の指定(searchSpec.searchParams)に絞り込みの filter を書け、一度に引く結果は既定で10件、最大で25件です。回答の生成の指定には、引用を付ける includeCitations(既定は false)、関係の薄い内容で答えない ignoreLowRelevantContent、答え方を指示する promptSpec.preamble があります。根拠の強さで回答を止める groundingSpec もあり、根拠の弱い答えを画面に出さないために使います。
データの置き場所は、先に決めておく必要があります。 公式のドキュメントでは、データストアの場所は global・us・eu の3つで、日本のリージョンはありません。 us と eu を選ぶと保存中のデータの所在をその地域に留められます。警備指令書は契約先の建物の守りを書いた文書なので、どこに置くかを契約先に説明できるようにしておきます。
03どうやって実装するのか
処理の起点を決める
起点は2つあります。問い合わせと、毎晩の取り込みです。
問い合わせは、管制の画面か隊員のタブレットで現場を選び、状況を書いて「手順を探す」を押したときに動きます。発報の対応では、管制のシステムが受信した現場の番号を画面に渡し、担当は現場を選ぶ手間を省けます。 現場を選ばずに押すことはできない作りにします。
| 画面の項目 | 書き方 | 使い道 |
|---|---|---|
| 現場 | 現場の一覧から選ぶ(必須) | 絞り込み、連絡先表 |
| 状況の区分 | 発報/不審者/急病人/漏水/閉じ込め/依頼/その他 | 検索の文の先頭 |
| 状況 | 自由記述(「3階の東の感知器が発報、煙なし」) | 検索の質問文 |
| 時間帯 | 自動で入る(平日の日中/夜間・休日) | 検索の文の先頭 |
時間帯を入れるのは、指令書の手順が時間帯で分かれているからです。 日中は防災センターに、夜間は契約先の第1連絡先に、という書き方が多く、時間帯を書かずに探すと日中の手順が上に来ることがあります。
毎晩の取り込みは、改訂された指令書と、その日に出た日報・報告書、更新された連絡先表を Cloud Storage に置いたことで動きます。指令書の前の版は消さず、終わりの日を書いて残します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 警備指令書 | 巡回、鍵の扱い、立入りを断る区域、異常ごとの手順、時間帯ごとの連絡先の決まり。現場ごと・版ごと | 営業所が契約先と作ったPDF |
| 対応記録 | 日報と報告書のうち異常の対応の部分。日時、現場、状況、とった対応、連絡した先、結果 | 管制のシステムの記録と報告書のPDF |
| 連絡先表 | 現場ごとに、時間帯ごとの連絡の順位、相手の役割、電話番号、改訂の日 | 営業所の表計算 |
| 問い合わせ | 現場、状況の区分、状況、時間帯 | 管制の画面・隊員のタブレット |
質を決めるのは、指令書の版の期間です。 改訂のたびに、版の始まりの日と終わりの日をメタデータに書きます。契約先と取り決めた「この日から新しい手順」が、そのまま検索の対象の切り替わりになります。
対応記録には、指令書に沿った対応か、その場の判断だったかの印を付けます。 指令書に無い状況で隊長がとった対応は、次の参考にはなりますが、手順ではありません。basis に「指令書どおり」か「その場の判断」かを入れます。
データの取得方法を決める
指令書は現場ごと・版ごとに章で分け、対応記録は1件ずつファイルにして Cloud Storage に置きます(公式では1ファイル200MB、一度に10万ファイルまで)。メタデータは JSON Lines で、1行ごとに id、structData、content(mimeType と uri)を書きます。
{"id":"site0123-orders-v7-ch5","structData":{"doc_kind":"orders",
"site_id":["site0123"],"chapter":"発報時の対応",
"effective_from":"2026-09-01T00:00:00Z",
"effective_to":"2099-12-31T23:59:59Z"},
"content":{"mimeType":"application/pdf","uri":"gs://post-orders/site0123-orders-v7-ch5.pdf"}}
{"id":"site0123-rec-20260812-01","structData":{"doc_kind":"record",
"site_id":["site0123"],"basis":"on_site_judgment",
"occurred_at":"2026-08-12T02:40:00Z",
"effective_from":"2026-08-12T00:00:00Z",
"effective_to":"2026-08-31T23:59:59Z"},
"content":{"mimeType":"application/pdf","uri":"gs://post-orders/site0123-rec-20260812-01.pdf"}}
対応記録の effective_to には、その記録が前提にした指令書の版が終わった日を書きます。 指令書が改訂されると、古い手順で動いた記録は検索から外れます。終わっていない版なら、指令書と同じく遠い日付を入れます。
問い合わせのたびに、中継プログラムが絞り込みの条件を作ります。公式の構文では、文字の項目は ANY() に並べた値のどれかと完全に一致するかを見られ、日時の項目は ISO 8601 の文字列と比べられ、AND・OR と括弧で組み合わせられます。項目はスキーマで索引可能にしておかないと、絞り込みに使えません。
site_id: ANY("site0123")
AND effective_from <= "2026-10-15T02:10:00Z"
AND effective_to >= "2026-10-15T02:10:00Z"
AND doc_kind: ANY("orders","record")
site_id の条件は、中継プログラムが必ず付けます。 画面から現場が届かなかった問い合わせは、answer メソッドを呼ばずに「現場を選んでください」と返します。絞り込みの条件を付け忘れた1回が、隣の現場の手順を出す1回です。
連絡先表は検索のデータストアに入れません。中継プログラムが現場の番号と時間帯で表を引き、順位と番号をそのまま画面に並べます。
AIへ渡す前に整形する
- 指令書を章ごとに分ける … 「発報時の対応」「急病人の対応」など、異常の種類ごとの章を1文書にし、章の名前を
chapterに書きます - 版の期間を付ける … 改訂の履歴から、版ごとの始まりと終わりの日を書きます
- 暗証番号と鍵の番号を消す … 指令書の中の警報の解除の暗証番号、キーボックスの番号、金庫の位置は、取り込む前に伏せ字にします
- 指令書の中の電話番号を消す … 連絡先は連絡先表にだけ置き、指令書の本文の番号は「連絡先表の第1連絡先」のような言い方に置き換えます
- 対応記録を整える … 日報と報告書から異常の対応の部分だけを取り出し、隊員の氏名と、通報者・急病人の氏名を外します
basisを付ける … 対応記録ごとに、指令書どおりか、その場の判断かを隊長が書きます
3番目と4番目を軽く見ないでください。 3番目は、暗証番号を外部のサービスに置かないという、警備会社としての当たり前の扱いです。 4番目は、電話番号を連絡先表の1か所だけに置くための作業です。本文に番号が残ると、表を直しても古い番号が引用に出ます。
AIに処理させる
させるのは、その現場のいま効いている指令書と対応記録から、問い合わせの状況に当たる手順を探し、引用して短くまとめることです。
| させること | 中身 |
|---|---|
| 当たる手順を示す | 指令書の章の名前と、手順の本文の引用 |
| 手順の順番を並べる | 指令書に書かれた順のまま、番号を付けて |
| 時間帯の違いを示す | 日中と夜間で手順が分かれていれば、いまの時間帯のほうを |
| 過去の対応を示す | 同じ現場の似た対応があれば、日付と、指令書どおりかその場の判断か |
| 足りない情報を挙げる | 手順を決めるのに隊員に聞くこと(煙の有無、けが人の有無) |
| させないこと | 理由 |
|---|---|
| 電話番号・連絡先の名前を書く | 連絡先表から中継プログラムが写す |
| 指令書に無い手順を一般論で補う | 現場ごとの取り決めと違う動きになる |
| 警察・消防に通報するかの判断 | 管制の担当と隊員がその場で決める |
| 隊員の権限を超える行動を書く | 警備業務は法律で特別な権限を与えられたものではない |
| その場の判断の記録を手順として書く | その日の事情による対応 |
4つ目は法律に根拠があります。 警備業法第15条は、警備業者と警備員が業務を行うにあたって、この法律で特別に権限を与えられたものでないことに留意し、他人の権利と自由を侵害してはならないと定めています。一般論で補わせると、不審者に「身柄を確保する」のような、指令書が書いていない行動が出ることがあります。
answer メソッドの設定は次のようにします。
| 設定 | 値 | 理由 |
|---|---|---|
includeCitations | true | 手順に出典を付ける(既定は false) |
ignoreLowRelevantContent | true | 関係の薄い章で答えない |
filter | 現場、今日に効く版、文書の種類 | その現場のいまの手順だけを引く |
maxReturnResults | 10 | 既定のまま。1つの現場の章の数はそれほど多くない |
groundingSpec | includeGroundingSupports を有効、filteringLevel を FILTERING_LEVEL_HIGH | 根拠の弱い答えを出さない |
promptSpec.preamble | 下の指示 | 答え方の規則を与える |
filteringLevel を高くすると、根拠の弱い回答は生成されず、answerSkippedReasons に LOW_GROUNDED_CONTENT が返ります(関係の薄い内容で止まったときは NO_RELEVANT_CONTENT)。どちらのときも、画面には「指令書で該当の手順が見つかりません。隊長または営業所に確認してください」と出し、 指令書の目次へのリンクを並べます。
指示内容を固定する
answer メソッドの promptSpec.preamble に、次の指示を入れます。中継プログラムは、状況の区分と時間帯を検索の文の先頭に付けます。
あなたは警備会社の管制センターで、現場の警備指令書を引いて
手順を探す補助をする立場です。読むのは管制の担当と現場の隊員で、
隊員への指示は管制の担当が出します。
【前提】
検索の対象は、選ばれた現場の、今日に効いている版の警備指令書と、
同じ現場の過去の対応記録だけです。検索の文の最初に、
状況の区分(発報・不審者・急病人・漏水・閉じ込め・依頼・その他)と
時間帯(平日の日中、夜間・休日)が書かれています。
【答え方】
1. 当たる手順を、指令書の章の名前を付けて示す
2. 手順を指令書に書かれた順のまま、番号を付けて並べ、本文を引用する
3. 時間帯で手順が分かれていれば、いまの時間帯の手順を書く
4. 同じ現場の過去の対応記録があれば、日付と要点を1〜2行で書き、
指令書どおりか、その場の判断かを書く
5. 手順を決めるのに隊員に確かめることがあれば、2つまで挙げる
6. 全体を200字程度に収める
【厳守事項】
- 電話番号、連絡先の人の名前、会社名を書かないでください。
連絡が必要な手順は「連絡先表の第1連絡先へ連絡」のように、
指令書の言い方のまま書いてください。
- 検索結果に無い手順を、一般的な警備の知識で補わないでください。
- 指令書に書かれていない行動(追いかける、取り押さえる、
鍵を壊して入るなど)を書かないでください。
- 警察・消防に通報すべきかを判断して書かないでください。
指令書に通報の手順が書かれていれば、その本文を引用してください。
- その場の判断で行った過去の対応を、手順として書かないでください。
- 暗証番号、鍵の番号、金庫の位置を書かないでください。
- 当たる手順が見つからないときは、
「指令書で該当の手順を確認できませんでした」とだけ書いてください。
「電話番号を書かない」を明記しないと、AIは引用の中や過去の対応記録から番号を拾って書きます。 前処理で消していても、報告書の自由記述に番号が残ることはあります。中継プログラムでも、答えの文に数字が7桁以上続く箇所があれば伏せ、記録に印を付けます。
「指令書の順のまま」も大事です。 異常の手順は順番に意味があります。発報なら「現地の確認」が先で「契約先への連絡」が後、AIが読みやすさで並べ替えると、確認の前に契約先へ電話することになります。
出力形式を固定する
answer メソッドの返り値と連絡先表を、中継プログラムが次の形にまとめます。
{
"query_id": "",
"site_id": "",
"situation_type": "alarm | intruder | sick | leak | elevator | request | other",
"time_band": "daytime | night_holiday",
"answer_text": "",
"citations": [ { "doc_kind": "orders | record", "chapter": "",
"version_from": "", "basis": "", "quote": "", "uri": "" } ],
"ask_guard": [],
"contacts": [ { "rank": 1, "role": "", "phone": "", "updated": "" } ],
"grounding_score": 0,
"status": "answered | skipped | no_site",
"skipped_reason": ""
}
1つ目の理由は、連絡先を答えの文と別の欄に置けることです。 contacts は連絡先表から写したもので、answer_text には番号が入りません。 画面では答えの右に連絡先を順位どおりに並べ、表の改訂の日も出します。
2つ目は、citations に版と種類を持たせられることです。 引用ごとに指令書か対応記録か、何日からの版かが分かり、対応記録の引用には「その場の判断」の印が付きます。
3つ目は、status で画面の出し方を分けられることです。 answered なら答えと引用、skipped なら目次と「隊長に確認」、no_site なら現場を選ぶ欄だけを出します。
公式のドキュメントでは、引用の位置(startIndex/endIndex)は文字ではなく UTF-8 のバイト単位です。日本語の答えの文で引用の箇所に印を付けるときは、バイトの位置を文字の位置に直してから使います。 そのまま文字の位置として使うと、印がずれます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| Cloud Storage | 指令書・対応記録とメタデータの置き場 | 毎晩の取り込みの起点 |
| Agent Search | answer メソッド | 手順の引用と答えの文 |
| 連絡先表 | 中継プログラムが毎晩読み込んだ写し | 順位と番号 |
| 管制のシステム | 発報の受信の記録を読む(読み取りのみ) | 現場の番号を画面に渡す |
| 管制の画面・隊員のタブレット | 社内の画面 | 現場の選択、状況、答えと連絡先 |
隊員のタブレットから引けるのは、その隊員が配置されている現場だけにします。 中継プログラムが、隊員の配置の表から選べる現場を決めます。管制の担当は全現場を選べます。
公式のドキュメントには、データストアの文書ごとに読める人を決めるアクセス制御がありますが、Preview の機能で、データストアを作るときにしか有効にできません。 この構成では、読める現場の制御を中継プログラムの絞り込みで行い、Preview の機能には頼りません。
人が確認する
- 現場と版を見る … 画面の上に、選んだ現場の名前と、引用した指令書の版の始まりの日が出ます。電話の相手の現場と合っているかを最初に見ます
- 引用の元の頁を開く … 手順の引用を指令書の頁で確かめてから隊員に伝えます
- 連絡先の改訂の日を見る … 連絡先表の改訂が古ければ、営業所に確かめます
- その場の判断の記録は参考にとどめる … 対応記録の引用に「その場の判断」の印があれば、手順としては伝えません
- 外れを記録する … 答えが手順と違った、手順が見つからなかったときは、画面の「違う」を押して理由を書きます
1番目を省かないでください。 管制の担当は同時に複数の現場の電話を受けることがあります。画面の現場と電話の現場が違っていれば、引用がどれだけ正しくても指示は誤りです。
5番目の記録は、指令書の書き直しの材料になります。
例外に対処する
| 起きること | 対応 |
|---|---|
| 現場が選ばれていない | 検索をせず、現場を選ぶ欄だけを出す |
根拠の弱い答え(LOW_GROUNDED_CONTENT) | 答えを出さず、指令書の目次と「隊長に確認」を出す |
関係の薄い内容しか無い(NO_RELEVANT_CONTENT) | 同上。指令書に無い状況として記録する |
| 人の命に関わる状況(急病人・火災) | 検索の前に、画面の上に「119番・110番の通報は指令書の手順を待たずに行う」を固定で出す |
| 答えの文に電話番号らしい数字が出た | 中継プログラムが伏せ、記録に印を付ける |
| 指令書が改訂されたのに取り込まれていない | 版の始まりの日が古いことを画面に出す。営業所に改訂の有無を確かめる |
| 連絡先表に現場の行が無い | 連絡先の欄を「連絡先表に無し」にし、営業所の当番に回す |
| answer メソッドが応答しない | 指令書のPDFへのリンクと連絡先表だけを出す |
4行目は、検索の仕組みの外に置きます。 急病人や火災で、通報が検索の答えを待つことがあってはなりません。固定の文は、状況の区分を選んだ時点で、answer メソッドを呼ぶ前に出します。
記録を残す
- 問い合わせごとの、現場、状況の区分、状況の文、時間帯、問い合わせた人
- 絞り込みの条件の全文と、answer メソッドの返り値の全文(答えの文、引用、根拠の強さ、
answerSkippedReasons) - 画面に出した連絡先と、連絡先表の改訂の日
- 担当が「違う」を押した記録と理由
- 伏せた数字があった答えの記録
- 取り込んだ指令書の版と取り込みの日
2つ目で絞り込みの条件を残すのは、隣の現場の手順が出たと疑われたときに確かめるためです。
04実装レベルの3段階
半自動化で、1件10分が6分程度になります。 指令書の版を探す時間は無くなりますが、過去の対応記録を探す作業と、連絡先表を開く作業が残ります。本格構成で3分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化の画面を1か月使うと、どの現場の指令書に章が足りないか、どの状況の言い方で外れるかが先に分かります。指令書を直してから対応記録を足すほうが、外れたときに指令書の不足か対応記録の混入かを分けて見られます。
05工数削減シミュレーション
導入後 720件 × 3分 ÷ 60 = 36 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- オフィスビル・商業施設・ホテル・公共施設など数十から数百の現場で施設警備と機械警備を請け負い、管制センターが隊員からの問い合わせや発報の対応を24時間受けている警備会社。現場ごとの警備指令書が紙のファイルとPDFで分かれて置かれ、改訂のたびにどれが最新か分からなくなっている場合。夜勤や応援の隊員が入る現場が多く、その現場に詳しい隊長が不在のときに手順を探すのに時間がかかっている場合。
- 現場が数か所で、全員がすべての現場の手順を覚えている場合。警備指令書がまだ文書になっておらず、隊長の口伝えで回っている場合(先に指令書を書き起こすことから始めます)。契約先との取り決めで、警備指令書を社外のクラウドに置けない場合。なお、異常のときにどう動くかの最終の指示、警察・消防への通報の判断、人の命に関わる場面の判断は、この構成では代替できません。警備指令書に書かれた手順と連絡先を探して示すまでです。
07最小構成で試す方法
- 常駐の現場を3か所選び、それぞれの警備指令書のいま効いている版を1冊ずつそろえる
- 先月の管制の記録から、その3か所の問い合わせを30件選ぶ(発報、急病人、依頼を混ぜる)
- 管制の担当に、30件それぞれで、指令書のどの章のどの手順を伝えたかを書き出してもらう
- 指令書の暗証番号・鍵の番号・電話番号を伏せた写しを作り、現場ごとに分けて手元のAIサービスに読ませる
- 30件の状況を1件ずつ尋ね、「指令書の章の名前と手順の本文を引用して答えてください。電話番号は書かないでください」と指示する
3番目の書き出しは必ず先に済ませてください。 管制の担当が実際に伝えた手順が答えで、それと比べないと当たったかが決まりません。5番目では、指令書に無い手順を一般論で足していないか、手順の順番を並べ替えていないかを最優先で見ます。
| 出てきた内容 | 判断 |
|---|---|
| 担当が伝えたのと同じ章と手順が出た | Agent Search のデータストアに進む |
| 指令書に無い手順を補って答えた | 指示の書き方で直る。構成は有効 |
| そもそも指令書に該当の章が無い | 指令書の書き直しが先。 AIの問題ではない |
3行目は、試すと必ず何件か出ます。 失敗ではなく、隊長の頭の中にしか無かった手順が見つかったということです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 隣の現場の手順が出る | site_id の絞り込みを中継プログラムが必ず付ける。 現場が無ければ検索しない |
| 古い版の手順が出る | 版の期間をメタデータに書き、今日の日付で絞る |
| 答えの文に電話番号が出る | 指令書から番号を消し、連絡先は表から写す。答えの文の数字は中継プログラムでも伏せる |
| 手順の順番が入れ替わる | 指示に「指令書の順のまま」を明記する |
| その場の判断が手順として出る | 対応記録に basis を付け、答えにも書かせる |
| 絞り込みが効かない | 項目をスキーマで索引可能にする |
| 引用の印がずれる | 引用の位置は UTF-8 のバイト単位。文字の位置に直す |
| 夜間の手順が出ない | 時間帯を検索の文の先頭に付ける |
| 暗証番号が取り込まれた | 取り込みの前に伏せ字にし、取り込んだ文書を抜き取りで確かめる |
上の3行が、この構成の失敗のほとんどです。 どれも答えが「それらしく」出てしまうので、画面を見ただけでは気づけません。索引を作ったら、別の現場を選んで同じ質問を投げ、元の現場の手順が出ないことを必ず確かめてください。
下の2行も、早いうちに効いてきます。 夜間の手順が出ないのは、夜に問い合わせが多い警備の仕事では致命的です。暗証番号は、1件でも取り込まれたら、その現場の警報の設定を変えるところまで戻ります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 契約先の建物の巡回の経路、鍵の扱い、立入りを断る区域、異常のときの手順、契約先の担当者の連絡先、過去の異常の対応の記録です。建物の守りの弱いところが分かる情報で、外に出れば契約先に実害が出ます。
- 暗証番号・鍵の番号・金庫の位置は取り込まない … 手順を探すのに要りません。伏せた写しだけを取り込みます
- 置き場所を契約先に説明できるようにする … データストアの場所に日本は無く、
global・us・euから選びます。契約先との守秘の取り決めに、外部のクラウドに置くことが入っているかを、導入の前に確かめます - 見られる現場を配置で絞る … 隊員が引けるのは配置されている現場だけにします。辞めた隊員・配置の外れた隊員の権限は、配置の表の更新と同じ日に外します
- 隊員の指示は管制の担当が出す … 画面の答えは指令書の引用です。その場の状況に合うかは、隊員の話を聞いている担当が決めます
- 通報を検索に待たせない … 人の命に関わる状況では、通報が先です。画面の固定の文で示します
- 権限を超える行動を答えに出させない … 警備業法第15条のとおり、警備業務は特別な権限を与えられたものではありません。指令書に無い行動を一般論で補わせないことが、そのまま法令を守ることになります
使う人は、隊員と管制の担当です。警備業法第14条は、18歳未満の者は警備員となってはならないと定めています。
誤りが起きた場合のリスクは、隣の現場や古い版の手順を伝えて、隊員が誤った動きをすることです。 現場の絞り込み、版の期間、連絡先を書かせないこと、の3つで防ぎます。
10まず何から始めるか
1週目:指令書の版をそろえる
常駐の現場の指令書を集め、現場ごとに「いま効いている版」を1つに決めます。版の始まりの日が分からないものは、営業所と契約先に確かめます。
2週目:30件で試す
第8章のとおり、3か所の現場で30件の問い合わせを試します。指令書に該当の章が無かった件数を数えます。
3週目:指令書を章で分け、伏せ字にする
章の分け方を決め、暗証番号・鍵の番号・電話番号を伏せる規則を作ります。伏せたかを確かめる担当を決めます。
4週目:データストアを作る
Agent Search にデータストアを作り、現場と版で絞って探す画面を作ります。この時点では対応記録と連絡先表は入れず、指令書だけで始めます。
2か月目: 連絡先表の写しと、管制のシステムからの現場の受け渡しを足します。3か月目以降: 対応記録を足し、「違う」が押された件数と、手順が見つからなかった件数を毎月数えます。手順が見つからない問い合わせが、指令書の書き直しで月に数件まで減った時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Vertex AI Search が Agent Search へ改称中であること。answer メソッドの searchSpec.searchParams に filter を書けること、maxReturnResults が既定10・最大25であること。includeCitations(既定は false)、ignoreLowRelevantContent、promptSpec.preamble。groundingSpec の includeGroundingSupports と filteringLevel(FILTERING_LEVEL_LOW/FILTERING_LEVEL_HIGH)、根拠の弱い回答で LOW_GROUNDED_CONTENT、関係の薄い内容で NO_RELEVANT_CONTENT が返ること。引用の startIndex/endIndex が UTF-8 のバイト単位であること | Google Cloud: Get answers and follow-ups | 2026-10-15 |
絞り込みの構文(ANY()、日時の項目と ISO 8601 の比較、AND・OR と括弧)。項目をスキーマで索引可能にする必要があること。構造化データとメタデータ付きの非構造化データが対象であること | Google Cloud: Filter generic search for structured or unstructured data | 2026-10-15 |
メタデータ付きの非構造化データの JSON Lines の形(id、structData、content の mimeType と uri)。1ファイル200MB、一度に10万ファイルまでであること | Google Cloud: Prepare data for ingesting | 2026-10-15 |
データストアの場所が global・us・eu であること。マルチリージョンでは保存中のデータの所在をその地域に留められること | Google Cloud: Agent Search locations | 2026-10-15 |
| データソースのアクセス制御が Preview であること。データストアを作るときにしか有効・無効を決められないこと | Google Cloud: Use data source access control | 2026-10-15 |
| 警備業法第14条(18歳未満の者は警備員となってはならない)、第15条(警備業務は法律で特別に権限を与えられたものでないことに留意し、他人の権利及び自由を侵害してはならない)、第2条第1項第1号(施設警備) | e-Gov 法令API: 警備業法 | 2026-10-15 |
異常のときにどう動くかの最終の指示は、管制の担当と隊長が、警備指令書と契約先との取り決めにもとづいて行ってください。 本記事は上記の公式ページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1714)についてのご相談はこちらから。
