ハイヤー会社が法人の契約先から届く乗務への意見・苦情の記録を毎月要約し、乗務員の指導と運行の改善の論点を作る
法人の契約先から届く乗務への意見・苦情の記録を、営業所・乗務員・契約先にひも付けて毎月要約します。指摘を区分してまとめ、乗務員の指導と、配車・車両・待機の運行の改善で話す論点を、原文の引用つきで作ります。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- その他/物流
- 対象部門
- カスタマーサポート/総務
- 対象業務
- 要約/集計・分析
- 主な課題
- データ分析に時間がかかる/人手が足りない/引き継ぎができていない
- AIで行う処理
- 要約
- 主な効果
- 判断支援/品質標準化/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 申出を受けた営業所が契約先に弁明し、苦情の記録に書く
- 月末に、本社のお客様相談の担当が4営業所の記録を集める
- 1件ずつ読み、乗務員と契約先、運行の日時を配車の記録で確かめる
- 指摘を「時刻」「経路」「接遇」「車内」「車両」「配車の連絡」などに分けて集計表に書き写す
- 同じ乗務員・同じ契約先への指摘を探して並べる
- 営業所ごとの月の報告を書き、運行管理者と本社の会議に回す
- 運行管理者が報告を読み、乗務員の指導に使う
- 人申出を受けた営業所が契約先に弁明し、苦情の記録に書く(これまでどおり)
- 自動毎月の第1営業日に、4営業所の記録と月次の満足度の調査の自由記述を集める
- 自動Python が記録を配車の記録にひも付け、乗務員の番号・契約先・運行の種類・日時を付ける
- 自動乗務員の氏名・契約先の担当者の氏名・乗客の氏名を記号に置き換える
- 自動Claude API が1件ずつ、申出の要約、調べた結果の要約、区分、原因の所在、引用を返す
- 自動Python が営業所・乗務員・契約先・区分ごとに件数を数え、前月・前々月と比べる
- 自動Claude API が営業所ごとの指導の論点と、営業所をまたぐ運行の改善の論点の下書きを作る
- 人お客様相談の担当が論点と引用を読み、元の記録で確かめて報告にする
- 人運行管理者が報告をもとに乗務員の指導を行い、指導の記録を付ける
各工程の詳しい説明を読む
- 申出を受けた営業所が契約先に弁明し、苦情の記録に書く
- 月末に、本社のお客様相談の担当が4営業所の記録を集める
- 1件ずつ読み、乗務員と契約先、運行の日時を配車の記録で確かめる
- 指摘を「時刻」「経路」「接遇」「車内」「車両」「配車の連絡」などに分けて集計表に書き写す
- 同じ乗務員・同じ契約先への指摘を探して並べる
- 営業所ごとの月の報告を書き、運行管理者と本社の会議に回す
- 運行管理者が報告を読み、乗務員の指導に使う
(a)記録の書き方が営業所で違う。 申出の言葉をそのまま書く営業所と、要約して書く営業所があり、同じ「接遇」の指摘でも中身の詳しさが違います。 集計表に書き写すときに、担当が書き方をそろえ直しています。
(b)同じ指摘が別の営業所で繰り返される。 「来客の送迎で、受付への到着の連絡が無かった」という指摘が、ある営業所で直ったあと、別の営業所で同じ契約先から出ることがあります。営業所をまたいで読み返す人がいないと、直した経験が共有されません。
(c)申出と調べた結果が混ざる。 担当が集計表に書き写すとき、申出の「遅れた」と、調べた結果の「指定の場所の誤り」を1行にまとめてしまうことがあります。集計表だけを見た運行管理者が、乗務員に時刻の指導をすることになります。
(d)担当が替わると経緯が分からない。 契約先との間で何度かやり取りのあった指摘は、記録が月をまたいで散らばります。営業所の担当が異動すると、その契約先に何を約束していたかが追えません。
- 【人】 申出を受けた営業所が契約先に弁明し、苦情の記録に書く(これまでどおり)
- 【自動】 毎月の第1営業日に、4営業所の記録と月次の満足度の調査の自由記述を集める
- 【自動】 Python が記録を配車の記録にひも付け、乗務員の番号・契約先・運行の種類・日時を付ける
- 【自動】 乗務員の氏名・契約先の担当者の氏名・乗客の氏名を記号に置き換える
- 【自動】 Claude API が1件ずつ、申出の要約、調べた結果の要約、区分、原因の所在、引用を返す
- 【自動】 Python が営業所・乗務員・契約先・区分ごとに件数を数え、前月・前々月と比べる
- 【自動】 Claude API が営業所ごとの指導の論点と、営業所をまたぐ運行の改善の論点の下書きを作る
- 【人】 お客様相談の担当が論点と引用を読み、元の記録で確かめて報告にする
- 【人】 運行管理者が報告をもとに乗務員の指導を行い、指導の記録を付ける
8番目が、この設計の分かれ目です。 担当は180件を読み直すのではなく、論点ごとに引用された記録の原文を開きます。 論点にならなかった記録は件数の表で流し見ます。全件を読み直す設計にすると、30.0時間はほとんど減りません。
9番目は人のままにします。 乗務員への指導は、運行管理者が乗務員と向き合って行うものです。AIの出した論点は、その準備の材料です。
02今回想定するシステム構成
営業所ごとの苦情の記録(申出・原因究明の結果・弁明・改善措置・担当者) 月次の満足度の調査の自由記述 │ ▼【トリガー】毎月第1営業日の朝 Python ── 配車の記録にひも付け(乗務員・契約先・運行の種類・日時) │ 氏名を記号に置き換える ▼ Claude API ── 1件ずつ:申出の要約/調べた結果の要約/区分/原因の所在/引用 ▼ Python ── 営業所・乗務員・契約先・区分ごとの件数、前月との比較 ▼ Claude API ── 営業所ごとの指導の論点/営業所をまたぐ運行の改善の論点 ▼ 月の報告の下書き ▼ 【人】お客様相談の担当が確かめ、運行管理者が指導に使う
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | Claude API(記録の要約と区分、論点の下書き) | OpenAI API、Gemini API |
| 集計 | Python(ひも付け、記号への置き換え、件数の集計) | Google Apps Script |
| 連携 | 配車と運行の記録の仕組み、営業所の苦情の記録(既存) | 社内のデータベース |
| 保管 | 本社の共有フォルダ(権限を絞ったもの) | 文書管理の仕組み |
配車の記録と苦情の記録は、新しく足すものではありません。 この構成は両方を読むだけで、苦情の記録にも配車の記録にも書き込みません。
苦情の記録の欄は、法令で決まった項目に沿っています。 旅客自動車運送事業運輸規則は、旅客自動車運送事業者が苦情の申出を受け付けたとき、苦情の内容、原因究明の結果、苦情に対する弁明の内容、改善措置、苦情処理を担当した者を営業所ごとに記録し、整理して1年間保存しなければならないとしています。この5つの欄が、AIに渡す入力の骨組みになります。
出力は構造化出力で受けます。 output_config.format に JSON スキーマを渡すと、応答がスキーマに沿った形になります。スキーマには文字列の長さの制約を書けず、配列の minItems も 0 か 1 しか使えないとされているため、要約の長さや論点の数は Python の側で確かめます。
データの扱いの条件も確かめておきます。 Claude API の公式の説明では、プロンプトと応答は既定では保持されず(30日の保持が要る一部のモデルを除く)、構造化出力もJSON スキーマだけが最後の利用から最大24時間キャッシュされるとされています。ただし、自動の安全の仕組みで検知された場合は、入力と出力が最大2年保持されることがあるとも書かれています。
03どうやって実装するのか
処理の起点を決める
毎月の第1営業日の朝に、前月の分をまとめて動かします。 記録が付くたびに動かすことはしません。1件ずつの要約は、営業所や契約先をまたいで並べて初めて意味を持つからです。
対象は、前月の1日から末日までに申出を受け付けた記録です。 月末に受け付けて、原因究明の結果が翌月に書き足される記録があります。原因究明の結果の欄が空の記録は、investigation_pending として今月の要約に入れ、翌月にも結果を書き足したものを入れ直します。 空のまま区分すると、申出の内容だけで原因の所在が決まってしまうからです。
月次の満足度の調査は、締切の翌営業日に回答を書き出します。 調査の締切が月末と違う場合は、締切に合わせて第1営業日のあとにもう一度動かします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 苦情の記録 | 受付の日時、申出の手段、苦情の内容、原因究明の結果、弁明の内容、改善措置、担当した者、営業所 | 営業所ごとの記録 |
| 運行の情報 | 運行の番号、日時、乗務員の番号、車両、契約先、運行の種類(役員送迎・来客送迎・貸切)、指定の場所と時刻 | 配車と運行の記録の仕組み |
| 満足度の調査 | 契約先、月、5段階の評価、自由記述 | 調査のフォーム |
| 区分の一覧 | 時刻、経路、接遇、車内の環境、車両、配車の連絡、予約の受付、請求、おほめ、その他と、それぞれの定義 | 本社が決める一覧 |
| 前月・前々月の集計 | 区分・営業所・契約先ごとの件数 | 前回の処理の記録 |
質を決めるのは、運行の番号でひも付くかどうかです。 記録に運行の番号が書かれていれば、乗務員と指定の時刻が配車の記録から引けます。書かれていない記録は、契約先と受付の日時から近い運行を探すことになり、ひも付けの確からしさが下がります。
指定の場所と時刻を持たせるのは、原因の所在を確かめるためです。 「遅れた」という申出に対し、配車の記録の指定の時刻と実際の到着の時刻を並べると、乗務員の側の遅れか、指定そのものの行き違いかが分かります。 この比較は Python が行い、結果をAIに渡します。
データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 苦情の記録 | 4営業所の記録のファイルを Python で読む | 要約と区分の本体 |
| 運行の情報 | 配車と運行の記録の仕組みの書き出し(CSV) | 乗務員・契約先・時刻のひも付け |
| 指定と実際の時刻の差 | Python が運行の情報から計算 | 時刻の指摘の確かめ |
| 満足度の調査 | フォームの回答の書き出し | 自由記述 |
| 契約先の台帳 | 契約先の番号と名称 | 契約先ごとのまとめ |
営業所ごとの記録の列の名前は、読み込むときにそろえます。 営業所によって「原因」「調査結果」「確認結果」のように列の名前が違うことがあるため、5つの法定の項目への対応表を Python に持たせます。 対応の取れない列は、読み込みの段で止めて担当に知らせます。
満足度の調査の自由記述は、運行にはひも付けません。 月の全体についての声だからです。契約先と月だけを付けて、記録とは別の束として扱います。
AIへ渡す前に整形する
- 列の名前の統一 … 営業所ごとの記録の列を、5つの法定の項目と受付の日時・手段・営業所にそろえます
- 運行へのひも付け … 運行の番号で引き、無ければ契約先と受付の日時で候補を探し、確からしさを付けます
- 時刻の差の計算 … 指定の時刻と実際の到着の時刻の差を、分で出します
- 記号への置き換え … 乗務員の氏名を乗務員の番号に、契約先の担当者と乗客の氏名を
担当A・乗客Bのような記号に置き換えます - 空の欄の印付け … 原因究明の結果・改善措置の欄が空のものに印を付けます
- 事故・けがの申出の分離 … 事故やけが、物の破損に関わる申出は、要約の流れから外します
- 区分の一覧の版の固定 … その月に使う区分の一覧の版を記録します
4番目を省かないでください。 役員の送迎の記録には、乗客である役員の名前と行き先が書かれていることがあります。誰がいつどこへ行ったかは、契約先にとって外に出せない情報です。 論点を作るのに、乗客の名前は要りません。
6番目は、要約の流れに乗せないでください。 事故やけがの申出は、保険と事故の報告の手順で1件ずつ扱うものです。
AIに処理させる
AIの仕事は2回に分けます。 1回目は記録1件ずつの要約と区分、2回目は営業所ごとと営業所をまたぐ論点の下書きです。
1回目(1件ずつ)
| させること | 中身 |
|---|---|
| 申出の要約 | 苦情の内容の欄を1〜2文で。契約先の言葉に沿って |
| 調べた結果の要約 | 原因究明の結果の欄を1〜2文で。空なら investigation_pending |
| 区分 | 区分の一覧から1つ。おほめの言葉なら praise |
| 原因の所在 | driver(乗務の行い)/dispatch(配車・予約の受付)/vehicle(車両)/customer_side(指定の行き違いなど契約先の側)/unclear |
| 引用の候補 | 区分と原因の所在の根拠にした文を、記録からそのまま1つずつ写す |
| 改善措置の有無 | 改善措置の欄に書かれているか |
原因の所在は、調べた結果の欄からだけ決めさせます。 申出の内容だけで driver を付けると、乗務員に原因の無い指摘まで乗務員の指導に回ります。調べた結果の欄が空なら unclear です。 時刻の差の計算の結果は、その判断の材料として渡します。
2回目(まとめ)
Python が数えた件数と前月との差、1回目の要約と引用を渡し、営業所ごとに指導の論点を3つまで、営業所をまたいで運行の改善の論点を3つまで書かせます。論点には根拠の件数の記号と引用の記号を付けさせます。
| させないこと | 理由 |
|---|---|
| 件数・割合の計算 | Python が数える。生成AIの数字を報告に載せない |
| 乗務員の点数付け・順位付け | 評価に使わない。指導の材料にとどめる |
| 申出だけで原因を乗務員に置くこと | 調べた結果の欄からだけ原因の所在を決める |
| 乗務員の人柄・態度の推し量り | 記録に書かれた行いだけを扱う |
| 契約先への弁明の文の作成 | 弁明は営業所が申出を受けたときに済ませている |
| 事故・けがの申出の要約 | 別の手順で扱う |
3行目がいちばん起きやすい失敗です。 「約束の時刻に車が来なかった」という申出と、「契約先の秘書から指定された場所が本社の正面玄関で、実際の待ち合わせは別館だった」という調べた結果を渡すと、何も言わなければ区分を「時刻」、原因を「乗務員」にしてきます。申出の言葉のほうが強いからです。
指示内容を固定する
1回目の指示の例です。
あなたはハイヤー会社の本社で、法人の契約先から届いた意見・苦情の
記録を読み、翌月の指導と運行の見直しのために整理する立場です。
渡された記録と運行の情報だけをもとに答えてください。推測で補わ
ないでください。
【区分の一覧(版 {category_version})】{categories}
【答えること】
1. complaint_summary ..... 苦情の内容の欄を1〜2文で
2. finding_summary ....... 原因究明の結果の欄を1〜2文で
3. category .............. 区分の一覧から1つ
4. cause ................. driver/dispatch/vehicle/customer_side/unclear
5. quotes ................ category と cause の根拠にした文をそのまま
6. measure_recorded ...... 改善措置の欄に記載があるか(true/false)
【厳守事項】
- cause は、原因究明の結果の欄と、渡した時刻の差の値だけをもとに
決めてください。苦情の内容の欄だけで driver にしないでください。
- 原因究明の結果の欄が空なら、finding_summary を
investigation_pending とし、cause を unclear にしてください。
- 時刻の差は渡した値をそのまま使ってください。計算し直さないで
ください。
- quotes は記録の文をそのまま写してください。言い換えないで
ください。
- 乗務員の人柄・態度・能力を評価する言葉を書かないでください。
記録に書かれた行いだけを書いてください。
- 記号(乗務員の番号、担当A、乗客B など)を元の名前に戻そうと
しないでください。
- おほめの言葉は category を praise にし、何がよかったかを
記録の文のとおりに要約してください。
【運行の情報】{trip_info}(指定と実際の到着の時刻の差: {time_diff} 分)
【記録】
受付: {received} 手段: {channel} 営業所: {office}
苦情の内容: {complaint}
原因究明の結果: {finding}
弁明の内容: {response}
改善措置: {measure}
「苦情の内容の欄だけで driver にしない」を明記しないと、原因の所在は申出の言葉に引きずられます。 原因究明の結果の欄に反対のことが書かれていても、申出の言葉が強いと driver が付きます。欄を分けて渡し、どちらの欄から決めるかを指示で縛ります。
「人柄・態度・能力を評価する言葉を書かない」も外さないでください。 記録に「言葉遣いが冷たかった」と書かれていれば、何も言わなければ「接遇の意識が低い」と書いてきます。書かれているのは行いで、意識ではありません。
出力形式を固定する
1回目は次の形の JSON で受け取ります。
{
"record_id": "",
"office": "",
"trip_id": "",
"trip_link": "by_trip_id | by_time_match | unlinked",
"driver_no": "",
"client_id": "",
"complaint_summary": "",
"finding_summary": "",
"category": "",
"cause": "driver | dispatch | vehicle | customer_side | unclear",
"quotes": [ { "field": "complaint | finding", "text": "" } ],
"measure_recorded": true
}
2回目は、次の形で受け取ります。
{
"month": "2026-10",
"office_points": [
{ "office": "", "title": "", "basis_count_ref": "", "record_refs": [], "kind": "coaching | praise_share" }
],
"cross_office_points": [
{ "title": "", "basis_count_ref": "", "record_refs": [], "area": "dispatch | vehicle | waiting | booking" }
]
}
1つ目の理由は、cause で論点の行き先を分けられることです。 driver の指摘は営業所の運行管理者へ、dispatch と vehicle は本社の業務の担当へ、customer_side は担当の営業へ回します。同じ「時刻」の区分でも、行き先が違います。
2つ目は、quotes の field で、引用がどの欄から来たかが分かることです。 報告に引用を載せるとき、申出の言葉なのか、営業所が調べた結果なのかを見分けて載せられます。
3つ目は、kind に praise_share を持たせて、おほめの言葉を指導の論点と並べられることです。 よかった乗務を他の乗務員と共有する材料になります。
スキーマの制約は Python で確かめます。 quotes の文が記録に含まれているかを文字列の一致で調べ、含まれていなければその引用を報告に使いません。 office_points が営業所ごとに3つ以内かも、受け取った後に調べます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 営業所ごとの苦情の記録 | Python で読む | 記録の本体 |
| 配車と運行の記録の仕組み | CSV の書き出しを読む | 運行の番号・乗務員・時刻 |
| 調査のフォーム | 回答の書き出しを読む | 自由記述 |
| Claude API | API の呼び出し | 1件ずつの要約と区分、論点の下書き |
| 本社の共有フォルダ | Python が書き出す | 集計表と月の報告の下書き |
苦情の記録には書き戻しません。 法令で営業所ごとに付けて保存する記録なので、AIの要約が記録の欄に混ざらないようにします。 要約は別のファイルに持ち、記録の番号で結びます。
乗務員の指導の記録にも書き込みません。 指導を行ったら、運行管理者がこれまでどおり指導の記録を付けます。
人が確認する
人が確かめるのは、論点と、論点に使う引用です。
driverの論点を先に見る … 引用の記録を開き、原因究明の結果の欄が本当に乗務の行いを指しているかを確かめますunclearとinvestigation_pendingを営業所に返す … 原因の調べが終わっていない記録は、営業所の担当に書き足しを頼みますunlinkedの記録を片付ける … 運行にひも付かなかった記録は、担当が配車の記録で探します- 営業所をまたぐ論点を読む … 配車・車両・待機の論点は、本社の業務の担当と読み合わせます
- 区分を直したら記録する … どの区分・原因の所在から、どれへ変えたかを残します
1番目を省かないでください。 運行管理者は報告をもとに乗務員と話します。原因の無い指摘で指導を受けた乗務員は、次から記録そのものを信じなくなります。
乗務員にも、報告の作り方を伝えておきます。 指摘の要約にAIを使っていること、評価や処遇には使わないこと、指導の内容は運行管理者が決めていることを、営業所の朝礼などで説明します。
例外に対処する
| 起きること | 対応 |
|---|---|
| 原因究明の結果の欄が空 | investigation_pending。営業所に書き足しを頼み、翌月に入れ直す |
| 運行にひも付かない | unlinked。担当が配車の記録で探す |
| 時刻の候補が複数ある | 確からしさを下げて表示し、担当が選ぶ |
| 記録の列の名前が読めない | 読み込みで止め、営業所の担当に知らせる |
| 1件に複数の乗務員が関わる | 乗務員ごとに分けず、運行ごとに扱い、dispatch の論点の候補にする |
| 事故・けが・破損の申出 | 要約の流れから外し、事故の報告の手順へ |
| 申出が乗務員個人への強い非難 | 要約はするが、報告には件数だけを載せ、原文は営業所長が読む |
quotes が記録に含まれない | その引用を報告に使わない |
| 応答が途中で切れる | max_tokens を増やしてやり直す。途中までの要約を使わない |
上から3行目までが大半を占めます。 どれもAIの問題ではなく、記録の付け方の問題です。 営業所に「運行の番号を書く」「原因の調べを書いてから閉じる」を頼むと、論点の確かさが上がります。
記録を残す
- 読み込んだ記録の版(営業所ごとのファイルと取得日時)
- 列の名前の対応表と、区分の一覧の版
- 1回目の JSON と2回目の JSON
- Python の集計表(営業所・乗務員・契約先・区分・原因の所在ごとの件数)
- 担当が区分・原因の所在を直した記録
- 営業所に書き足しを頼んだ記録と、書き足された結果
- 運行管理者が指導に使った論点と、その後の月の同じ区分の件数
苦情の記録そのものの保存は、これまでどおり営業所で行います。 この構成の保存は、要約と集計の側の記録です。法令で求められる記録と、この構成の記録を混ぜないようにします。
最後の行が、この構成の本当の成果物です。 指導や配車の見直しのあと、同じ区分・同じ契約先の指摘が減ったかを毎月並べると、直したことが効いたかが分かります。
04実装レベルの3段階
最小構成では件数がさばけません。 1件ずつ貼るので、月180件には使えません。確かめるための段階です。 半自動化で、1件10分が5分程度になります。 要約と区分と集計は自動になりますが、営業所ごとの報告は担当が書きます。本格構成で3分になり、この段階が本記事の想定です。 差が大きいのは、同じ乗務員・同じ契約先の指摘を並べて論点を起こす作業が、毎月の手作業だからです。 段階を飛ばさないでください。 半自動化の集計表を2か月分見ると、investigation_pending の多い営業所と unlinked の多い営業所が先に分かります。記録の付け方を直してから本格構成に進むほうが、論点の確かさが上がります。
05工数削減シミュレーション
導入後 180件 × 3分 ÷ 60 = 9 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 法人の契約先を数百社持ち、役員の送迎や来客の送迎を受けているハイヤー会社で、契約先からの意見・苦情が営業所ごとの記録に月に百件を超えて残る場合。苦情の記録は付けているが、月ごとに読み返して乗務員の指導や配車の見直しにつなげる時間が取れていない場合。複数の営業所があり、営業所によって記録の書き方が違う場合。
- 契約先が十数社で、営業所長が意見の一件一件を覚えていられる場合。意見・苦情の記録を紙だけで付けていて、文字のデータになっていない場合。なお、乗務員の評価・処遇の判断、契約先への弁明の内容、事故やけがに関わる申出の扱いは、この構成では代替できません。
07最小構成で試す方法
- 前月の記録から40件を選ぶ(原因究明の結果が申出と食い違う記録を必ず含める)
- 乗務員・担当者・乗客の名前を手で記号に置き換える
- 区分の一覧を、定義と例文つきで用意する
- 1件ずつ手元の Claude の画面に貼り、「区分を1つ選び、原因の所在を原因究明の結果の欄からだけ決めてください。結果の欄が空なら unclear にしてください。人柄を評価しないでください」と指示する
- 出てきた区分と原因の所在を、お客様相談の担当2名が付けたものと突き合わせる
40件は必ずやってください。 配車の記録とのひも付けをつなぐ前に、申出と調べた結果を分けて読めるかを確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 担当2名とほぼ同じ区分と原因の所在が付いた | ひも付けと集計をつなぐ段階に進む |
申出の言葉に引きずられて driver を付けた | 指示の書き方で直る。構成は有効 |
| 原因究明の結果の欄が空の記録が多い | 記録の付け方を先に直す。 AIの問題ではない |
3行目が出ることは珍しくありません。 弁明が済むと、記録を閉じてしまう営業所があります。これまで指導の論点が担当の印象で作られていた理由が1つ分かったということです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 申出の言葉だけで原因を乗務員に置く | 原因の所在は調べた結果の欄からだけ決めさせる |
| 調べた結果が空のまま区分される | investigation_pending にして営業所に返す |
| 乗務員の人柄を評価する言葉が出る | 行いだけを書かせ、評価の言葉を禁じる |
| 件数を生成AIに数えさせる | Python が数える |
| 乗客の名前と行き先が残る | 置き換えの段で記号にする |
| 営業所ごとに列の名前が違って読めない | 法定の5項目への対応表を持つ |
| 運行にひも付かない記録が多い | 記録に運行の番号を書いてもらう |
| 要約を苦情の記録の欄に書き戻す | 書き戻さない。法定の記録と分ける |
| 乗務員ごとの件数が順位として回る | 件数は指導の材料として運行管理者だけが見る |
| 事故・けがの申出が要約に混ざる | 前処理で外し、事故の報告の手順へ |
| おほめの言葉が報告から落ちる | praise を区分に持ち、共有の論点にする |
上の3行が、この構成の失敗のほとんどです。 どれも、記録に書かれた事実より強い言葉が、乗務員についての結論になるところから起きます。原因の所在をどの欄から決めるかを最初に縛るかどうかで、運行管理者が報告を使えるかが決まります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 乗務員の氏名と乗務の記録、契約先の名称と担当者、乗客である役員・来客の名前と行き先、申出の内容です。誰がいつどこへ移動したかは、契約先にとって外に出せない情報です。
- 乗客と担当者の名前を外してから送る … 論点を作るのに、乗客が誰かは要りません。乗務員も番号に置き換え、名前は本社の対応表でだけ戻せるようにします
- データの保持の条件を確かめる … Claude API はプロンプトと応答を既定では保持しないとされていますが、自動の安全の仕組みで検知された場合は最大2年保持されることがあるとされています。強い非難や個人への攻撃を含む記録は、送る前に件数だけの扱いにすることも考えます
- 乗務員の評価・処遇に使わない … Anthropic の利用ポリシー(ページに 2026-11-12 発効と表示)は、従業員の評価を含む雇用の分野を高リスクの用途に挙げ、資格のある人の実質的な確認と、AIを使ったことの本人への開示を求めています。この構成は指導の材料までにとどめ、乗務員にAIを使っていることを説明します
- 感情を推し量らない … 同じポリシーは、医療・安全の理由を除いて人の感情を推し量る仕組みを禁じる項目を置いています。記録に書かれた行いだけを扱い、乗務員の気持ちや意識を推す要約にしないでください
- 法定の記録を変えない … 苦情の記録は、旅客自動車運送事業運輸規則で営業所ごとに付けて1年間保存するものです。AIの要約は別に持ち、記録には書き込みません
- 乗務員の指導の記録は運行管理者が付ける … 同じ規則は、運転者への指導監督の日時・場所・内容と、行った者・受けた者を記録し、営業所で3年間保存することを求めています。AIの論点を指導の記録の代わりにしないでください
誤りが起きた場合のリスクは、原因の無い指摘で乗務員を指導することと、乗客の移動の情報が外に出ることの2つです。 前者は原因の所在を申出の欄から決めると起き、後者は記号への置き換えを省くと起きます。
10まず何から始めるか
1週目:記録の列をそろえる
4営業所の苦情の記録の列を見比べ、苦情の内容・原因究明の結果・弁明の内容・改善措置・担当した者の5項目への対応表を作ります。運行の番号の列が無い営業所には、列を足してもらいます。
2週目:40件で試す
前月の記録から40件を選び、記号に置き換えて手元の Claude の画面で区分と原因の所在を付けさせます。担当2名と突き合わせ、申出の言葉に引きずられて原因を乗務員に置いていないかを最優先で見ます。
3週目:区分の一覧と説明の文を作る
区分の一覧に定義と例文を付けます。あわせて、乗務員に向けて、報告の作り方と評価に使わないことを説明する文を、運行管理者と作ります。
4週目:読み込みから集計表までをつなぐ
Python で4営業所の記録を読み込み、配車の記録にひも付け、記号に置き換えて API で要約し、件数の集計表を出すところまで作ります。この時点では論点を出さず、集計表だけを営業所に返します。
2か月目: 営業所ごとの指導の論点と、営業所をまたぐ運行の改善の論点を足します。3か月目以降: 1件10分が何分になったかを実測し、指導や配車の見直しのあとの同じ区分の件数を並べます。investigation_pending と unlinked が月に数件に収まり、報告が毎月第1週に届くようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 旅客自動車運送事業者は苦情を申し出た者に遅滞なく弁明しなければならないこと。苦情の申出を受け付けた場合、苦情の内容・原因究明の結果・弁明の内容・改善措置・苦情処理を担当した者を営業所ごとに記録し、整理して1年間保存しなければならないこと(第3条)。運転者に対する指導監督の日時・場所・内容・行った者・受けた者を記録し、営業所で3年間保存しなければならないこと(第38条) | e-Gov 法令API: 旅客自動車運送事業運輸規則 | 2026-10-29 |
構造化出力を output_config.format で指定すること。文字列の長さの制約に対応せず、配列の minItems は 0 と 1 のみであること。max_tokens で切れると不完全な出力になりうること。JSON スキーマが最後の利用から最大24時間キャッシュされること | Claude Docs: Structured outputs | 2026-10-29 |
| プロンプトと応答が既定では保持されず、30日の保持が要る一部のモデルを除くこと。自動の安全の仕組みで検知された場合は入力と出力が最大2年保持されうること。保持されたデータが明示の許可なく学習に使われないこと | Claude Docs: API and data retention | 2026-10-29 |
| 従業員の評価を含む雇用の分野を高リスクの用途に挙げ、資格のある人の実質的な確認と、AIを使ったことの本人への開示を求めること。医療・安全の理由を除き、人の感情を推し量る仕組みを禁じる項目があること。発効日の表示が 2026-11-12 であること | Anthropic: Usage Policy | 2026-10-29 |
乗務員の指導の内容と、契約先への対応は、運行管理者と営業所で決めてください。 本記事は法令と公式の資料で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2273)についてのご相談はこちらから。
