旅館の予約担当と客室係からの宿泊約款・キャンセル規定・プランの条件・館内の決まりの質問に、根拠の条文付きでチャットで答える
予約担当や客室係が宿泊客から受けた質問をチャットに打つと、予約番号からプランと予約経路を引き、その予約に効くプランの条件・宿泊約款・館内の利用規則から根拠の条文付きで答えます。宿泊の拒否や違約金の減免など判断の要るものは支配人へ回します。
- 生成AI
- Gemini
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 連携・自動化
- Python
- 対象業界
- 宿泊/飲食
- 対象部門
- カスタマーサポート
- 対象業務
- 問い合わせ対応/情報検索
- 主な課題
- 問い合わせが多い/属人化している/確認ミスが多い
- AIで行う処理
- 対話
- 主な効果
- 品質標準化/対応スピード向上/教育コスト削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 予約担当・フロント・客室係が、宿泊客から決まりに関する質問を受ける
- 自分で分かるものは答え、分からないものは「確認して折り返します」と預かる
- 予約システムで、その客の予約のプランと予約経路を確かめる
- プランの条件の表計算、宿泊約款と利用規則のファイルを開いて、該当する箇所を探す
- 分からなければ、フロントの責任者に内線で聞く。責任者が同じ資料を探し直す
- 宿泊客に答える。取消料などは金額を予約システムで確かめて伝える
- 判断の要るもの(宿泊の継続を断る、取消料をまける)は、責任者が支配人に相談する
- 人予約担当・フロント・客室係が、館内のスマートフォンかフロントの端末のチャットに予約番号と質問を打つ(例:「予約番号 R-58213、明日の取消はいくらかかるか」)
- 自動中継プログラムが予約システムからプランコード、予約経路、予約を受けた日、人数、泊数を引く
- 自動質問を、取消・変更/料金/食事/館内の決まり/その他に分け、その種類で足りない条件があれば選択肢で聞き返す
- 自動回す条件(宿泊の拒否・契約の解除・取消料の減免・損害の賠償・苦情)に当たれば、答えを作らずに責任者へ回す
- 自動その予約に効くプランの条件・宿泊約款・利用規則に絞って、Agent Search(旧 Vertex AI Search)の answer メソッドが根拠付きで答える
- 自動取消料の率は、プランの条件表から中継プログラムが引いて回答に添える。金額の計算はしない
- 人従業員は、根拠の条文とプランの条件を画面で確かめてから宿泊客に伝える
- 人責任者は、回ってきた質問だけを、引いた予約の条件を見て判断する
各工程の詳しい説明を読む
- 予約担当・フロント・客室係が、宿泊客から決まりに関する質問を受ける
- 自分で分かるものは答え、分からないものは「確認して折り返します」と預かる
- 予約システムで、その客の予約のプランと予約経路を確かめる
- プランの条件の表計算、宿泊約款と利用規則のファイルを開いて、該当する箇所を探す
- 分からなければ、フロントの責任者に内線で聞く。責任者が同じ資料を探し直す
- 宿泊客に答える。取消料などは金額を予約システムで確かめて伝える
- 判断の要るもの(宿泊の継続を断る、取消料をまける)は、責任者が支配人に相談する
(a)予約経路の取り違えが起きる。 同じ名前のプランでも、予約サイト経由の予約はそのサイトに出した条件で受けています。自社サイトの条件で「3日前までは無料」と答え、後で予約サイトの条件では違っていたと分かる。 宿泊客との行き違いの多くはここから始まります。
(b)決まりを確かめる先が人に集まる。 約款・プランの条件・利用規則の三つは別々の場所にあり、どれに何が書いてあるかを分かっているのは、長く勤めたフロントの責任者だけです。新人の予約担当は、1日に何度も内線をかけます。
(c)季節雇用の客室係に決まりが行き渡らない。 繁忙期には短期の客室係と外国籍の従業員が増え、食事の席で聞かれた質問に、その場で答えられない客室係が多くなります。
(d)判断の要る話が、普通の質問に混ざって届く。 「連れの具合が悪いので残りの泊まりを取り消したい」は、支配人がまけるかを決める話で、文書の率で答えると後から覆すことになります。
- 【人】 予約担当・フロント・客室係が、館内のスマートフォンかフロントの端末のチャットに予約番号と質問を打つ(例:「予約番号 R-58213、明日の取消はいくらかかるか」)
- 【自動】 中継プログラムが予約システムからプランコード、予約経路、予約を受けた日、人数、泊数を引く
- 【自動】 質問を、取消・変更/料金/食事/館内の決まり/その他に分け、その種類で足りない条件があれば選択肢で聞き返す
- 【自動】 回す条件(宿泊の拒否・契約の解除・取消料の減免・損害の賠償・苦情)に当たれば、答えを作らずに責任者へ回す
- 【自動】 その予約に効くプランの条件・宿泊約款・利用規則に絞って、Agent Search(旧 Vertex AI Search)の answer メソッドが根拠付きで答える
- 【自動】 取消料の率は、プランの条件表から中継プログラムが引いて回答に添える。金額の計算はしない
- 【人】 従業員は、根拠の条文とプランの条件を画面で確かめてから宿泊客に伝える
- 【人】 責任者は、回ってきた質問だけを、引いた予約の条件を見て判断する
4番目が、この設計の分かれ目です。 回すかどうかは、質問の種類と、聞き返しで選ばれた値から、中継プログラムの規則で決めます。 「具合が悪い」「事情がある」「まけてほしい」に当たる選択肢が選ばれたら、率が文書に書いてあっても答えません。AIに「判断が要るか」を考えさせると、約款に取消料の条文があるので、それを答えてしまいます。
6番目で率を検索に頼らないのも、意図してのことです。 取消料の率はプランの条件表に、経路ごと・日数ごとに数値で持っています。数値は表から機械で引くほうが確実で、文章から読ませると、隣の列の率を拾う誤りが起きます。 検索に任せるのは、条文の言葉で説明する部分だけです。
02今回想定するシステム構成
館内のスマートフォン/フロントの端末のチャット(従業員) ▼【トリガー】予約番号と質問の送信 中継プログラム(Python、Cloud Run) ├──▶ 予約システム:プランコード・予約経路・予約日・人数・泊数 ├──▶ 質問の種類の判定 → 聞き返しの選択肢 ├──▶ 回す条件 → 責任者の待ち行列 ├──▶ プランの条件表:経路別・日数別の取消料の率 ▼ Agent Search(Vertex AI Search)── answer メソッド │ データストア:宿泊約款+プランの条件+利用規則+過去の回答集 │ 絞り込み:plan_code/channel/valid_from/valid_to/doc_type │ 閲覧の範囲:旅行会社との契約条件は予約担当だけ ▼ 中継プログラム ── 根拠の版が予約日に合っているかを確かめる ├──▶ 回答・根拠・取消料の率を返す └──▶ 答えられない・版が合わない → 責任者の待ち行列
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Vertex AI Search(Agent Search)の answer メソッド | Azure AI Search、Amazon OpenSearch Service |
| 生成AI | Gemini(answer メソッドの回答の生成に使うモデル) | ─ |
| 連携 | 中継プログラム(Python。Cloud Run で動かし、チャット・予約システム・検索・待ち行列をつなぐ) | Node.js で同じものを書く |
| 認証 | 従業員の Google アカウント(グループで予約担当・フロント・客室係を分ける) | Microsoft Entra ID(Workforce Identity Federation でつなぐ) |
| 保管 | Cloud Storage(約款・プランの条件・利用規則の原本とメタデータ) | ─ |
予約システムは新しく足すものではなく、読むだけです。最初の準備は、プランの条件を「プランコード×予約経路×版」の表にそろえることです。 今は季節ごとの表計算に散らばっています。
検索の土台は、Agent Search(Vertex AI Search から改称中)の answer メソッドです。 検索の結果から回答を作り、出典を付けられます。セッションを使った複数回のやり取りに対応し、質問の言い換えは既定で有効です。関係の薄い内容しか無いときは回答を作らない設定があり、回答の根拠の強さを示すスコアを返し、低い回答を落とす設定もあります。
約款の土台は、観光庁のモデル宿泊約款です。 多くの旅館は、これをひな形にして自館の約款を作っています。モデル宿泊約款は、約款に定めのない事項は法令等または慣習によるとし、宿が特約に応じたときは、その特約が約款より優先するとしています(第1条)。プランの条件が約款より先に効く理由は、ここにあります。違約金は別表第2に掲げるところにより申し受けるとし、旅館用の別表は、人数の区分と、取消の通知を受けた日の区分ごとに率を書き込む様式になっています(率の数値は空欄で、各館が埋めます)。
03どうやって実装するのか
処理の起点を決める
起点は、従業員がチャットに予約番号と質問を送ったことです。 チャットは館内のスマートフォンとフロントの端末から開き、従業員の Google アカウントでログインします。ログインした従業員の所属(予約担当/フロント/客室係)が、閲覧の範囲と答え方の長さを決めます。
予約番号を必須にします。 予約に関係しない質問(「大浴場は何時まで」)もありますが、それは「予約なし」を選んで送ります。予約番号のある質問は、必ずその予約の条件で答えます。 予約番号を省いて質問すると、どのプランのどの版で答えるかが決まらないからです。
1件の質問は、1つのセッションで最後まで続けます。 「では1名だけ減らす場合は」のような続けての質問も同じセッションでつなぎ、別の予約の質問は新しいセッションで始めます。 前の予約の条件が言い換えの中に残るからです。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 質問 | 従業員が打った質問の文、選んだ聞き返しの値 | チャット |
| 予約の情報 | プランコード、予約経路、予約を受けた日、人数(大人・子供の区分)、泊数、宿泊日 | 予約システム |
| プランの条件表 | プランコード×予約経路×版ごとの取消料の率、食事、子供料金、連泊の扱い、ペットの可否 | 予約課が作る表 |
| 宿泊約款 | 自館の約款の全文、別表第1(料金の内訳)、別表第2(違約金) | 共有フォルダのPDF |
| 館内の利用規則 | 大浴場・食事処の時間、喫煙、ペット、門限、駐車場、持ち込み | 共有フォルダのPDF |
| 過去の回答集 | 責任者が答えた質問と回答、根拠、日付 | 責任者の記録 |
| 回す条件の表 | 質問の種類ごとに、聞き返す項目と選択肢、答えずに回す値 | フロントの責任者が作る表 |
宿泊客の氏名や連絡先は、この構成には入れません。 予約システムから引くのはプランと経路と人数と日付だけで、誰の予約かは画面に出しません。 決まりを答えるのに、宿泊客の名前は要らないからです。
質を決めるのは、回す条件の表です。 「事情がある」「体調」「天候で交通機関が止まった」「まけてほしい」「他の客とのもめごと」のような値が選ばれたら、答えを作らずに回す、という規則をこの表に書きます。 天候による取消は、館によって取消料を取らない運用をしていることがあり、それは支配人がその日に決めることです。
データの取得方法を決める
約款・プランの条件・利用規則・回答集は、Cloud Storage に置いてデータストアに取り込みます。 文書ごとのメタデータに、文書の種類、プランコード、予約経路、適用開始日、適用終了日、閲覧の範囲を持たせます。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 文書の種類(約款/プラン/規則/回答集) | メタデータ | 絞り込みと、根拠の優先順の表示 |
| プランコード、予約経路 | メタデータ | その予約に効くプランの条件だけに絞る |
| 適用開始日・終了日 | メタデータ | 予約を受けた日に効いていた版だけに絞る |
| 閲覧の範囲 | acl_info | 旅行会社との契約条件を予約担当だけに出す |
絞り込みの式は、プランと経路と版で書きます。 項目を索引可能にしておけば、(doc_type: ANY("plan") AND plan_code: ANY("SP24A") AND channel: ANY("ota_b")) OR doc_type: ANY("terms", "house_rules") に、valid_from <= "2026-08-14" のような日付の条件を加えて書けます。日付は ISO 8601 の形式でメタデータと検索の文をそろえます。 プランの条件は予約を受けた日の版で、利用規則は宿泊日の版で絞ります。
旅行会社との契約条件には、閲覧の範囲を付けます。 そこには卸の料金も書かれているため、acl_info に予約担当のグループだけを書き、客室係の検索には出しません。この設定はデータストアの作成時にしか選べません。アクセス制御はプレビューの機能なので、使わない場合は契約条件だけを別のデータストアに分け、予約担当の画面からしか呼ばない形にします。
取消料の率は、データストアではなく表から引きます。 中継プログラムがプランの条件表を、プランコード・予約経路・版・取消の通知を受ける日の区分で引き、率をそのまま回答に添えます。
AIへ渡す前に整形する
- プランの条件を表にそろえる … 季節ごとの表計算を、プランコード×予約経路×版の1枚の表にします。予約サイトに条件を変えて出したプランは、経路ごとに行を分けます
- プランの条件を文書にも起こす … 表の各行から、取消料・食事・子供料金・連泊・ペットの条件を文章にした1ページの文書を作り、メタデータを付けます
- 約款を条ごとに分ける … 約款のPDFは条の見出しが付いた形のまま取り込み、別表は表として読ませます
- 利用規則を場所ごとに分ける … 大浴場、食事処、客室、駐車場のように場所の見出しを立てます
- 版の適用開始と終了を付ける … プランを作り直すたびに、旧版に終了日を書きます
- 回答集を整える … 根拠の条文を書き添え、今の約款やプランで通用しない回答には終了日を付けます
- 見出しを断片に含める … データストアの作成時に分割を有効にし、
includeAncestorHeadingsを有効にします
2番目の「表を文書にも起こす」が、この構成でいちばん効きます。 検索は文章を引くもので、表計算の1行からは「このプランは夕食なしで、子供は添い寝のみ」という説明が出てきません。率は表から機械で引き、説明は文書から検索で引く、と役割を分けます。
7番目は、データストアを作る前に決めます。 分割はデータストアの作成のあとでは有効にも無効にもできず、見出しを含める設定は既定では無効です。 利用規則の「午後11時まで」という断片は、見出しが無いと大浴場の話か食事処の話か分かりません。分割の大きさは100〜500トークンで、既定は500です。
AIに処理させる
させるのは、予約の条件に当たる約款・プランの条件・利用規則の記載を見つけ、従業員が宿泊客にそのまま伝えられる短い答えを、根拠を付けて返すことです。 何を聞き返すか、何を回すかは、回す条件の表で中継プログラムが決めます。
| 要素 | 中身 | 根拠 |
|---|---|---|
| 答え | 質問への答えを2〜3文 | プランの条件、約款、利用規則 |
| 根拠の順 | プランの条件が先、約款が後 | 約款の特約の扱い |
| 伝え方の注意 | 宿泊客へ伝えるときに言い添えること | 回答集 |
| 確かめること | 予約システムで見るべき項目 | 回答集 |
answer メソッドの設定は次のようにします。
| 設定 | 値 | 理由 |
|---|---|---|
session | 質問ごとのセッション | 聞き返しと続けての質問をつなぐ |
includeCitations | 有効 | 回答に条文とプランの条件を付ける |
ignoreLowRelevantContent | 有効 | 文書に無い話に答えない |
ignoreAdversarialQuery | 有効 | 決まりと関係の無い問いかけを退ける |
groundingSpec の filteringLevel | FILTERING_LEVEL_HIGH | 根拠の弱い回答を出さない |
filter | プラン、経路、版、文書の種類 | その予約に効く文書だけにする |
preamble | 下の指示 | 答え方の規則を与える |
filteringLevel を高くすると、答えが返らずに責任者へ回る質問が増えます。 最初の1か月は回る件数を見て、多すぎれば低い設定と比べます。
| させないこと | 理由 |
|---|---|
| 宿泊の拒否・契約の解除の判断 | 事情を聞いて支配人が決める |
| 取消料の減免の判断 | その日の事情と宿の方針で支配人が決める |
| 金額の計算 | 予約システムで確定させる |
| 一般的な旅館の慣習で補う | 自館の約款と違いうる |
| 他のプランの条件の当てはめ | プランごとに条件が違う |
4行目がいちばん起きやすい失敗です。 回答を作るモデルは、一般的な旅館の取消料の相場を知っています。それで補うと、自館のどこにも書いていない率が、自館の決まりのように宿泊客へ伝わります。
指示内容を固定する
answer メソッドの preamble に、次の指示を入れます。
あなたは旅館のフロントの責任者として、
予約担当・フロント・客室係から、宿泊客に聞かれた決まりの質問に答えます。
読むのは、宿泊客を待たせて確かめている従業員です。短く答えてください。
【前提】
検索の文の最初に、予約経路、プランコード、予約を受けた日、
宿泊日、人数、泊数、質問の種類が並んでいます。
その予約に当たる記載だけを使って答えてください。
【根拠の順】
プランの条件に書いてあることを先に使ってください。
プランの条件に書いていないことだけ、宿泊約款と館内の利用規則で答えてください。
プランの条件と約款が違うときは、プランの条件で答え、そのことを書いてください。
【答え方】
1. 最初に、宿泊客に伝える答えを2〜3文で書いてください。
2. 次に、根拠の文書の名前と条(またはプランコードと版)を書いてください。
3. 宿泊客に伝えるときに言い添えることがあれば、1つだけ書いてください。
【厳守事項】
- 検索結果の文書に書かれていることだけで答えてください。
一般的な旅館の慣習や、他の宿の決まりの知識で補わないでください。
- 取消料・追加料金の金額を計算しないでください。
率は別に表示されるので、文章の中で数字を作らないでください。
- 宿泊を断るか、契約を解除するか、取消料をまけるかを書かないでください。
そうした質問には「責任者へ回します」とだけ書いてください。
- 別のプラン、別の予約経路の条件を並べないでください。
- 該当する記載が見つからないときは、
「プランの条件・約款・利用規則に該当する記載が見つかりません。責任者へ回します」
とだけ書いてください。
「プランの条件を先に使う」が、この指示の要です。 モデル宿泊約款は、宿が特約に応じたときは特約が約款より優先するとしています。プランの条件は、その予約についての特約にあたる位置にあります。 指示が無いと、約款の一般的な条文を先に引き、プランで変えている点を落とします。
検索の文は、中継プログラムが組み立てます。 例えば「経路:予約サイトB、プラン:SP24A(版:2026年8月)、予約日:2026-08-14、宿泊日:2026-10-08、大人2名・子供1名(小学生)、1泊。質問の種類:取消・変更。前日の取消の扱いと、子供1名だけ減らす場合の扱いを教えてください」のように、予約の条件を先に並べ、従業員の質問の文を最後に足します。
出力形式を固定する
answer メソッドの応答を、中継プログラムが次の形に整えて、チャットと記録に渡します。
{
"inquiry_id": "",
"session_id": "",
"staff_role": "reservation | front | room_attendant",
"booking": { "booking_ref": "", "plan_code": "", "plan_version": "", "channel": "", "booked_on": "", "stay_date": "", "adults": 0, "children": 0, "nights": 0 },
"category": "cancel_change | charge | meal | house_rule | other",
"status": "answered | escalated | skipped",
"escalate_reason": "refusal_or_termination | waiver_request | complaint | not_in_documents | version_mismatch | skipped | user_request | none",
"answer_text": "",
"cancel_rate": { "notice_band": "", "rate_percent": null, "source_row": "" },
"refs": [ { "doc_type": "plan | terms | house_rules | qa", "title": "", "article": "", "version": "", "uri": "" } ],
"feedback": "resolved | escalated_after | wrong | none"
}
1つ目の理由は、booking を回答と一緒に残せることです。 責任者へ回すとき、引いた予約の条件がそのまま渡るので、責任者は予約システムを開き直さずに判断に入れます。 宿泊客と行き違いが起きたときも、どの版の条件で答えたかが分かります。
2つ目は、cancel_rate を回答の文と分けられることです。 率は表から引いた数値で、source_row に表の行を残します。回答の文の中に数字が出てきたら、中継プログラムが表の率と照らし、食い違えば回答を出さずに回します。 モデルが文の中で率を作ったときの歯止めです。
3つ目は、escalate_reason で回った理由を数えられることです。 not_in_documents が多い話題は利用規則の書き足しが要り、waiver_request が多い時期は、天候のときの取消料の扱いを先に決めておく材料になります。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| チャットの画面 | 館内向けの画面 | 質問を受け、聞き返しと回答を表示する |
| 予約システム | 読み取り(予約番号で照会) | プランコード・経路・予約日・人数・泊数を引く |
| プランの条件表 | 読み取り | 経路別・日数別の取消料の率を引く |
| Agent Search | answer メソッドの呼び出し | 従業員の ID で、約款・プラン・規則・回答集から回答を作る |
| 責任者の待ち行列 | 書き込み | 回す質問を、予約の条件と一緒に載せる |
| 回答の記録 | 書き込み | 質問・予約の条件・回答・評価を残す |
予約システムには、書き込みません。 取消や人数の変更を受けるのは従業員で、チャットが出すのは決まりの案内までです。 書き込みを足すと、案内の誤りがそのまま予約と料金に入ります。
予約システムの照会は、照会のAPIがあればそれを使い、無ければ定時に書き出した予約の一覧を読む形にします。 この部分は製品に合わせた個別の実装が必要です。
人が確認する
従業員は、回答を読んだあと、根拠の条文とプランの条件を画面で確かめてから宿泊客に伝えます。 画面には、回答の上に引いた予約の条件(経路・プラン・版・人数)を必ず並べます。
- 予約の条件が合っているかを見る … 経路とプランが、宿泊客の話と食い違っていないかを確かめます
- 根拠の順を見る … プランの条件で答えているか、約款だけで答えていないかを見ます
- 評価を付ける … 解決した/責任者へ回した/誤りを選びます
1番目を軽く見ないでください。 宿泊客が「自社サイトで取った」と思っていても、実際は予約サイト経由ということがあります。取消料の率は経路で変わるため、画面に出た経路を宿泊客に伝えて確かめます。
責任者は、回ってきた質問だけを見ます。 判断したら、その判断を回答集に足すかを、週に一度まとめて見直します。 天候のときの扱いのように何度も同じ判断をしているものは、支配人と決めてプランの条件か利用規則に書き足します。
目標は、540件をならして1件4分です。 チャットで解決した質問の確認と、回ってきた質問を責任者が判断する時間の平均です。
例外に対処する
| 起きること | 対応 |
|---|---|
| 予約番号が見つからない | 番号の打ち直しを促し、見つからなければ「予約なし」として館内の決まりだけ答える |
| 予約経路が旅行会社 | 取消料は旅行会社との契約によることがあるため、予約担当にだけ答え、他の従業員には「予約担当へ回します」 |
| プランの条件表に行が無い | 回答を出さず not_in_documents で回す。表の不足として記録する |
| 宿泊の拒否・解除に関わる質問 | 答えを作らず refusal_or_termination で回す |
| 取消料をまけてほしいという話 | 答えを作らず waiver_request で回す |
| 根拠の版が予約日と合わない | 回答を出さず version_mismatch で回す |
| 回答の文の数字が表の率と違う | 回答を出さずに回す |
| 夜間に責任者がいない | 待ち行列に載せ、夜勤の担当へ通知する。宿泊客には「確認して朝までに折り返す」と伝える文例を出す |
| 検索の呼び出しが失敗する | 「回答を作れませんでした」と表示し、責任者の内線番号を示す |
4行目と5行目は、運用の約束として全員に伝えておきます。 モデル宿泊約款は、宿泊を断ったときや契約を解除したときに、宿泊客がその理由の説明を求められるとしています(第5条の2、第7条の2)。説明できるのは判断した人だけです。
記録を残す
- 質問の文、選んだ聞き返しの値、日時、従業員の所属
- 引いた予約の条件(経路・プラン・版・人数・泊数)。宿泊客の氏名は残さない
- 中継プログラムが組み立てた検索の文と、使った絞り込みの式
- answer メソッドの応答の全文(回答、出典、根拠のスコア、回答しなかった理由)
- 表から引いた取消料の率と、その行
- 回す・回さないの判定と、その理由、責任者が最終的に答えた内容
- そのとき効いていたプランの条件と約款の版
最後の行は、「あのとき無料と言われた」という申し出に、当時の版の条件と返した回答を並べて確かめるためのものです。
04実装レベルの3段階
半自動化で、1件10分が7分程度になります。 資料を探す時間は縮みますが、予約システムで経路とプランを確かめる手間と、客室係から責任者への内線が残ります。本格構成で4分になり、この段階が本記事の想定です。 差が大きいのは、予約の条件を引く作業がなくなり、客室係の質問が責任者を通らずに解決するからです。 段階を飛ばさないでください。 半自動化の1か月で責任者が回答の前に確かめていることを拾い、回す条件の表と聞き返しの選択肢の元にします。
05工数削減シミュレーション
導入後 540件 × 4分 ÷ 60 = 36 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 客室数が数十室以上で、自社サイト・予約サイト・旅行会社など複数の経路から予約を受け、プランごとに取消の条件や含まれるものが違う旅館・ホテル。宿泊約款・プランの条件・館内の利用規則が文書になっているのに、予約担当と客室係が答えに迷うたびにフロントの責任者へ内線で聞いている場合。季節雇用や外国籍の従業員が多く、決まりの教え込みが追いつかない場合。
- 客室が数室で、決まりを全員が覚えていられる宿。プランが1〜2種類しかなく、取消の条件が一つしかない場合。宿泊約款やプランの条件が文書になっておらず、支配人の判断で毎回決めている場合(根拠にする文書が無いので、まず約款とプランの条件表を整えるのが先です)。宿泊の拒否・契約の解除・違約金の減免をAIに決めさせたい場合(この構成は該当する条文を示すだけで、判断は支配人が行います)。
07最小構成で試す方法
- 先月、責任者に内線で聞かれた質問を30件書き出す(取消料の質問と、支配人に回した質問を数件入れる)
- その30件について、責任者がどの資料を見て、どう答えたかを聞き取る
- 宿泊約款、利用規則、関係するプランの条件の表を、手元のAIサービスに資料として読み込ませる
- 予約の経路・プラン・予約日・人数を並べて貼り、「添付の資料だけを根拠に、プランの条件を先に使って答えてください。金額は計算しないでください。断る・まける判断は書かないでください」と指示する
- 出てきた回答を、当時の責任者の回答と突き合わせる
| 出てきた内容 | 判断 |
|---|---|
| 当時と同じ根拠で同じ答えが出た | データストアの構築に進む |
| 約款だけで答え、プランの条件を落とした | 指示の書き方で直る。構成は有効 |
| 予約経路ごとの条件が資料から読み取れない | プランの条件を経路別の表にそろえるのが先。 検索の問題ではない |
3行目が出ることは珍しくありません。 責任者が予約サイトの管理画面を見て補っていた条件が、館の資料に無いと分かったということです。 経路別の表を作り、同じ30件で試し直してください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 約款の一般的な条文で答え、プランの条件を落とす | プランの条件を先に使うよう指示し、根拠の順を画面に出す |
| 予約サイト経由の予約に自社サイトの条件で答える | 予約番号を必須にし、経路で絞り込む |
| 文の中で取消料の率や金額を作る | 率は表から引き、文の中の数字を表と照らす |
| 断る・まけるの判断まで答える | 回す条件を表に書き、答えられても答えさせない |
| 古い版のプランの条件で答える | 版に適用開始と終了を付け、予約を受けた日で絞り込む |
| 旅行会社との契約条件が客室係に見える | 閲覧の範囲を付けるか、別のデータストアに分ける |
| 見出しの無い断片で答える | 作成時に includeAncestorHeadings を有効にする。後から変えられない |
| 新しいプランが表に無い | プランの登録の手順に、表と文書の更新を入れる |
上の3行が、この構成の失敗のほとんどです。 どれも、もっともらしいのにその予約の条件ではないという失敗で、条件と率を機械で引いているかで防げるかが決まります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 宿泊約款、プランの条件、館内の利用規則、過去の回答集、予約の条件(経路・プラン・人数・日付)、従業員の質問の文です。旅行会社との契約条件には、卸の料金が含まれます。
- 宿泊客の個人情報を検索に入れない … 予約システムから引くのは条件だけにし、氏名・連絡先・宿泊者名簿の内容は中継プログラムで落とします。 質問の文にも宿泊客の名前を書かないよう、画面に表示します
- 宿泊の拒否・契約の解除・取消料の減免をAIに作らせない … モデル宿泊約款は、宿泊客が拒否や解除の理由の説明を求められるとしています。判断した人が説明できる形にしておきます
- 金額を文章で作らせない … 率は表から引き、金額は予約システムで確定させます。宿泊客に伝える数字の出どころを一つにします
- 旅行会社との契約条件を出し分ける … 予約担当だけが見られるようにし、客室係の検索には出しません
- 回答の記録の保存の期間を決める … 行き違いの申し出に答えられる期間だけ残し、期間を過ぎたら消します
誤りが起きた場合のリスクは、誤った取消料の率を宿泊客に伝えることと、判断の要る話に文書の率で答えてしまうことの2つです。 前者は経路と版の絞り込みと率の照合で、後者は回す条件の規則で防ぎます。どちらも規則と設定で守り、AIの回答の文に頼りません。
10まず何から始めるか
1週目:プランの条件を経路別の表にそろえる
いま売っているプランのうち、予約の多い上位10プランから、プランコード×予約経路×版の表にします。予約サイトの管理画面に出している条件を、館の表と突き合わせます。食い違いが見つかれば、それが今まで起きていた行き違いの元です。
2週目:30件で試す
先月の内線の質問から30件を選び、手元のAIサービスに約款・規則・表を読み込ませて、予約の条件を並べて聞きます。約款だけで答えていないか、金額を作っていないかを最優先で見ます。
3週目:回す条件の表を決める
取消・変更、料金、館内の決まりの三つについて、聞き返す項目と選択肢、回す値を表にし、支配人の承認を取ります。 天候のときの取消料の扱いは、ここで支配人と決めておきます。
4週目:データストアを作る
分割と見出しの設定、旅行会社の契約条件の扱いを決めて、約款・プランの文書・規則・回答集を取り込みます。予約担当がフロントの端末で使い、責任者の回答と比べます。
2か月目: 予約システムの照会と中継プログラムを作り、予約担当とフロントで本番に使います。回った理由を毎週数えます。3か月目以降: 客室係の班長に広げ、1件10分が何分になったかを実測します。責任者への内線が、判断の要る質問だけになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Vertex AI Search が Agent Search へ改称中であること。answer メソッドがセッションによる複数回のやり取りに対応し、質問の言い換えが既定で有効なこと。includeCitations、ignoreLowRelevantContent、ignoreAdversarialQuery、preamble、filter、session。groundingSpec の filteringLevel(FILTERING_LEVEL_LOW/FILTERING_LEVEL_HIGH)で根拠の弱い回答を落とせること | Google Cloud: Get answers and follow-ups | 2026-10-07 |
絞り込みの ANY()、比較の演算子、AND/OR、項目を索引可能にする必要があること、日付を ISO 8601 で書くこと | Google Cloud: Filter search for structured or unstructured data | 2026-10-07 |
レイアウトパーサーが表と見出しを検出し、PDF・XLSX などを扱えること。分割の大きさが100〜500トークン(既定500)、includeAncestorHeadings が既定で無効、分割は作成後に切り替えられないこと | Google Cloud: Parse and chunk documents | 2026-10-07 |
| データソースのアクセス制御がプレビューの機能であること。データストアの作成時にしか設定できないこと。Microsoft Entra ID などを Workforce Identity Federation でつなげること | Google Cloud: Set up data source access control | 2026-10-07 |
| モデル宿泊約款(最終改正 令和5年12月13日)で、約款に定めのない事項は法令等または慣習により、特約に応じたときは特約が優先すること(第1条)。違約金を別表第2により申し受けること(第6条)。宿泊契約の締結の拒否と契約の解除の事由(第5条、第7条)と、宿泊客が理由の説明を求められること(第5条の2、第7条の2)。旅館用の別表第2が人数の区分と取消の通知を受けた日の区分ごとに率を書く様式で、率が空欄であること | 観光庁: モデル宿泊約款(PDF) | 2026-10-07 |
宿泊の拒否・契約の解除・取消料の減免の判断は、自館の約款と旅館業法、所在地の条例に従い、支配人が行ってください。 本記事は Google Cloud と観光庁の公開資料で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0854)についてのご相談はこちらから。
