SaaSのサポート担当が顧客からのAPIの技術的な質問に、顧客が使っているAPIの版の仕様書・リリースノート・過去の回答を根拠に回答案を作る
顧客の開発担当者から届くAPIの技術的な質問に、その顧客が使っている版の仕様書・リリースノート・過去の回答を検索し、出典付きの回答案を作ります。サポート担当は回答案を確かめて直し、顧客へ返します。
- 生成AI
- Gemini
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 連携・自動化
- Python
- 対象業界
- EC/IT・SaaS/金融
- 対象部門
- カスタマーサポート
- 対象業務
- 問い合わせ対応/情報検索
- 主な課題
- 問い合わせが多い/属人化している/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 属人化解消/工数削減/検索時間短縮
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 一次対応の窓口が技術的な質問を見分け、技術サポートチームにチケットを回す
- 担当者が質問を読み、顧客の契約情報で使っている版とプランを確かめる
- 開発者向けサイトで仕様書の当たるページを探し、項目と値を確かめる
- チケット管理システムで似た過去の回答を探し、今の仕様で正しいかをリリースノートと照らす
- 回答を書き、必要ならリクエストの例を添える
- 仕様書で分からないものは開発チームに聞き、返事を待つ
- 顧客へ回答する
- 人一次対応の窓口が技術的な質問を見分け、技術サポートチームにチケットを回す
- 自動チケットが回されたことを起点に、中継プログラムが顧客の契約情報から版とプランを引く
- 自動Agent Search(旧 Vertex AI Search)の answer メソッドで、その版の仕様書・リリースノート・過去の回答を検索し、出典付きの回答案を作る
- 自動回答案から項目名・エンドポイントのパス・上限の数値を抜き出し、その版の仕様の定義ファイルと照らす
- 自動回答案と出典を check grounding API で照らし、裏付けの弱い文に印を付ける
- 自動回答案、出典、照合の結果をチケットの内部メモに書き込む
- 人担当者が回答案と出典を確かめ、印の付いた箇所を直して顧客へ返す
- 人仕様書で答えの出ないものは、開発チームに聞く
- 人顧客へ返した回答のうち、今後も使えるものに「検証済み」の印を付ける
各工程の詳しい説明を読む
- 一次対応の窓口が技術的な質問を見分け、技術サポートチームにチケットを回す
- 担当者が質問を読み、顧客の契約情報で使っている版とプランを確かめる
- 開発者向けサイトで仕様書の当たるページを探し、項目と値を確かめる
- チケット管理システムで似た過去の回答を探し、今の仕様で正しいかをリリースノートと照らす
- 回答を書き、必要ならリクエストの例を添える
- 仕様書で分からないものは開発チームに聞き、返事を待つ
- 顧客へ回答する
(a)探すのに時間がかかる。 3番目と4番目に、1件の半分以上の時間を使っています。仕様書は版ごと・機能ごとに分かれ、リリースノートは日付順に並んでいるだけで、ある項目がいつ変わったかを1か所で見られません。
(b)版を取り違える。 2番目を飛ばすと、v2 の仕様で v1 の顧客に答えます。 顧客から「その項目は返ってこない」と再度の問い合わせが来て初めて分かり、往復が増えます。
(c)古い過去の回答をそのまま使う。 4番目で、似た質問への過去の回答をそのまま貼る担当者がいます。その後のリリースで上限が変わっていれば、古い上限を伝えることになります。
(d)答えられる人が偏っている。 開発チームから来た2名に難しい質問が集まり、その2名が休むと、技術的な質問の返事が止まります。
- 【人】 一次対応の窓口が技術的な質問を見分け、技術サポートチームにチケットを回す
- 【自動】 チケットが回されたことを起点に、中継プログラムが顧客の契約情報から版とプランを引く
- 【自動】 Agent Search(旧 Vertex AI Search)の answer メソッドで、その版の仕様書・リリースノート・過去の回答を検索し、出典付きの回答案を作る
- 【自動】 回答案から項目名・エンドポイントのパス・上限の数値を抜き出し、その版の仕様の定義ファイルと照らす
- 【自動】 回答案と出典を check grounding API で照らし、裏付けの弱い文に印を付ける
- 【自動】 回答案、出典、照合の結果をチケットの内部メモに書き込む
- 【人】 担当者が回答案と出典を確かめ、印の付いた箇所を直して顧客へ返す
- 【人】 仕様書で答えの出ないものは、開発チームに聞く
- 【人】 顧客へ返した回答のうち、今後も使えるものに「検証済み」の印を付ける
4番目が、この設計の分かれ目です。 回答案のどこが誤っているかを、人がすべて読んで見つけるのは時間がかかります。項目名とパスは仕様の定義ファイルにあるかどうかで機械的に決められるので、人の目に頼りません。 担当者は、印の付いた箇所から読みます。
7番目で、担当者が必ず確かめてから返します。 顧客の開発担当者は回答のとおりにコードを書きます。誤った回答は、顧客のシステムの不具合として後で戻ってきます。 自動で顧客に送ることはしません。
02今回想定するシステム構成
チケット管理システム(技術サポートチームへの割り当て) ▼【トリガー】チケットの割り当て 中継プログラム(Python、Cloud Run) ├──▶ 顧客の契約情報(APIの版、プラン) ▼ Agent Search(Vertex AI Search)── answer メソッド │ データストア:API仕様書(版ごと・エンドポイントごと)、リリースノート、 │ 検証済みの過去の回答、既知の不具合の一覧 │ 絞り込み:顧客の版と共通の文書だけ │ 優先度:過去の回答を新しい順に寄せる ▼ 中継プログラム ── 項目名・パス・上限を仕様の定義ファイルと照合 ▼ check grounding API ── 回答案の文ごとの裏付け ▼ チケットの内部メモ(回答案・出典・照合の結果)→ 担当者が確かめて顧客へ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Vertex AI Search(Agent Search)の answer メソッド | Azure AI Search、Amazon OpenSearch Service |
| 生成AI | Gemini(answer メソッドの回答の生成に使うモデル) | ─ |
| 検証 | Agent Search の check grounding API(回答案の文ごとの裏付け) | 中継プログラムで出典の文字列一致を見る |
| 連携 | 中継プログラム(Python。Cloud Run で動かし、チケット・契約情報・検索・照合をつなぐ) | Node.js で同じものを書く |
| 差異計算 | 仕様の定義ファイルとの照合(項目名・パス・上限が存在するか) | ─ |
チケット管理システムと開発者向けサイトは、新しく足すものではありません。 開発者向けサイトの仕様書とリリースノートの写しを、検索用に Cloud Storage に置いて取り込みます。チケット管理システムには、内部メモとして書き込むだけで、顧客への返信は担当者が行います。 チケットの取得と書き込みは、利用しているチケット管理システムのAPIで行う構成を想定します。
検索の土台は、Agent Search(Vertex AI Search から改称中)の answer メソッドです。 検索の結果から回答を作り、出典を付けられます。複数のことを一度に聞く質問を小さな質問に分けて検索できるとされており、「Webhook の再送の間隔と、二重に届いたときの見分け方は」のような質問に向いています。
回答案の裏付けは、check grounding API で数値にします。 回答の候補と根拠の文(ファクト)を渡すと、0〜1の支持の度合いと、文ごとの出典を返すとされています。ファクトは200件まで、1件1万字までで、大きな文書を1つにまとめず小さく分けて渡すことが勧められています。
03どうやって実装するのか
処理の起点を決める
起点は、チケットが技術サポートチームに割り当てられたことです。 一次対応の窓口が技術的な質問と見分けた時点で、中継プログラムが動きます。担当者がチケットを開いたときには、内部メモに回答案が入っている状態にします。
顧客から追加の質問が届いたときも、同じチケットで動かし直します。 そのときは前の回答案と顧客への回答も材料に渡し、answer メソッドのセッションで前の質問を踏まえた回答を作ります。
リリースノートが公開されたときは、別の起点として取り込みを動かします。 新しいリリースノートを取り込むと同時に、廃止や変更の告知に出てくる項目名を持つ過去の回答に「要見直し」の印を付けます。 印の付いた過去の回答は、見直されるまで検索の出典から外します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 質問 | 件名、本文、エラーの文言、リクエストのID、添付のリクエストの例 | チケット |
| 顧客の契約情報 | 使っているAPIの版、プラン(呼び出しの上限に関わる)、Webhook の利用の有無 | 契約情報のデータベース |
| API仕様書 | 版ごと・エンドポイントごとの説明、項目と型と値の範囲、エラーの一覧 | 開発者向けサイトの写し |
| 仕様の定義ファイル | OpenAPI 形式の版ごとのファイル(項目名、パス、上限) | 開発チームのリポジトリ |
| リリースノート | 公開日、対象の版、追加・変更・廃止の予告と予定日 | 開発者向けサイトの写し |
| 過去の回答 | 質問と回答、回答した日、当時の版、「検証済み」の印 | チケット管理システム |
| 既知の不具合の一覧 | 症状、対象の版、回避策、修正の予定 | 開発チームの公開の一覧 |
質を決めるのは、仕様の定義ファイルです。 仕様書の文は人が読むためのもので、項目名が文中に埋もれています。定義ファイルなら、ある版にある項目名とパスの一覧を機械的に作れます。 第7章「AIに何をさせるのか」の照合は、この一覧で行います。
過去の回答は「検証済み」の印のものだけを入れます。 約1万件をすべて入れると、誤っていた回答や、顧客ごとの事情に合わせた例外の回答まで出典になります。最初は、技術に詳しい2名が「今後も使える」と判断した回答から始めます。
データの取得方法を決める
仕様書は、エンドポイントごとに1つの文書として Cloud Storage に置き、メタデータ付きで取り込みます。 メタデータに、文書の種類、対象の版、エンドポイントのパス、更新日を持たせます。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 仕様書・リリースノート・過去の回答の断片 | データストア | 回答案の根拠 |
| 文書の種類・版・日付 | 文書のメタデータ | 絞り込みと優先度 |
| 項目名・パス・上限の一覧 | 仕様の定義ファイル | 回答案の照合 |
| 文ごとの支持の度合い | check grounding API | 印を付ける箇所の判定 |
過去の回答1件分のメタデータは、例えば次のような形です。
{
"id": "ANS-2026-08-1123",
"jsonData": "{\"doc_type\":\"past_answer\",\"api_version\":\"v1\",\"answered_at\":\"2026-08-21T00:00:00Z\",\"verified\":\"true\",\"needs_review\":\"false\",\"endpoints\":[\"/v1/orders\"]}",
"content": { "mimeType": "text/plain", "uri": "gs://api-support/answers/ANS-2026-08-1123.txt" }
}
顧客の版への絞り込みは、ANY() で書きます。 絞り込みの式は ANY() と AND/OR/NOT を組み合わせられ、使う項目はデータストアのスキーマで索引可能にしておく必要があるとされています。
api_version: ANY("v1","common") AND needs_review: ANY("false")
過去の回答を新しいものに寄せるには、優先度の調整の鮮度の指定を使います。 日付の項目と、検索した日からの経過日数の区切り(例:30D、365D)ごとに−1〜1の値を決めると、その間は直線で補って優先度を変えられるとされています。回答した日から30日以内は少し上げ、1年を超えたものは下げる設定から始めます。 仕様書には鮮度の調整をかけません。仕様書は古くても、その版では正しいからです。
AIへ渡す前に整形する
- 仕様書をエンドポイントごとに分ける … 版ごと・エンドポイントごとに1文書にし、
api_versionとendpointsを入れます - 定義ファイルから一覧を作る … 版ごとに、項目名・パス・上限の数値の一覧を作り、照合に使います
- リリースノートを項目に結び付ける … 告知に出てくる項目名とパスを抜き出し、メタデータの
endpointsに入れます - 過去の回答の顧客の情報を消す … 会社名、担当者名、APIキー、リクエストの本文に入っていた取引の情報を消してから取り込みます
- 過去の回答に当時の版を入れる … 回答した時点の契約情報から版を引いて入れます
- 廃止の告知で印を付ける … 廃止・変更の告知の項目名を持つ過去の回答に
needs_review: trueを入れます
4番目を軽く見ないでください。 過去の回答には、顧客が貼ったリクエストの本文がそのまま残っていることがあり、取引先の名前や金額、時にはAPIキーが入っています。 これが出典として別の顧客への回答案に出れば、情報の漏えいです。APIキーの形の文字列は、取り込む前に機械的に消します。
6番目は、リリースのたびに必ず動かします。 印の付け忘れが、第3章(c)の古い回答の再利用をそのまま再現します。
AIに処理させる
させるのは、顧客の版の仕様書と検証済みの過去の回答から質問に当たる記載を見つけ、仕様書の言葉と項目名のまま回答案を書き、出典を示すことです。
| 質問の型 | 回答案の作り方 | 主な根拠 |
|---|---|---|
| 項目の意味・値の範囲 | 仕様書の項目の説明をそのまま示す | API仕様書 |
| 上限・タイムアウト | 顧客のプランに当たる数値を示す | API仕様書 |
| エラーの原因 | エラーの一覧の説明と、確かめる点を示す | API仕様書、過去の回答 |
| Webhook の扱い | 再送の条件と、重複の見分け方を示す | API仕様書、過去の回答 |
| 版の移行 | 対応する v2 の項目と、廃止の予定日を示す | リリースノート |
| 既知の不具合に似た症状 | 一覧の症状と回避策を示し、不具合と決めつけない | 既知の不具合の一覧 |
answer メソッドの設定は次のようにします。
| 設定 | 値 | 理由 |
|---|---|---|
includeCitations | 有効 | 回答案の文に出典を付ける |
ignoreLowRelevantContent | 有効 | 当たる記載が無いときに無理に答えない |
filter | 顧客の版と共通、要見直しを除く | 別の版の仕様を根拠にしない |
boostSpec | 過去の回答の鮮度 | 新しい回答を先に出す |
session | 同じチケットのセッション | 追加の質問に文脈を持たせる |
preamble | 下の指示 | 書き方と禁止事項を与える |
| させないこと | 理由 |
|---|---|
| 仕様書に無い項目名・パスを書くこと | 顧客はそのとおりにコードを書く |
| 不具合かどうかの断定 | 開発チームがログを見て決める |
| 将来の機能の約束 | リリースの予定は開発チームと製品の担当が決める |
| 顧客のプランと違う上限を書くこと | 上限はプランで違う |
| 過去の回答の顧客の事情を一般化すること | 個別に例外を認めた回答がある |
1行目が最も起きやすい失敗です。 仕様書に ordered_at とあるのに、回答案に order_date と書く。読んだだけでは自然で、担当者も見落とします。 指示で禁じたうえで、第5章の4番目の照合で機械的に見つけます。
指示内容を固定する
answer メソッドの preamble に、次の指示を入れます。中継プログラムが {api_version} と {plan} を差し込みます。
あなたはSaaSの技術サポートの担当として、顧客の開発担当者からの
APIの質問に答える回答案を作ります。読むのはサポートの担当者で、
確かめて直してから顧客に送ります。
【この顧客の条件】
- 使っているAPIの版:{api_version}
- 契約のプラン:{plan}
【書き方】
1. 結論を最初の1〜2文で書いてください。
2. 項目名・エンドポイントのパス・エラーのコードは、仕様書の表記のまま
`バッククォート` で囲んで書いてください。
3. 上限やタイムアウトの数値は、この顧客のプランの値だけを書いてください。
4. リクエストの例を書くときは、仕様書にある項目だけを使ってください。
5. 廃止の予告がある項目に触れるときは、廃止の予定日と代わりの項目を書いてください。
【厳守事項】
- 仕様書に無い項目名・パスを書かないでください。似た名前を作らないでください。
- {api_version} 以外の版の仕様を、この顧客の仕様として書かないでください。
- 不具合だと断定しないでください。既知の不具合に似ている場合は、
「既知の事象に似ています」と書き、一覧の回避策だけを示してください。
- 今後の機能の追加や修正の時期を約束しないでください。
- 当たる記載が見つからないときは、
「仕様書に該当する記載が見つかりません。開発チームに確認が必要です」とだけ書いてください。
「項目名をバッククォートで囲む」は、照合のための約束です。 囲まれた文字列を中継プログラムが抜き出し、版の一覧と照らします。囲まずに書かれた項目名は照合から漏れるので、照合の結果に「囲まれていない英数字の語」の件数も出し、担当者が見る目安にします。
「既知の事象に似ています」と書かせるのは、症状が似ていても原因が違うことが多いためです。 不具合と書いた回答は、顧客が自社の調査を止めてしまいます。 原因の判断は、開発チームがリクエストのIDでログを見て行います。
出力形式を固定する
answer メソッドの応答と照合の結果を、中継プログラムが次の形に整えて内部メモに書きます。
{
"ticket_id": "",
"api_version": "v1",
"plan": "",
"status": "draft_ready | needs_dev | not_found",
"draft_text": "",
"citations": [ { "doc_id": "", "doc_type": "spec | release_note | past_answer | known_issue", "answered_at": "" } ],
"identifier_check": [ { "token": "", "kind": "field | path | error_code", "exists_in_version": true } ],
"unquoted_terms": 0,
"grounding": { "support_score": 0, "weak_claims": [ { "text": "", "score": 0 } ] }
}
1つ目の理由は、identifier_check で仕様に無い名前を一覧で示せることです。 exists_in_version: false の行は、担当者の画面で赤く表示します。v2 にはあるが v1 には無い名前なら、そのことも並べて示します。 版の取り違えだとすぐに分かります。
2つ目は、status で人の動き方を決められることです。
| 条件 | status |
|---|---|
answerSkippedReasons に NO_RELEVANT_CONTENT | not_found |
| 回答案に「開発チームに確認が必要」 | needs_dev |
| 上のどれにも当たらない | draft_ready |
3つ目は、weak_claims で裏付けの弱い文を示せることです。 check grounding API は文ごとの支持の度合いと出典を返し、出典とみなす境目は指定しなければ0.6とされています。境目を下回った文を weak_claims に並べ、担当者が最初に読む箇所にします。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| チケット管理システム | チケット管理システムのAPI | 割り当てを受け、内部メモに書き込む |
| 契約情報のデータベース | 読み取り | 版とプランを引く |
| Agent Search | answer メソッドの呼び出し | 顧客の版の文書から回答案を作る |
| 仕様の定義ファイル | 読み取り | 項目名・パス・上限の一覧を作る |
| check grounding API | 呼び出し | 回答案の文ごとの裏付け |
顧客への返信は、チケット管理システムの画面で担当者が行います。 中継プログラムは内部メモにしか書きません。内部メモと顧客への返信を同じ欄にしないよう、書き込み先の種別を設定で固定します。
check grounding API に渡すファクトは、answer メソッドが出典にした断片です。 断片ごとに文書の種類と版を属性として付けて渡し、大きな仕様書を1つのファクトにまとめません。
人が確認する
すべての回答案を、担当者が確かめてから顧客へ返します。
- 照合の結果を先に見る …
exists_in_version: falseの名前と、weak_claimsの文を確かめます - 出典を開く … 結論の根拠になった仕様書のページを開き、顧客の版のものかを確かめます
- プランの数値を確かめる … 上限の数値が顧客のプランのものかを見ます
- リクエストの例を試す … 例を書いた場合は、検証用の環境で一度呼んでから返します
- 「検証済み」の印を付ける … 今後も使える回答に印を付け、過去の回答として取り込ませます
4番目を省かないでください。 例のリクエストは、顧客がそのまま貼り付けて使います。項目名が正しくても、型や必須の項目の抜けで失敗することがあります。
needs_dev のものは、開発チームへの問い合わせの文を回答案から作ります。 顧客の版、エラーの文言、リクエストのID、仕様書で確かめた範囲を並べ、開発チームが最初からやり直さずに済む形にします。
例外に対処する
| 起きること | 対応 |
|---|---|
| 当たる記載が無い | not_found。担当者が開発チームに聞き、答えを仕様書に足すよう依頼する |
| 仕様に無い名前が回答案にある | 赤く示す。担当者が仕様書で正しい名前に直す |
| 顧客の版が契約情報に無い | 版を絞らずに検索し、回答案の冒頭に「版を確認してください」と出す |
| 両方の版を使っている顧客 | 質問のエンドポイントのパスから版を決める。決められなければ両方の回答案を並べる |
| 廃止の予定日を過ぎた項目を聞かれた | リリースノートの廃止の告知と代わりの項目を示し、担当者が移行の案内を足す |
| 既知の不具合に似た症状 | 回避策を示し、開発チームに同じ事象かを確かめる |
| 質問にAPIキーや取引の情報が貼られている | 検索に渡す前に中継プログラムが消し、チケットの担当者に注意を出す |
| 検索や照合の呼び出しが失敗する | 内部メモに「回答案を作れませんでした」と書き、従来どおり担当者が答える |
7行目は、顧客の側の不注意から起きます。 開発担当者はエラーの調査のためにリクエストをそのまま貼ります。APIキーの形の文字列は検索に渡さず、担当者から顧客へ、キーの再発行を勧める一文を添えます。
記録を残す
- チケットのID、顧客の版とプラン、回答案を作った日時
- answer メソッドの応答の全文(回答、出典、回答しなかった理由)
- 照合の結果(
identifier_check、unquoted_terms)と check grounding API の結果 - 担当者が直した後の回答と、直す前の回答案との差分
- 開発チームへの問い合わせと、その答え
- 「検証済み」の印を付けた担当者と日時
4つ目は、この構成の弱いところを示します。 担当者が毎回同じ種類の直しをしているなら、仕様書の書き方か、preamble の指示か、取り込んだ過去の回答のどれかに理由があります。 月に一度、直しの多い質問の型を数えます。
04実装レベルの3段階
半自動化で、1件30分が18分程度になります。 探す時間は縮みますが、契約情報を引くことと、回答案の項目名を仕様書と照らすことは担当者の手作業のままです。本格構成で12分になり、この段階が本記事の想定です。 差が大きいのは、版の取得と照合が機械で行われ、担当者が印の付いた箇所から読めるからです。 段階を飛ばさないでください。 半自動化の間に、検証済みの過去の回答を選び、仕様書の不足を開発チームに返します。材料がそろわないまま本格構成にすると、not_found ばかりになります。
05工数削減シミュレーション
導入後 300件 × 12分 ÷ 60 = 60 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 受発注・請求・決済・在庫などの業務SaaSで、顧客がREST APIやWebhookで自社のシステムとつないでおり、開発担当者からの技術的な質問がサポートに毎月数百件届く企業。APIに複数の版があり、顧客によって使っている版が違う場合。リリースノートで項目の追加や廃止を毎月告知しているのに、過去の回答が古い仕様のまま再利用されている場合。技術的な質問に答えられる担当者が2〜3名に偏っている場合。
- APIを公開しておらず、技術的な質問がほとんど届かない場合。API仕様書が整っておらず、開発チームに聞かないと仕様が分からない場合(先に仕様書を整える必要があります)。不具合の調査や個別のログの解析までAIに任せたい場合(この構成は公開している仕様と過去の回答から回答案を作るだけで、不具合かどうかの判断は開発チームが行います)。回答を担当者の確認なしで顧客へ自動で送りたい場合。
07最小構成で試す方法
- 過去3か月の技術的な質問から30件を選ぶ(v1 の顧客の質問と、リリースで上限が変わった機能の質問を数件入れる)
- その30件について、担当者が見た仕様書のページと、実際の回答を拾う
- 顧客の版の仕様書と、関係するリリースノートを手元のAIサービスに資料として読み込ませる
- 質問を貼り、「添付の資料だけを根拠に回答案を作ってください。資料に無い項目名を作らないでください。項目名はバッククォートで囲んでください」と指示する
- 回答案の項目名を仕様の定義ファイルと照らし、実際の回答と突き合わせる
| 出てきた内容 | 判断 |
|---|---|
| 実際の回答と同じ内容が出典付きで出た | データストアと照合の構築に進む |
| 仕様に無い項目名が混ざった | 照合で見つけられる。構成は有効 |
| 仕様書に答えが無く「見つかりません」が多い | 仕様書の整備が先。 検索の問題ではない |
3行目が出ることは珍しくありません。 失敗ではなく、担当者が開発チームに聞いていた理由が仕様書の不足だと分かったということです。 その場合は、見つからなかった質問の一覧を開発チームに渡し、仕様書に足してもらってください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 仕様に無い項目名を書く | バッククォートで囲ませ、定義ファイルと照合する |
| 別の版の仕様で答える | 契約情報から版を引き、絞り込みで別の版を外す |
| 古い過去の回答が出典になる | 廃止の告知で要見直しの印を付け、鮮度で新しいものを先に出す |
| 過去の回答から別の顧客の情報が出る | 取り込む前に会社名・担当者名・APIキーを消す |
| プランと違う上限を書く | プランを指示に差し込み、上限の数値も照合する |
| 不具合と断定する | 指示で禁じ、既知の不具合の一覧の回避策だけを示させる |
| 内部メモではなく顧客への返信に書き込む | 書き込み先の種別を設定で固定する |
| 仕様書に答えが無い質問が続く | 見つからなかった質問を開発チームに渡し、仕様書に足してもらう |
| 大きな仕様書を1つのファクトにして照らす | 断片ごとに分け、文書の種類と版を属性で付ける |
| リリース後に取り込みを忘れる | リリースの手順書に取り込みと印付けを入れる |
上の2行が、この構成の失敗のほとんどです。 どちらも顧客がそのままコードに書く失敗で、項目名と版を機械で照らしているかどうかで、担当者が回答案を信用できるかが決まります。
下から3行目と最後の行は、運用を始めて数か月たってから効いてきます。 仕様書の不足を開発チームに返す流れが無いと、not_found の質問は毎月同じ型で残り、技術に詳しい2名への偏りが元に戻ります。 リリースの後の取り込み忘れも、最初の数回は気づかれません。照合で赤く示された名前の件数をリリースの日の前後で比べると、取り込みが遅れたかどうかが分かります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 顧客の質問の本文、エラーの文言、貼られたリクエストの例(取引の情報やAPIキーを含むことがある)、契約情報、過去の回答です。別の顧客の情報が回答案に混ざることが、最も避けるべき事故です。
- 過去の回答から顧客の情報を消してから取り込む … 会社名、担当者名、取引の情報、APIキーの形の文字列を消します。消せないものは取り込みません
- 質問に貼られたAPIキーを検索に渡さない … 中継プログラムで消し、顧客にはキーの再発行を勧めます
- 顧客へ自動で返信しない … 回答案は内部メモまでです。担当者が確かめて返します
- 不具合の判断と将来の約束をAIに書かせない … 開発チームと製品の担当が決めることです
- 公開していない仕様を入れない … 社内向けの設計資料や未公開の機能の仕様は、データストアに入れません。顧客に公開している仕様書と、その範囲の過去の回答だけにします
- 記録の閲覧をサポートの担当者に限る … 質問の本文と回答案には顧客の情報が残ります
誤りが起きた場合のリスクは、誤った仕様で顧客がコードを書くことと、別の顧客の情報が回答に混ざることの2つです。 前者は版の絞り込みと項目名の照合で、後者は取り込む前の消去で防ぎます。
10まず何から始めるか
1週目:仕様書と定義ファイルをそろえる
版ごとの仕様書をエンドポイントごとに分け、定義ファイルから項目名・パス・上限の一覧を作ります。問い合わせの多い注文・請求・Webhook のエンドポイントから始めます。
2週目:30件で試す
過去3か月の質問から30件を選び、顧客の版の仕様書を手元のAIサービスに読み込ませて聞きます。仕様に無い項目名が混ざらないか、別の版の仕様で答えていないかを最優先で見ます。
3週目:過去の回答を選ぶ
技術に詳しい2名が、今後も使える過去の回答に「検証済み」の印を付けます。顧客の情報とAPIキーの形の文字列を消す処理を作り、印の付いたものから通します。
4週目:データストアを作る
仕様書、リリースノート、検証済みの過去の回答を取り込み、版の絞り込みと鮮度の調整を設定します。担当者が検索画面で回答案を作り、自分の回答と比べます。
2か月目: 中継プログラムで、チケットの割り当てから回答案、照合、裏付けの検査、内部メモまでをつなぎます。3か月目以降: リリースの手順に取り込みと要見直しの印付けを入れ、1件30分が何分になったかを実測します。照合で赤く示された名前が毎月減り、技術に詳しい2名以外の担当者が同じ根拠で答えられるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Vertex AI Search が Agent Search へ改称中であること。answer メソッドが複雑な質問を小さな質問に分けて検索できること、セッションで前の質問を踏まえた追加の質問に答えられること。includeCitations、ignoreLowRelevantContent(回答しなかった理由が answerSkippedReasons に NO_RELEVANT_CONTENT で返ること)、preamble、filter、boostSpec、session | Google Cloud: Get answers and follow-ups | 2026-10-07 |
絞り込みの式で ANY()、AND/OR/NOT が使えること。項目を索引可能にする必要があること | Google Cloud: Filter custom search for structured or unstructured data | 2026-10-07 |
boostSpec の conditionBoostSpecs で条件と−1〜1の値で優先度を調整できること。日付の項目と経過日数(例:59D)の区切りごとの値で鮮度による調整ができ、区切りの間は直線で補うこと | Google Cloud: Boost search results | 2026-10-07 |
| check grounding API が回答の候補とファクトから0〜1の支持の度合いと文ごとの出典を返すこと。ファクトが200件まで・1件1万字までで、大きなファクトを小さく分けて属性を付けることが勧められていること。出典とみなす境目の既定が0.6であること | Google Cloud: Check grounding with RAG | 2026-10-07 |
顧客に返す回答の内容と、不具合かどうかの判断は、サポートの担当者と開発チームが確かめてください。 本記事は Google Cloud の公開ドキュメントで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0859)についてのご相談はこちらから。
