公共施設の窓口から出る「この使い方は許可できるか、使用料はいくらか」の質問に、施設の条例・規則・要綱と過去の回答を根拠に答える
公民館や体育館の窓口から届く「この使い方は許可できるか」「使用料はいくらか」「この団体は減免になるか」の照会に、その施設の条例・規則・減免の要綱と過去の回答から根拠の条項を探し、引用付きの回答案を返します。判断が要るものは所管課へ回します。
- 生成AI
- Gemini
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 連携・自動化
- Python
- 対象業界
- その他/教育/自治体
- 対象部門
- 総務
- 対象業務
- 問い合わせ対応/情報検索
- 主な課題
- 問い合わせが多い/属人化している/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 品質標準化/対応スピード向上/検索時間短縮
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 施設の窓口や指定管理者が、利用の申込みで迷ったことを所管課の担当に電話かメールで聞く
- 担当が例規集で、その施設の設置管理条例と施行規則を開く
- 減免や運用の話なら、課の共有フォルダで要綱と内規を探す
- 似た照会が前にあったかを、メールの履歴や表計算の回答集で探す
- 使用料の照会なら、料金表を見て時間帯・区分・加算を電卓で計算する
- 判断に迷うものは係長に相談し、回答をメールか電話で返す
- 人施設の窓口や指定管理者が、照会のフォームで施設、部屋、利用の内容、日時、団体の区分を入れて送る
- 自動中継プログラムが、施設の番号と利用の日付から絞り込みの条件を作る
- 自動使用料の照会なら、料金表の値から使用料をプログラムで計算する
- 自動Agent Search(Vertex AI Search)の answer メソッドが、その施設の条例・規則・要綱と過去の回答から該当する条項を探し、引用付きの回答案を返す
- 自動中継プログラムが、回答案を `answer`(条項で答えられる)/`refer`(所管課の判断が要る)に分ける
- 自動`answer` は窓口へ返す。`refer` は所管課の担当の待ち行列に入れる
- 人担当が `refer` の照会を読み、条項と過去の回答を確かめて判断し、回答を返す
- 人担当が判断した回答を、過去の回答集に登録する(翌晩に取り込まれる)
各工程の詳しい説明を読む
- 施設の窓口や指定管理者が、利用の申込みで迷ったことを所管課の担当に電話かメールで聞く
- 担当が例規集で、その施設の設置管理条例と施行規則を開く
- 減免や運用の話なら、課の共有フォルダで要綱と内規を探す
- 似た照会が前にあったかを、メールの履歴や表計算の回答集で探す
- 使用料の照会なら、料金表を見て時間帯・区分・加算を電卓で計算する
- 判断に迷うものは係長に相談し、回答をメールか電話で返す
(a)施設ごとに条例が違い、探すのに時間がかかる。 「使用の許可をしないことができる場合」の条項は、施設ごとの条例に書かれ、言い回しも少しずつ違います。どの施設の、どの版の条例かを確かめずに答えると、別の施設の条文で答えることになります。
(b)答えられる職員が限られる。 「物販を伴う催しは、公民館では原則として許可しない運用で、体育館ではロビーに限る」。こうした運用は内規と過去の回答にあり、長く担当している職員の頭の中にまとまっています。 異動の時期には回答が数日止まります。
(c)施設によって回答がぶれる。 同じ種類の照会に、ある施設では許可、別の施設では不許可と答えていたことが、後で利用者からの苦情で分かります。条例の違いによるものか、担当の判断の違いかが、記録からは分かりません。
(d)使用料の計算を誤る。 時間帯をまたぐ利用、市外の団体、入場料を取る催し、冷暖房の加算が重なると、計算が複雑になります。電卓での計算は、窓口でも課でも同じように誤ります。
- 【人】 施設の窓口や指定管理者が、照会のフォームで施設、部屋、利用の内容、日時、団体の区分を入れて送る
- 【自動】 中継プログラムが、施設の番号と利用の日付から絞り込みの条件を作る
- 【自動】 使用料の照会なら、料金表の値から使用料をプログラムで計算する
- 【自動】 Agent Search(Vertex AI Search)の answer メソッドが、その施設の条例・規則・要綱と過去の回答から該当する条項を探し、引用付きの回答案を返す
- 【自動】 中継プログラムが、回答案を
answer(条項で答えられる)/refer(所管課の判断が要る)に分ける - 【自動】
answerは窓口へ返す。referは所管課の担当の待ち行列に入れる - 【人】 担当が
referの照会を読み、条項と過去の回答を確かめて判断し、回答を返す - 【人】 担当が判断した回答を、過去の回答集に登録する(翌晩に取り込まれる)
5番目の振り分けを、規則で決めるのがこの設計の要です。 AIが「許可しない」「減免にならない」方向の回答を書いたもの、引用が要綱や内規だけで条例・規則に無いもの、過去の回答が施設ごとに分かれているものは、必ず refer にします。 利用を断る回答と、条例ではなく運用で答える回答は、人が確かめてから返します。
8番目を省くと、この構成は育ちません。 担当が判断した回答が回答集に残らなければ、次に同じ照会が来たときも refer になり、担当の手が減りません。
02今回想定するシステム構成
例規集(設置管理条例・施行規則) 要綱・内規 過去の回答集 料金表(表計算) │ 施設ごとに版と施行日を付ける │ │ 施設・区分・答えた日 ▼ ▼ ▼ Cloud Storage ── メタデータ(JSON Lines) 料金表の値(データベース) ▼ Agent Search(Vertex AI Search)── データストア(レイアウト パーサー、チャンク分割) │ facility_id/doc_kind/effective_from/effective_to/category ▼ 照会フォーム ──【トリガー】窓口・指定管理者の送信 ▼ 中継プログラム(Python、Cloud Run) ├──▶ 施設と日付から絞り込み ├──▶ 使用料の計算(料金表の値) ├──▶ answer メソッド:条項の引用と回答案 └──▶ answer / refer の振り分け ▼ 窓口へ返信 / 所管課の待ち行列
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | 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 メソッドです。 公式のドキュメントでは、検索の結果から回答を作る方法で、引用を付ける設定(includeCitations、既定は無効)、照会でない書き込みや敵対的な問いに答えない設定、関係の薄い内容で答えない設定(ignoreLowRelevantContent)、session を渡して前のやり取りを続ける機能があります。
条例と規則の取り込みには、レイアウト パーサーとチャンク分割を使います。 公式では、レイアウト パーサーは段落・表・リスト・見出しを検出し、チャンクに上位の見出しを付ける設定(includeAncestorHeadings)があり、チャンクの大きさは100〜500トークンです。条項が単独で引かれても、どの施設の条例の何条かが分かるように、見出しを付けます。
03どうやって実装するのか
処理の起点を決める
起点は、施設の窓口や指定管理者が照会フォームを送信したことです。 電話で受けていた照会をフォームに寄せます。施設、部屋、利用の日付、団体の区分が欠けた照会は、どの条例のどの版で答えるかが決まりません。 フォームで必須にしておけば、後段で聞き返す件数が減ります。
| フォームの項目 | 書き方 | 使い道 |
|---|---|---|
| 施設 | 一覧から選ぶ | 絞り込み |
| 部屋・設備 | 一覧から選ぶ | 料金表の行 |
| 利用の日付と時間 | 日付と開始・終了の時刻 | 版の絞り込み、料金の区分 |
| 団体の区分 | 市内/市外、営利/非営利、登録団体か | 料金と減免の区分 |
| 利用の内容 | 自由記述(催しの内容、入場料・物販の有無) | 検索の質問文 |
| 照会の種類 | 許可/使用料/減免/還付・取消/その他 | 振り分けの規則 |
もう一つのトリガーは、条例・規則・要綱の改正と、回答集への登録です。 例規集の更新や要綱の改正があったら、担当が新しい版を置き、メタデータの施行日を書きます。取り込みは毎晩まとめて行います。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 照会の内容 | フォームの6項目と、照会した施設・担当者 | 照会フォーム |
| 設置管理条例・施行規則 | 施設ごとの条文。許可の基準、許可しないことができる場合、使用料、減免、還付 | 例規集から書き出した写し |
| 要綱・内規 | 減免の要綱、施設ごとの運用の内規 | 所管課の共有フォルダ |
| 過去の回答集 | 照会の要旨、回答、根拠の条項、答えた日、施設、判断した担当 | 所管課のメールと表計算から作る |
| 料金表 | 施設・部屋・時間帯・曜日・区分ごとの単価、加算、端数の扱い | 施行規則の別表を値にしたもの |
質を決めるのは、すべての文書に付ける「施設」と「施行日」です。 条例は改正され、料金表は数年ごとに改定されます。利用の日付で効力のある版を選ばないと、改定前の料金や旧い条文で答えます。 来年度の予約の照会では、まだ施行されていない改正後の版で答える必要があることもあります。
過去の回答集は、1件1文書にします。 照会の要旨、回答、根拠の条項、答えた日、施設を見出しで分けます。根拠の条項が書かれていない古い回答は、取り込まないか、担当が条項を補ってから取り込みます。
データの取得方法を決める
条例・規則・要綱・回答は、1件ごとにファイルにして Cloud Storage に置きます。公式では、非構造化データは TXT・JSON・Markdown・PDF・HTML・DOCX・PPTX・XLSX・XLSM に対応し、メタデータは JSON Lines で、1行ごとに id、structData、content(mimeType と uri)を書きます。
{"id":"ord-kominkan-2025","structData":{"doc_kind":"ordinance",
"facility_id":["F-012","F-013","F-014"],"category":"公民館",
"effective_from":"2025-04-01T00:00:00Z",
"effective_to":"9999-12-31T00:00:00Z","fee_regime":"usage_fee"},
"content":{"mimeType":"text/html","uri":"gs://facility-rules/ord-kominkan-2025.html"}}
| 項目 | 中身 | 使い道 |
|---|---|---|
doc_kind | 条例/規則/要綱/内規/回答 | 振り分けの規則、表示 |
facility_id | その文書が適用される施設の番号(複数) | 絞り込み |
category | 施設の種類(公民館、体育館など) | 他の施設の回答を参考に出すとき |
effective_from/effective_to | 施行日と、廃止・改正の前日 | 利用の日付で版を選ぶ |
fee_regime | 使用料/利用料金(指定管理者の収入) | 料金の根拠の表示 |
照会のたびに、中継プログラムが絞り込みの条件を作ります。 公式の構文では、文字の項目は ANY() に並べた値のどれかと完全に一致するかを見られ、日時の項目は ISO 8601 の文字列と比べられます。
facility_id: ANY("F-013") AND effective_from <= "2026-11-15T00:00:00Z"
AND effective_to >= "2026-11-15T00:00:00Z"
日付は「照会した日」ではなく「利用する日」で入れます。 4月に改定がある年の2月に、5月の利用の照会が来たら、改定後の版で答えます。項目はスキーマで索引可能にしておかないと絞り込みに使えません。
料金表は検索に入れず、値としてデータベースに持ちます。 施行規則の別表を、施設・部屋・時間帯・曜日・区分・単価・加算・端数の扱いの列に起こします。中継プログラムが、フォームの日時と区分からこの表を引いて計算します。
AIへ渡す前に整形する
- 条例・規則を施設ごとに分ける … 1つの条例が複数の施設をまとめて定めている場合、
facility_idに全施設を並べます - 施行日を付ける … 例規集の改正履歴から、版ごとの施行日と廃止の前日を書きます
- 料金表を値にする … 施行規則の別表を表に起こし、担当2名で読み合わせます
- 回答集を整える … メールから照会と回答を拾い、根拠の条項を確かめて1件ずつ文書にします。個人名と団体名は区分に置き換えます
- 照会の文から個人情報を外す … 利用者の氏名、電話番号が書かれていたら、検索の質問文から外します
- 時間の区分を決める … 時間帯をまたぐ利用を、料金表の区分(午前・午後・夜間など)に割り付けます
3番目の読み合わせは省かないでください。 料金の計算はプログラムが正しく行っても、表に起こした単価が1つ違えば、その部屋の照会がすべて誤ります。 改定のたびに同じ読み合わせをします。
4番目で、個人名と団体名を外すのは、回答集が窓口に返る資料の根拠になるからです。 「○○サークルは減免」と書かれた回答が引用されると、別の団体の照会にその名前が出ます。
AIに処理させる
させるのは、その施設の条例・規則・要綱と過去の回答から該当する条項を探し、引用して回答案を書くことです。
| させること | 中身 |
|---|---|
| 該当する条項を探す | 照会の利用の内容に関係する条文(許可の基準、許可しないことができる場合、減免、還付) |
| 条項を引用する | 条例・規則の条番号と本文を、そのまま写す |
| 過去の回答を挙げる | 同じ施設、同じ種類の照会の過去の回答と、答えた日 |
| 確かめる点を挙げる | 条項を当てはめるために、窓口が申込者に確かめるべき事実(入場料の有無、物販の範囲) |
| させないこと | 理由 |
|---|---|
| 許可・不許可の決定 | 施設の管理者が決める。断る回答は所管課の確認を通す |
| 使用料の計算 | 料金表の値からプログラムが計算する |
| 減免の決定 | 要綱に照らして所管課が決める |
| 他の施設の条例で答えること | 施設ごとに条文が違う |
| 条例に無い運用を一般論で補う | 「公共施設では一般に」と書くと、根拠の無い回答になる |
4つ目の「確かめる点を挙げる」が、窓口にいちばん効きます。 「物販を伴う催し」の照会に、条例は「営利を目的とする場合」と書いています。物販が営利に当たるかは、売上をどうするか、参加費を取るかで変わります。 窓口が申込者に何を聞けばよいかが分かれば、同じ照会を2度回さずに済みます。
answer メソッドの設定は次のようにします。
| 設定 | 値 | 理由 |
|---|---|---|
includeCitations | 有効 | 条項と過去の回答に出典を付ける |
ignoreLowRelevantContent | 有効 | 関係の薄い条文で答えない |
ignoreNonAnswerSeekingQuery | 有効 | 照会でない書き込みに答えない |
filter | 施設、利用の日付 | その施設の効力のある版だけを引く |
includeGroundingSupports | 有効 | 根拠の弱い文に印を付ける |
answerLanguageCode | ja | 日本語で答えさせる |
preamble | 下の指示 | 答え方の規則を与える |
指示内容を固定する
answer メソッドの preamble に、次の指示を入れます。
あなたは市の公の施設を所管する課の担当として、施設の窓口や
指定管理者からの照会に、条例・規則・要綱と過去の回答を根拠に
回答案を作る立場です。読むのは施設の窓口の職員です。
【前提】
検索の文の最初に、施設、部屋、利用の日付、団体の区分、照会の種類が
並んでいます。検索の対象は、その施設に適用される、利用の日付に
効力のある条例・規則・要綱と、その施設の過去の回答だけです。
【答え方】
1. 照会に関係する条項を、条例・規則の名前と条番号を付けて
本文のまま引用してください。
2. 同じ種類の過去の回答があれば、答えた日と要旨を挙げてください。
3. 条項を当てはめるために、窓口が申込者に確かめるべき事実を
箇条書きにしてください。
4. 最後に、条項から読める範囲で回答案を2〜3文で書いてください。
【厳守事項】
- 検索結果に無い条文、他の施設の条文で答えないでください。
- 許可する・しない、減免する・しないを決めないでください。
「〜の場合は許可しないことができると定められています」のように、
条項の書き方のまま書いてください。
- 「使えません」「お断りしてください」と書かないでください。
- 使用料の金額を書かないでください。計算もしないでください。
- 要綱・内規・過去の回答だけが根拠のときは、そのことを書いてください。
- 一般的な公共施設の運用や他の自治体の例で補わないでください。
- 該当する条項が見つからないときは、
「該当する条項は見つかりませんでした。所管課が確認します」
とだけ書いてください。
- 利用者や団体の名前を書かないでください。
「使えません」を名指しで禁じるのは、条例の書き方と窓口の言葉の間に段差があるからです。 条例は「許可しないことができる」と書き、許可しない場合があることを示しているだけです。AIはこれを「使えません」と言い換えたがります。 その一文が窓口で読み上げられると、判断を経ていない利用の拒否になります。
「要綱・内規だけが根拠のときは書く」は、振り分けの材料にするためです。 条例ではなく運用で答える回答は、運用が変わっていることがあるので、所管課が確かめてから返します。
出力形式を固定する
answer メソッドの返り値と料金の計算を、中継プログラムが次の形にまとめます。
{
"inquiry_id": "",
"facility_id": "",
"use_date": "",
"inquiry_type": "permission | fee | exemption | refund | other",
"citations": [
{ "doc_kind": "ordinance | rule | guideline | internal | answer",
"title": "", "article": "", "quote": "", "effective_from": "", "uri": "" }
],
"facts_to_confirm": [],
"fee": { "regime": "usage_fee | facility_charge", "amount": 0,
"breakdown": [ { "item": "", "unit": 0, "hours": 0, "subtotal": 0 } ] },
"answer_text": "",
"route": "answer | refer",
"refer_reason": []
}
citations は、answer メソッドの references から取ります。公式では、citations の sources が referenceId で references を指し、references の chunkInfo に本文の断片と文書のメタデータが入ります。引用の位置(startIndex/endIndex)は UTF-8 のバイト数なので、日本語の文を文字数で切るとずれます。
fee はAIの返り値を使わず、中継プログラムが料金表から作ります。regime が facility_charge(指定管理者の利用料金)の施設では、「指定管理者が定め市が承認した料金」であることを表示します。
route は次の規則で決めます。
refer_reason | 立てる条件 |
|---|---|
restrictive | 回答案に「許可しない」「減免の対象外」など、利用を制限する方向の語がある |
operation_only | citations に条例・規則が無く、要綱・内規・回答だけ |
no_citation | 該当する条項が見つからない、または answerSkippedReasons が返った |
exemption | 照会の種類が減免 |
weak_support | 根拠のスコアが低い文がある |
どれにも当たらないものだけが answer です。 JSONにする理由は、この振り分けを規則で行うためです。answer_text の文章だけでは、利用を制限する回答か、条例が根拠かを機械で判断できません。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 照会フォーム | フォームの送信を中継プログラムが受ける | 6項目を受け取る |
| 料金表 | データベースの読み出し | 使用料を計算する |
| Agent Search | answer メソッド | 条項の引用と回答案 |
| 窓口・指定管理者 | メールか庁内のチャット | answer の回答を返す |
| 所管課の待ち行列 | 共有の一覧に1行足す | refer の照会を回す |
| 過去の回答集 | 担当が判断した回答を登録 | 翌晩に取り込む |
待ち行列の1行には、照会の内容、引用された条項、refer_reason、計算した使用料を付けます。 担当は、探すところからではなく、判断するところから始められます。
施設予約システムには書き込みません。 許可の手続きは、窓口が回答を見て予約システムで行います。
人が確認する
人が確認するのは refer の照会です。 answer の回答は窓口へ直接返しますが、運用を始めてから2か月は、全件を所管課の担当が見てから返します。
refer_reasonを見る … 制限の方向か、運用だけが根拠か、減免かを確かめます- 条項を当てはめる … 引用された条項と、窓口が確かめた事実から、許可・減免を判断します
- 過去の回答と違う判断をするときは理由を書く … 運用が変わった、施設の事情が違う、など
- 回答集に登録する … 根拠の条項と判断の理由を付けて登録します
2か月の全件確認で見るのは、answer で返したものの中に、担当が見れば refer にしたものが無いかです。 あれば、振り分けの語の一覧が足りていません。1割を超えるなら、answer の直接の返信を始めません。
目標は、150件をならして1件4分です。 answer で返る照会には担当の手がかからず、refer の照会は条項を当てはめて判断するので10分前後かかります。
例外に対処する
| 起きること | 対応 |
|---|---|
| フォームの必須項目が欠けている | 送信できないようにする |
| 利用の日付に効力のある版が無い | 絞り込みを外さず no_citation で所管課へ。版の登録漏れを疑う |
| 改正が議決済みで施行前 | 施行日を付けて取り込み、利用の日付で選ばれるようにする |
| 料金表に無い区分・時間帯 | 金額を出さず refer にする |
| 回答に金額が書かれた | 回答の金額を消し、料金表の計算だけを出す |
| 照会に利用者の個人名・電話番号がある | 検索の質問文から外す |
| 複数の施設にまたがる催し | 施設ごとに分けて呼び、結果を並べる |
| 検索の呼び出しが失敗した | 窓口に「受け付けました。所管課から返します」と返し、待ち行列へ |
5行目の金額の検知は、プロンプトとは別に、中継プログラムの文字列の照合で行います。 「円」と数字の並びを見つけたら消します。最後の門は機械の照合に置きます。
記録を残す
- 照会の内容(6項目)、照会した施設と担当者、日時
- answer メソッドへの要求(絞り込みの条件、
preambleの版)と返り値の全文 - 使用料の計算に使った料金表の版と、内訳
routeとrefer_reason、所管課の担当の判断と理由- 窓口へ返した回答と、返した日時
料金表の版を残すのは、後から使用料の誤りを問われたときのためです。 その日の表の単価で計算したことを示せないと、還付や追加の徴収の範囲が決まりません。
04実装レベルの3段階
最小構成では件数がさばけません。 60施設の条例を毎回貼ることはできないので、確かめるための段階です。 半自動化で、16分が9分程度になります。 探す時間は減りますが、担当が全件を読んで返し、使用料を電卓で計算する作業が残ります。本格構成で4分になり、この段階が本記事の想定です。 差が大きいのは、answer の照会に担当の手がかからなくなることと、使用料の計算がなくなることです。
05工数削減シミュレーション
導入後 150件 × 4分 ÷ 60 = 10 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 公民館・体育館・市民会館・コミュニティセンターなど数十の公の施設を持ち、施設ごとに設置管理条例・施行規則・使用料の表・減免の要綱が分かれている市町村。施設の窓口や指定管理者から所管課へ「この使い方は許可できるか」「この団体は減免になるか」の照会が毎月百件を超え、答えられる職員が限られている場合。過去の照会と回答をメールや表計算で残している場合。
- 公の施設が数か所で、条例と料金表を担当者が覚えていられる場合。施設の利用の可否を、条例の根拠を確かめずにAIの回答だけで決めたい場合(許可・不許可と減免の決定は、施設の管理者と所管課が行います)。過去の回答が残っておらず、条例・規則の写しも最新の版がそろっていない場合。
07最小構成で試す方法
- 照会の多い公民館と体育館の2施設について、設置管理条例・施行規則・減免の要綱を例規集から書き出す
- 過去3か月の照会と回答を、メールから20件拾う(断った例、減免の例を数件入れる)
- 手元のAIサービスに条例・規則・要綱を貼り、照会を1件ずつ入れる
- 第7章の指示を貼り、「条項を引用し、許可・減免を決めず、金額を書かない」と指示する
- 出てきた回答案を、当時の担当の回答と突き合わせる
| 出てきた内容 | 判断 |
|---|---|
| 当時の担当と同じ条項を引用した | 検索基盤への取り込みに進む |
| 「使えません」と書いた、金額を計算した | 指示で直るか試す。直らなければ禁止の語の照合を最初から作る |
| 条例に無い運用で答えた | 要綱・内規を貼り足す。運用が文書になっていないなら、文書にするのが先 |
3行目が出ることは珍しくありません。 失敗ではなく、窓口で答えている運用のうち、どれが文書になっていないかが分かったということです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 回答が「使えません」になる | 指示で名指しで禁じ、制限の方向の回答は必ず refer にする |
| AIが使用料を計算する | 金額を禁じ、料金表の値からプログラムで計算する |
| 他の施設の条文で答える | facility_id で絞り込む |
| 改定前の料金・旧い条文で答える | 利用の日付で効力のある版を選ぶ |
| 運用だけを根拠に答えて返る | 条例・規則の引用が無いものは refer |
| 料金表の単価の起こし間違い | 改定のたびに2名で読み合わせる |
| 回答集から団体名が出る | 取り込みの前に区分に置き換える |
| 指定管理者の利用料金を使用料として説明する | fee_regime で根拠を分けて表示する |
| 項目で絞り込めない | スキーマで項目を索引可能にする |
| 引用の位置がずれる | 位置は UTF-8 のバイト数。文字数で切らない |
上の2行が、この構成の失敗のほとんどです。 前者は利用の拒否、後者は誤った徴収で、どちらも住民に直接届く誤りです。 AIの外の規則と計算で守ります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 施設の条例・規則・要綱(公開の情報)、過去の照会と回答(利用者や団体の名前、催しの内容を含みうる)、照会のフォームの内容です。
- 利用の拒否を自動で返さない … 地方自治法は、正当な理由がない限り住民が公の施設を利用することを拒んではならず、不当な差別的取扱いをしてはならないと定めています。制限の方向の回答は、必ず所管課の担当が条項を当てはめてから返します
- 思想・信条にかかわる照会は特に慎重に扱う … 政治団体・宗教団体の集会の照会は、
restrictiveに当たらなくてもreferにする設定にします - 回答集から個人名と団体名を外す … 窓口に返る資料に、他の利用者の名前が出ないようにします
- 照会の記録を必要以上に残さない … 申込者の個人情報は検索に入れず、照会の記録の保存期間を決めます
- 使用料の根拠を表示する … 条例の使用料か、指定管理者の利用料金かを必ず示します
- データの置き場所を確かめる … 照会の記録を外部のクラウドに置くことになります。データストアを作るリージョンと、市の情報セキュリティの規程を合わせて確かめてください
誤りが起きた場合のリスクは、根拠を確かめないまま利用を断ることと、誤った使用料を伝えることです。 どちらも、AIの回答をそのまま窓口へ返す経路から起きるので、振り分けの規則と料金の計算をAIの外に置きます。
10まず何から始めるか
1週目:照会の多い施設を決め、条例・規則に施行日を付ける
過去3か月の照会を数え、照会の多い施設の種類を2つ選びます。その施設の設置管理条例・施行規則・減免の要綱を書き出し、版ごとの施行日を付けます。
2週目:20件の照会で試す
手元のAIサービスに条例と要綱を貼り、過去の照会20件を入れます。「使えません」と書いていないか、金額を計算していないかを最優先で見ます。
3週目:料金表を値に起こし、回答集を整える
2つの施設の種類の料金表を起こして読み合わせ、過去の回答を根拠の条項付きで20件ほど文書にします。
4週目:データストアを作り、所管課で使う
条例・規則・要綱・回答集を取り込み、所管課の担当が検索画面で照会を入れて回答案を見る運用を始めます。
2か月目: 照会フォーム、料金の計算、振り分けの規則を作り、全件を担当が見てから窓口へ返します。3か月目以降: answer の中に担当が refer にしたものが1割未満になったら、answer の直接の返信を始め、施設の種類を広げます。全施設の条例に施行日が付き、料金表の改定のたびの読み合わせが手順になった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Vertex AI Search が Agent Search へ改称中であること。answer メソッドが検索の結果から回答を作り、session で前のやり取りを続けられること。includeCitations が既定で無効であること。ignoreAdversarialQuery・ignoreNonAnswerSeekingQuery・ignoreLowRelevantContent、preamble、answerLanguageCode、検索の指定の filter。includeGroundingSupports で文ごとに 0〜1 の根拠のスコアが返ること。answerSkippedReasons。引用の startIndex/endIndex が UTF-8 のバイト単位であること。references の chunkInfo | Google Cloud: Get answers and follow-ups | 2026-10-13 |
絞り込みの ANY() が列挙した値との完全一致を見ること、AND/OR、日時の項目を ISO 8601 の文字列と比べられること、項目を索引可能にする必要があること | Google Cloud: Filter custom search for structured or unstructured data | 2026-10-13 |
非構造化データの対応形式。メタデータを JSON Lines で id・structData・content(mimeType・uri)として書くこと | Google Cloud: Prepare data for ingesting | 2026-10-13 |
レイアウト パーサーが段落・表・リスト・見出しを検出すること。チャンクの大きさが100〜500トークンで、includeAncestorHeadings で見出しを付けられること | Google Cloud: Parse and chunk documents | 2026-10-13 |
| 地方自治法第244条(正当な理由がない限り住民が公の施設を利用することを拒んではならないこと、不当な差別的取扱いの禁止)、第244条の2(設置・管理は条例で定めること、指定管理者、利用料金を指定管理者の収入とできること、利用料金は条例の定めるところにより指定管理者が定め承認を受けること)、第225条(公の施設の利用につき使用料を徴収できること)、第228条(使用料に関する事項は条例で定めること) | e-Gov 法令API: 地方自治法 | 2026-10-13 |
利用の許可・不許可、使用料、減免の決定は、各施設の条例・規則と所管課の判断に従ってください。 本記事は Google Cloud の公式ドキュメントと e-Gov の法令データで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1403)についてのご相談はこちらから。
