ガス・電気の小売事業者に届く料金・検針の問い合わせに、料金表と請求の明細から回答の下書きを作る
「今月の請求が高い」「検針の数字がおかしい」といった料金・検針の問い合わせに、請求の明細と料金表から説明の下書きを作ります。金額と使用量はAIに書かせず、差し込みの印で受けて明細の値だけを入れます。
- 生成AI
- Azure OpenAI Service/Claude/Gemini
- 対象業界
- その他/自治体
- 対象部門
- カスタマーサポート
- 対象業務
- 問い合わせ対応/書類作成
- 主な課題
- 人手が足りない/問い合わせが多い/確認ミスが多い
- AIで行う処理
- 生成
- 主な効果
- 品質標準化/対応スピード向上/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 問い合わせを顧客管理のシステムで開き、お客さま番号で契約を確かめる
- 料金計算のシステムで、問い合わせの対象の月と、前月・前年同月の請求の明細を開く
- 検針の記録で、今回と前回の指示数、検針日、計量器の交換や推定での検針の有無を見る
- 契約の料金メニューの料金表を社内のファイルから探し、その月に適用されていた版を確かめる
- 燃料費調整の単価表で、対象の月と比べる月の単価を確かめる
- 差額の理由を電卓で分け、回答文を書く。明細の金額を回答文に写す
- 回答文をリーダーが確かめて送る
- 人オペレーターが問い合わせを開き、お客さま番号と対象の月を確かめて「下書きを作る」を押す
- 自動契約、対象の月と前月・前年同月の請求の明細、検針の記録を料金計算のシステムから取る
- 自動料金メニューと検針期間から、適用されていた料金表の版と燃料費調整の単価を引く
- 自動差額を項目ごとに分けた表を作り、検針の記録の注意点(推定、計量器の交換、期間の長短)に印を付ける
- 自動保安に関わる言葉(ガスのにおい、漏れなど)が本文にあれば、下書きを作らずに保安の窓口へ回す
- 自動Azure OpenAI が問い合わせと差額の表から説明の下書きを作る。数字はすべて差し込みの印で書く
- 自動差し込みの印を明細の値に置き換え、AIが直接書いた数字や存在しない印があれば止める
- 人オペレーターが下書きを読み、直して送る。再検針や返金の検討が要るものは担当へ回す
各工程の詳しい説明を読む
- 問い合わせを顧客管理のシステムで開き、お客さま番号で契約を確かめる
- 料金計算のシステムで、問い合わせの対象の月と、前月・前年同月の請求の明細を開く
- 検針の記録で、今回と前回の指示数、検針日、計量器の交換や推定での検針の有無を見る
- 契約の料金メニューの料金表を社内のファイルから探し、その月に適用されていた版を確かめる
- 燃料費調整の単価表で、対象の月と比べる月の単価を確かめる
- 差額の理由を電卓で分け、回答文を書く。明細の金額を回答文に写す
- 回答文をリーダーが確かめて送る
(a)開く画面が多い。 2番から5番で、顧客管理、料金計算、検針の記録、料金表、単価表の5つを行き来します。1件の問い合わせで十数回の画面の切り替えがあり、それだけで数分かかります。
(b)差額の分け方が人によって違う。 使用量の増加で説明する人、燃料費調整で説明する人、日数の違いを最初に挙げる人がいます。どれも間違いではありませんが、全部を挙げる人は少数です。 一つの理由だけを聞いたお客さまが、別の理由を知って改めて問い合わせてくることがあります。
(c)金額の転記を間違える。 6番で明細から回答文に写すとき、前月と今月の金額を入れ違える、単価の小数点の位置を誤るといった誤りが月に何件か出ます。リーダーの確認で多くは止まりますが、送ってしまうと訂正の連絡が要ります。
(d)検針の問い合わせの扱いがぶれる。 「検針の数字がおかしい」と言われたとき、記録を見て説明で終える人と、すぐ再検針を手配する人がいます。推定で検針した月や計量器を交換した月は、記録を見るだけでは分からないことがあります。
(e)忙しい月ほど説明が短くなる。 問い合わせが倍になる月は、1件にかけられる時間が減り、「燃料費調整の単価が上がったため」の一文で済ませがちです。その月こそ要因が重なっていることが多く、短い説明は再度の問い合わせを呼びます。 説明の質が忙しさで決まる状態を変えたいというのが、この構成の出発点です。
- 【人】 オペレーターが問い合わせを開き、お客さま番号と対象の月を確かめて「下書きを作る」を押す
- 【自動】 契約、対象の月と前月・前年同月の請求の明細、検針の記録を料金計算のシステムから取る
- 【自動】 料金メニューと検針期間から、適用されていた料金表の版と燃料費調整の単価を引く
- 【自動】 差額を項目ごとに分けた表を作り、検針の記録の注意点(推定、計量器の交換、期間の長短)に印を付ける
- 【自動】 保安に関わる言葉(ガスのにおい、漏れなど)が本文にあれば、下書きを作らずに保安の窓口へ回す
- 【自動】 Azure OpenAI が問い合わせと差額の表から説明の下書きを作る。数字はすべて差し込みの印で書く
- 【自動】 差し込みの印を明細の値に置き換え、AIが直接書いた数字や存在しない印があれば止める
- 【人】 オペレーターが下書きを読み、直して送る。再検針や返金の検討が要るものは担当へ回す
4番目が、この設計の要です。 差額の分解は、明細の項目ごとの差を取るだけの計算で、プログラムなら間違えません。 AIに任せるのは、その表を問い合わせに沿った順番と言葉で説明することです。
1番目を人の操作にしているのにも理由があります。 問い合わせの文面から対象の月を読み取るのは、意外に難しいからです。「今月の請求」が請求書の届いた月か、使用した月かは、お客さまによって違います。オペレーターが一目で決められることは、オペレーターに決めてもらいます。
02今回想定するシステム構成
問い合わせ(Web フォーム・メール)── 顧客管理のシステムに登録済み │ オペレーターがお客さま番号と対象の月を確かめる ▼【トリガー】オペレーターの「下書きを作る」の操作 Azure Functions ── 契約、請求の明細(対象・前月・前年同月)、検針の記録を取る │ 料金表の版と燃料費調整の単価を引く │ 差額を項目ごとに分けた表を作る(使用量/日数/単価/割引) │ 保安に関わる言葉の検知 ▼ Azure OpenAI(構造化出力)── 説明の下書き(数字は差し込みの印で書く) │ ① 問い合わせの種類 ② 説明の本文 │ ③ 使った差し込みの印 ④ 担当へ回す理由 ▼ Azure Functions ── 差し込みの印を明細の値に置き換え、直書きの数字を検査 ▼ 【オペレーターが下書きを確かめて送る】 ├──▶ 再検針の手配 → 検針の担当 └──▶ 返金・減額の検討 → 料金の担当
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 生成AI | Azure OpenAI(Microsoft Foundry) | Claude API、Gemini API |
| 連携 | Azure Functions(明細と料金表の取得、差額の分解、差し込みの置き換えと検査) | Azure Logic Apps |
| 料金表 | 料金メニューごとの料金表と燃料費調整の単価表(適用期間付きの社内データ) | 料金計算のシステムの単価のマスタ |
| 画面 | 顧客管理のシステムの問い合わせの画面(下書きの欄を追加) | 文面対応の専用の画面 |
料金計算のシステムには、読み取りだけでつなぎます。 請求の訂正や再計算は、この構成からは行いません。下書きは顧客管理のシステムの下書きの欄に書き戻し、送る操作はオペレーターが行います。
Azure OpenAI を選ぶ理由は、構造化出力で JSON スキーマに沿った出力を受けられることです。 公式の説明では、構造化出力は指定した JSON スキーマに従うもので、Chat Completions API と Responses API の両方で使えます。 問い合わせの種類を列挙型で縛れるので、集計に使う区分が乱れません。契約と料金の情報を Azure の中で扱い、契約と権限の管理をまとめられることも理由です。
検索の仕組みは使いません。 料金表は料金メニューのコードと適用期間で一意に決まるので、探すのではなく引きます。 検索で似た料金表を拾うと、隣のメニューの単価で説明する事故が起きます。
03どうやって実装するのか
処理の起点を決める
オペレーターが問い合わせの画面で「下書きを作る」を押した時点を起点にします。 押す前に、お客さま番号と対象の月(料金計算上の使用月)を画面で確かめてもらいます。問い合わせの登録だけで自動に動かさないのは、対象の月の取り違えを防ぐためです。 「今月の請求」と書かれていても、請求書が届いた月なのか、検針の対象の月なのかで、開くべき明細が1か月ずれます。
押した時点の明細を使います。 料金計算のシステムで請求の訂正が入ることがあるので、夜間にまとめて下書きを作っておく方式は取りません。 朝の時点の下書きが、昼に訂正された明細とずれていると、正しい数字の入った誤った説明になります。
同じ問い合わせで2回目を押したときは、前の下書きを残したまま新しい下書きを作ります。 オペレーターが比べられるようにし、どちらを使ったかを記録に残します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 問い合わせの本文 | Web フォームの項目とメールの本文 | 顧客管理のシステム |
| 契約 | 電気・ガスの別、料金メニューのコード、契約の容量、割引の適用、契約の開始日 | 同上 |
| 請求の明細 | 対象の月・前月・前年同月の、検針期間、日数、使用量、基本料金、従量料金(段階ごと)、燃料費調整額、各種の割引・値引き、合計 | 料金計算のシステム |
| 検針の記録 | 今回と前回の指示数、検針日、推定での検針の印、計量器の交換の有無 | 同上 |
| 料金表 | 料金メニューごとの基本料金と従量料金の単価。適用期間付き | 社内の料金表のデータ |
| 燃料費調整の単価表 | 月ごとの単価 | 同上 |
| お知らせの文面 | 料金の改定、値引きの開始・終了の案内 | 社内の公開済みの文書 |
質を決めるのは、明細が項目ごとに取れることと、料金表に適用期間があることです。 明細が合計しか取れなければ差額を分けられず、料金表に適用期間が無ければ、改定をまたぐ月の説明が今の単価になります。
30分ごとの使用量の記録は渡しません。 1日のうちいつ電気を使ったかは、生活の様子そのものです。「使用量が増えた」という説明には日ごとの合計で足ります。
データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 契約と問い合わせ | 顧客管理のシステムの API | 料金メニューの特定と本文 |
| 3か月分の明細 | 料金計算のシステムの照会の API | 差額の分解 |
| 検針の記録 | 同上 | 指示数の確認と注意点の印 |
| 料金表と単価 | 社内の料金表のデータを、メニューのコードと検針期間で引く | 単価の差の説明 |
料金表は、検針期間のどの日の版を使うかを決めておきます。 検針期間の途中で料金が改定された場合、料金計算のシステムが日割りで計算しているはずです。明細にその区分が出ているならそれに従い、出ていなければ「改定をまたぐ月」の印だけを付けて、説明はオペレーターに任せます。
前年同月の明細が無いお客さま(契約から1年未満)には、前月とだけ比べます。 比べた月を差し込みの印として下書きに出すので、お客さまにも何と比べたかが伝わります。
AIへ渡す前に整形する
- 差額の分解 … 対象の月と比べる月の明細から、次の4つの差を計算します
- 使用量の差による分(比べる月の単価で、使用量の差を掛けたもの) - 単価の差による分(燃料費調整の単価と従量の単価の変化) - 日数の差(検針期間の長さの違い。1日あたりの使用量もあわせて出す) - 割引・値引きの有無の差
- 検針の注意点の印 … 推定での検針、計量器の交換、検針期間が通常より長い・短い、指示数の桁あふれ(一巡)を印にします
- 保安の言葉の検知 … 「におい」「漏れ」「警報器が鳴る」などがあれば、以降の処理を止めて保安の窓口へ回します
- 個人情報の除去 … 氏名・住所・電話番号・メールアドレスは AI に渡す本文から伏せます
- 差し込みの印の一覧を作る … 使ってよい値を
current.usageprev.amount_totaldiff.by_usageのような名前の付いた表にします
1番目の分解は、合計が合うように作ります。 4つの差を足したものが、合計の差と一致することをプログラムで確かめます。一致しなければ、明細に想定外の項目があるので、下書きを作らずにオペレーターへ知らせます。
AI に渡す差額の表は、次のような形です。値の列はプログラムが明細から入れ、AI は印の名前の列だけを使って文章を書きます。
| 要因 | 差し込みの印 | 中身 |
|---|---|---|
| 比べた月 | compare.month | 前年同月か前月か |
| 使用量の差による分 | diff.by_usage | 比べる月の単価 × 使用量の差 |
| 単価の差による分 | diff.by_unit_price | 燃料費調整と従量の単価の変化 × 今月の使用量 |
| 日数の差 | diff.days と diff.daily_usage | 検針期間の日数の差と、1日あたりの使用量 |
| 割引・値引きの差 | diff.by_discount | 終わった・始まった割引の額 |
| 合計の差 | diff.total | 4つの和。明細の合計の差と一致することを検算済み |
表には符号も入れておきます。 単価が下がって使用量が増えた月は、要因どうしが打ち消し合います。「増えた要因」と「減った要因」を両方並べないと、合計の差だけでは説明がつきません。
3番目は、AIの判断に頼りません。 ガスのにおいの申し出を文面対応の列に並べておくこと自体が、危険です。言葉の一覧で拾い、拾い過ぎは許容します。
AIに処理させる
させるのは、問い合わせの種類を選ぶこと、差額の表と検針の注意点から、問い合わせに沿った説明を書くこと、数字を差し込みの印で書くこと、担当へ回すべきかを示すことです。
| させること | 中身 |
|---|---|
| 種類の選択 | 請求額の増減/検針値の疑問/日割り・契約変更の計算/支払・請求書の送付/その他 |
| 説明の順番 | 差額の大きい要因から順に、問い合わせが聞いていることに先に答える |
| 説明の本文 | 料金表と単価表の言葉を使い、お客さまが読める言い方にする |
| 差し込みの印 | 金額・使用量・単価・日数を、すべて渡した印の名前で書く |
| 担当へ回す理由 | 推定での検針・計量器の交換・検針値の異議・返金の要望 |
| させないこと | 理由 |
|---|---|
| 数字を直接書く | 転記の誤りを無くすため。値は明細からプログラムが入れる |
| 差額の計算 | 分解はプログラムで済ませてある。AIが計算し直すと内訳がずれる |
| 検針の誤りや計量器の不具合の断定 | 現地の確認が要る。再検針の手配は担当が決める |
| 返金・減額・支払猶予の約束 | 料金の担当と社内の規程で決めること |
| 節約の助言 | 求められていない助言は、説明の本筋をぼかす。聞かれた場合だけ定型の案内を付ける |
1行目がこの構成の要です。 数字を直接書かせない理由は、AIの計算が苦手だからというより、明細の値をそのまま写す工程を、人の手からも AI の手からも外すためです。
3行目の「断定しない」も明記が要ります。 使用量が前年の倍になっていれば、AIは「計量器の不具合の可能性があります」と書きたがります。お客さまにとって、それは「会社が誤りを認めた」と読めます。 推定での検針や計量器の交換の印があっても、書くのは「担当より改めてご連絡します」までにします。
指示内容を固定する
あなたは電気・ガスの小売事業者のお客さまセンターで、
料金と検針の問い合わせに回答の下書きを作る担当です。
下書きはオペレーターが確かめてから送ります。
【使ってよい情報】
- 【差額の表】【検針の注意点】【料金表の抜粋】【お知らせ】だけ
- 数字はすべて【差し込みの印の一覧】の名前で書いてください
例:{{current.usage}}、{{diff.by_unit_price}}
- 一覧に無い印を作らないでください
【やること】
1. 問い合わせの種類を category から1つ選ぶ
bill_change / meter_reading / proration / payment / other
2. 問い合わせが聞いていることに、最初の段落で答える
3. 差額の表の要因を、差額の大きい順に説明する
比べた月を必ず書く({{compare.month}})
4. 検針の注意点に印があれば、その旨を伝え、担当から連絡すると書く
【厳守事項】
- 数字(金額、使用量、単価、日数、日付)を直接書かないでください。
必ず差し込みの印で書いてください。
- 差額を計算し直さないでください。差額の表の値をそのまま使ってください。
- 検針の誤り、計量器の不具合、請求の誤りを断定しないでください。
「確認のうえ、担当よりご連絡いたします」と書いてください。
- 返金、減額、支払の猶予を約束しないでください。
- 料金表の抜粋に無い料金の仕組み(他のメニュー、他社の料金)を
説明しないでください。
- 問い合わせに書かれていない生活の事情(家族の人数、在宅の時間など)を
推測して書かないでください。
- お客さまを責める言い方(「使いすぎ」など)をしないでください。
- 保安(ガスのにおい、漏れ)に関わる記述に気づいたら、
escalate に safety と入れ、本文を書かないでください。
【問い合わせ(個人情報は伏せ字済み)】{inquiry_text}
【契約の料金メニュー】{plan_name}
【差額の表】{diff_table}
【検針の注意点】{meter_flags}
【料金表の抜粋】{tariff_excerpt}
【お知らせ】{notices}
【差し込みの印の一覧】{placeholder_list}
「差額を計算し直さない」は、数字を書かない指示とは別に必要です。 数字を印で書くよう言っても、AIは「{{current.amount_total}}から{{prev.amount_total}}を引くと」と計算の手順を文章で書くことがあります。差額の表に値があるので、その印を使えば足ります。
「推測して書かない」は、説明を親切にしようとして起きる失敗を止めます。 冬の使用量の増加に「ご家族が在宅の時間が増えたことなどが考えられます」と書くと、事実ではないことを会社の名前で書いたことになります。
出力形式を固定する
次の形の JSON で受け取ります。
{
"category": "bill_change | meter_reading | proration | payment | other",
"answer_draft": "",
"placeholders_used": [""],
"factors_order": ["usage | unit_price | days | discount"],
"escalate": "none | meter_check | refund_request | safety | operator_judgment",
"escalate_reason": ""
}
1つ目の理由は、placeholders_used で置き換えの検査ができることです。 本文に出てくる {{...}} と、placeholders_used と、差し込みの印の一覧の3つを突き合わせます。一覧に無い印が1つでもあれば、作られた値の入る場所があるということなので、下書きを止めます。
2つ目は、escalate を列挙型で縛れることです。 構造化出力では列挙型が使えます。再検針の手配や返金の検討に回す件数を、この値で毎日数えます。
3つ目は、factors_order で説明の順番を検査できることです。 差額の表で最も大きい要因が先頭に来ていなければ、オペレーターに印を付けます。大きな要因を後回しにした説明は、正しくても納得されません。
スキーマの書き方には制約があります。 公式ページでは、すべてのフィールドを必須にし、オブジェクトに additionalProperties: false を設定すること、文字列の pattern や配列の minItems などがサポートされないことが書かれています。「本文に数字が無いこと」はスキーマで表せないので、後段の正規表現で見ます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 顧客管理のシステム | 画面のボタンから Azure Functions を呼ぶ/下書きの欄へ書き戻す | 起点と下書きの表示 |
| 料金計算のシステム | 照会の API(読み取りのみ) | 明細と検針の記録 |
| 料金表のデータ | 社内のデータベースを読む | 単価と適用期間 |
| Azure OpenAI | 推論の API(構造化出力) | 説明の下書き |
| 検針・料金の担当 | 顧客管理のシステムの担当への依頼 | escalate があるときにオペレーターが回す |
下書きの置き換え後の文面は、下書きの欄に入れます。 送信の欄には入れません。オペレーターが下書きを写して直し、送信の操作をします。
担当への依頼も、オペレーターの操作にします。 escalate が meter_check でも、自動で再検針を手配しません。お客さまが求めていない現地の訪問が入ると、それ自体が問い合わせの種になります。
人が確認する
全件、オペレーターが読んでから送ります。 送らずに下書きを捨てる判断も、オペレーターに任せます。
- 比べた月を確かめる … 下書きの冒頭に出る比べた月が、問い合わせの意図と合っているかを見ます
- 最大の要因が先頭にあるかを見る … 印が付いていれば、順番を直します
- 検針の注意点を読む … 推定での検針や計量器の交換があれば、担当へ回すかを決めます
- 言い回しを確かめる … 断定や約束になっていないか、お客さまを責めていないかを読みます
- 送る … 直した箇所は記録に残ります
1番目を省かないでください。 対象の月を1か月取り違えると、下書きの数字はすべて正しい明細の値なのに、問い合わせと関係のない月の説明になります。数字の検査では見つからない誤りです。
目標は、1件あたり7分です。 画面を行き来する時間と、差額を電卓で分ける時間がほぼ無くなります。読む・直す・判断する時間は残ります。
例外に対処する
| 起きること | 対応 |
|---|---|
| 保安に関わる言葉がある | 下書きを作らず、保安の窓口へすぐ回す。文面の列に並べない |
| 4つの差の合計が合計の差と合わない | 下書きを作らず、オペレーターへ「明細に想定外の項目」と知らせる |
| 前年同月の明細が無い | 前月とだけ比べる。比べた月を下書きに出す |
| 検針期間の途中で料金が改定された | 「改定をまたぐ月」の印を付け、該当の説明はオペレーターが書く |
| 推定での検針・計量器の交換 | 下書きに「担当よりご連絡」と書き、escalate を meter_check にする |
| 一覧に無い差し込みの印がある | 下書きを止める。作られた値の入る場所があるため |
| 本文に数字が直接書かれている | 数字に印を付け、オペレーターの確認を必須にする |
| 1通に複数の契約の質問がある | 契約ごとに下書きを作り直す。電気とガスを1つの差額の表にしない |
| Azure OpenAI が応答しない | 下書きの欄を「作成できませんでした」にして、従来の手順で対応する |
2行目は、明細の項目が増えたときに起きます。 新しい値引きや一時的な調整の項目が始まると、分解の計算が知らない項目を取りこぼします。合計が合わないことで気づけるように、検算を必ず入れます。
8行目は、セット契約で起きやすい失敗です。 電気とガスの差額を1つの表にまとめると、ガスの使用量の単位(立方メートル)と電気の単位(キロワット時)が混ざった説明になります。
記録を残す
- 問い合わせの原文と、AI に渡した伏せ字後の本文
- 使った明細(3か月分)と検針の記録、料金表の版と単価の、取得した時点の値
- 差額の表と検算の結果
- Azure OpenAI の出力の JSON と、置き換え前・後の下書き
- オペレーターが直した箇所の差分と、送った文面
escalateの値と、担当へ回したかどうか
2つ目で「取得した時点の値」を残すのは、明細が後から訂正されるためです。 訂正の前の値で説明していたなら、送った回答は当時としては正しかったことになります。後から苦情を受けたとき、当時の明細が残っていないと説明できません。
5つ目の差分は、プロンプトの手直しの材料です。 オペレーターが毎回書き足している説明(たとえば検針期間の日数の違い)があれば、差額の表の出し方か指示を直します。
04実装レベルの3段階
最小構成では件数がさばけません。 差額の表を手で作るので、1件あたりの時間はむしろ増えます。説明の質を確かめるための段階です。 半自動化で、1件15分が9分程度になります。 画面の行き来と電卓での分解が無くなります。ただし、AIが書いた数字をオペレーターが明細と見比べる時間が残ります。 本格構成で差し込みの印に切り替えると、その見比べが要らなくなり、7分になります。この段階が本記事の想定です。 半自動化の段階で、検算が合わない件数を数えてください。 合わない件数が多ければ、明細の項目の取り方に漏れがあります。本格構成に進む前に、そこを直します。
05工数削減シミュレーション
導入後 2,400件 × 7分 ÷ 60 = 280 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 家庭向けに電気と都市ガス(またはどちらか)を売っている小売事業者や、公営のガス・水道の料金センターのうち、料金と検針の問い合わせを Web フォームとメールで月に数千件受けている場合。料金計算のシステムから、請求ごとの明細(検針期間、使用量、基本料金、従量料金、燃料費調整額、各種の割引など)を項目ごとに取り出せる場合。料金メニューごとの料金表を、適用期間付きで電子データとして持っている場合。Azure を使っている場合。
- 料金の問い合わせの大半が電話で、文面の回答をほとんど作っていない場合。料金計算のシステムから明細を項目ごとに取り出せず、請求書の画像しか無い場合。料金メニューが数種類しかなく、定型文で足りている場合。なお、検針の誤りや計量器の不具合の判断、料金の返金・減額の判断、ガス漏れなど保安に関わる申し出への対応は、この構成では代替できません。
07最小構成で試す方法
- 先月の料金の問い合わせから20件を選ぶ(使用量の増加、単価の変化、日数の違い、割引の終了がそれぞれ主因のものを混ぜる)
- 20件それぞれの3か月分の明細を表計算に写し、4つの差を手で計算した表を作る
- 社内で使える Azure OpenAI のチャットの画面に、問い合わせ(個人情報は伏せる)、差額の表、料金表の抜粋を貼る
- 「差額の表の数字だけを使い、差額の大きい要因から説明してください。数字を計算し直さないでください」と指示する
- 出てきた下書きを、当時の回答と並べて読む
最小構成では数字を直接書かせてかまいません。 確かめたいのは、分解済みの表を渡せば、問い合わせに沿った説明になるかです。差し込みの印の仕組みは、その次の段階で作ります。
| 出てきた内容 | 判断 |
|---|---|
| 最大の要因から説明し、当時の回答より抜けが少ない | 差し込みの印と明細の自動取得に進む |
| 表の数字を足し引きし直して、内訳がずれた | 指示の書き方で直る。構成は有効 |
| 問い合わせが聞いていない要因ばかり説明した | 問い合わせの種類ごとに、説明する要因を絞る規則が要る |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| AIが差額を計算し直し、内訳がずれる | 分解はプログラムで行う。 AIには分けた表だけを渡し、計算し直しを禁じる |
| 明細の値の転記を誤る | 数字は差し込みの印で書かせ、プログラムが置き換える |
| 一覧に無い印を作る | 印の一覧と突き合わせ、無ければ下書きを止める |
| 対象の月を1か月取り違える | 対象の月はオペレーターが確かめてから起動する |
| 改定をまたぐ月を今の単価で説明する | 料金表に適用期間を持たせ、またぐ月は印を付けて人が書く |
| 検針の誤りや計量器の不具合を認めた文面になる | 断定を禁じ、担当から連絡する書き方に固定する |
| 生活の事情を推測して書く | 推測を禁じる。問い合わせに書かれたことだけで説明する |
| ガスのにおいの申し出が文面の列に並ぶ | 言葉の一覧で拾い、下書きを作らずに保安の窓口へ |
| 電気とガスを1つの表にまとめる | 契約ごとに差額の表を作り、下書きも分ける |
| 新しい値引きの項目を分解が取りこぼす | 検算で合計の一致を確かめる。合わなければ止める |
上の3行が、この構成の失敗のほとんどです。 どれも「数字をどこで作るか」の問題で、AIに数字を作らせない設計にしておけば、起きる場所がありません。
下から3行目は、文面対応の窓口を作るときに必ず決めておく線です。 保安に関わる申し出は、文面であっても電話の窓口と同じ速さで扱います。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: お客さまの氏名・住所・連絡先、契約の情報、請求の明細、検針の記録(使用量の推移は生活の様子を映す情報です)、問い合わせの本文です。
- AIに渡す範囲を絞る … 氏名・住所・連絡先は伏せ、明細も差額の表と比べる月の値だけを渡します。30分ごとの使用量の記録は渡しません
- 処理の地域を決める … 公式の説明では、プロンプトと応答は顧客が指定した地域の中で処理され、Global や DataZone のデプロイの種類ではそれぞれの範囲で処理されうるとされています。日本の地域の標準のデプロイを選びます
- 学習への利用と不正利用の監視を確かめる … 公式の説明では、プロンプトと応答は他の顧客や OpenAI に提供されず、基盤モデルの学習に使われないとされています。一方で、不正利用の監視の仕組みがあり、兆候が検知されるとプロンプトと応答の一部が確認の対象になり、必要に応じて人が確認するとされています。監視の扱いの変更を申請できる条件に当たるかを確かめます
- 履歴を残す機能を使わない … Responses API はメッセージの履歴を保存する機能とされています。1件で完結する処理なので、Chat Completions API を使います
- 回答を人が確かめてから送る … 電気事業法第2条の15とガス事業法第16条では、小売事業者は料金その他の供給条件についての苦情と問合せを適切かつ迅速に処理しなければならないとされています。速さのためにAIの下書きをそのまま送る設計にはしません。 誤った説明は、処理したことになりません
- 料金表の説明は、契約時の説明と食い違わせない … 電気事業法第2条の13とガス事業法第14条では、契約の締結の際に料金その他の供給条件を説明し、書面を交付しなければならないとされています。回答で使う料金表の言葉は、その説明の書面と同じものにそろえます
誤りが起きた場合のリスクは、誤った数字で説明して、お客さまが請求そのものを疑うことと、検針の誤りを認めたように読める文面を出すことの2つです。 前者は数字を差し込みの印にすることで、後者は断定を禁じてオペレーターが読むことで防ぎます。
10まず何から始めるか
1週目:明細の項目と料金表をそろえる
料金計算のシステムから取り出せる明細の項目を一覧にし、料金メニューごとの料金表に適用期間が付いているかを確かめます。付いていなければ、過去2年分の改定の日付から付け直します。
2週目:20件で試す
先月の問い合わせから20件を選び、差額の表を手で作ってチャットの画面に貼ります。最大の要因から説明できたか、表の数字を計算し直さなかったかを見ます。
3週目:分解の規則を決める
料金の担当と一緒に、4つの差の計算の仕方と、検算の規則を決めます。段階のある従量料金とセット割引のメニューで、合計が一致するかを必ず確かめます。 あわせて、保安の言葉の一覧を保安の担当と決めます。
4週目:明細の取得と分解をつなぐ
照会の API で3か月分の明細を取り、差額の表と検算をプログラムで作るところまで動かします。この時点では下書きを作らず、オペレーターに差額の表だけを見せます。 それだけで①と②の時間が減るかを確かめます。
2か月目: 構造化出力の下書きと、差し込みの印での置き換え・検査をつなぎ、オペレーターが直した差分を記録します。3か月目以降: 差分の多い種類の指示を直し、1件15分が何分になったかを実測します。燃料費調整の単価が大きく動いた月にも、検算が合ったまま下書きが出せた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 小売電気事業者等が、小売供給契約の締結の際に料金その他の供給条件を説明し、書面を交付しなければならないこと(第2条の13)。小売電気事業者が、料金その他の供給条件についての小売供給の相手方からの苦情及び問合せを適切かつ迅速に処理しなければならないこと(第2条の15) | e-Gov 法令API: 電気事業法 | 2026-10-15 |
| ガス小売事業者等が、小売供給契約の締結の際に料金その他の供給条件を説明し、書面を交付しなければならないこと(第14条)。ガス小売事業者が、料金その他の供給条件についての小売供給の相手方からの苦情及び問合せを適切かつ迅速に処理しなければならないこと(第16条) | e-Gov 法令API: ガス事業法 | 2026-10-15 |
構造化出力が指定した JSON スキーマに従い、Chat Completions API と Responses API の両方で使えること。すべてのフィールドを必須にし additionalProperties: false を設定すること。pattern・minItems などがサポートされないこと。列挙型が使えること | Microsoft Learn: Azure OpenAI で構造化出力を使用する方法 | 2026-10-15 |
| プロンプトと応答が他の顧客や OpenAI に提供されず、基盤モデルの学習に使われないこと。プロンプトと応答は顧客が指定した地域で処理され、Global と DataZone のデプロイではそれぞれの範囲で処理されうること。Responses API がメッセージの履歴を保存すること。不正利用の監視で兆候が検知されるとプロンプトと応答の一部が確認の対象になり、必要に応じて人が確認すること。監視の扱いの変更を申請できること | Microsoft Learn: Data, privacy, and security for Foundry Models sold by Azure | 2026-10-15 |
料金の返金・減額の扱い、再検針の手配の基準、保安の申し出の受け方は、自社の約款・社内の規程と保安の規程で決めてください。 本記事は、上記の公開情報で確認できた範囲だけを扱っています。料金メニューと燃料費調整の仕組みは、事業者ごとに異なります。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1699)についてのご相談はこちらから。
