労働組合の事務局が、労働協約・組合規約・共済の手引きを Azure OpenAI に渡して組合員の質問にチャットで答え、個別の相談は役員に回す
組合員がチャットで聞いた質問に、労働協約・組合規約・共済の手引きの条文を検索して、根拠の条番号付きで答えます。ハラスメントや処遇の不満のような個別の相談には答えず、内容を整理して担当の役員へ回します。
- 生成AI
- Azure OpenAI Service/ChatGPT/Claude
- 連携・自動化
- Power Automate
- 対象業界
- その他/物流/製造/金融
- 対象部門
- 人事/総務
- 対象業務
- 分類・仕分け/問い合わせ対応
- 主な課題
- 人手が足りない/問い合わせが多い/属人化している
- AIで行う処理
- 対話
- 主な効果
- 対応スピード向上/属人化解消/工数削減
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- フォーム・メール・支部役員からの転送で質問が届く。事務局の書記が受付の一覧に書き写す
- 書記が質問を読み、協約・規約・共済の手引きのどれに関わるかを見当を付ける
- 共有フォルダのPDFを開き、該当しそうな条文を探す。改定があった条文は、どの版が今の版かを確かめる
- 条文を読んで回答を書く。判断に迷うものは書記長に聞く
- 個別の事情を含む相談は、書記長が読んで担当の役員(賃金・労働時間・安全衛生・共済の各担当)に回す
- 回答をメールで返し、受付の一覧に完了と書く
- 同じ質問が多いものは、年に数回、組合のWebサイトのよくある質問に足す
- 【組合員】 組合のポータルに組合員番号でログインし、チャットで質問する
- 自動質問を受け取り、個別の相談かどうかを先に判定する
- 自動質問であれば、現在有効な版の協約・規約・共済の手引きを検索し、該当する条文を取り出す
- 自動Azure OpenAI が条文だけを根拠に回答を作り、文書名と条番号、原文の引用を付けて返す
- 自動条文に答えが無いもの、解釈が分かれるものは「事務局が確認して返信します」と返し、事務局の確認待ちに入れる
- 自動個別の相談は回答せず、相談の種類と要点を整理して担当の役員へ通知し、組合員には受け付けたことと連絡の目安を返す
- 人事務局が確認待ちのものに返信し、役員が相談を受けて組合員に連絡する
- 人事務局が毎日、前日の回答から抜き取りで確認し、誤りがあれば組合員に訂正を送る
各工程の詳しい説明を読む
- フォーム・メール・支部役員からの転送で質問が届く。事務局の書記が受付の一覧に書き写す
- 書記が質問を読み、協約・規約・共済の手引きのどれに関わるかを見当を付ける
- 共有フォルダのPDFを開き、該当しそうな条文を探す。改定があった条文は、どの版が今の版かを確かめる
- 条文を読んで回答を書く。判断に迷うものは書記長に聞く
- 個別の事情を含む相談は、書記長が読んで担当の役員(賃金・労働時間・安全衛生・共済の各担当)に回す
- 回答をメールで返し、受付の一覧に完了と書く
- 同じ質問が多いものは、年に数回、組合のWebサイトのよくある質問に足す
(a)同じ質問に毎回条文を探し直している。 一時金の支給日、特別休暇の日数、共済の結婚祝金の申請期限といった質問は毎月何十件も届きます。答えは毎回同じなのに、毎回PDFを開いて条文を探します。 よくある質問のページは年に数回しか更新されず、協約の改定に追いついていません。
(b)答えられる人が書記長に偏っている。 書記は条文を探せますが、「この条文とこの別表の関係」「去年の改定で何が変わったか」は書記長に聞きます。書記長が交渉の期間に入ると、回答が止まります。 交渉の直後は改定の質問が集中する時期と重なります。
(c)質問と相談が同じ入口に混ざっている。 「特別休暇の日数を教えてください」の次に「休みの申請を上司に断られました」が届きます。後者を条文の回答で返してしまうと、組合員は二度と相談に来ません。 書記は全件を読み分けてから手を付けるので、読み分けだけで時間が取られます。
(d)返事が遅いほど、相談が深刻になる。 個別の相談は、返事を待つ間に事態が進みます。質問の山に埋もれて相談への初動が遅れることが、事務局にとっていちばん避けたい事態です。
- 【組合員】 組合のポータルに組合員番号でログインし、チャットで質問する
- 【自動】 質問を受け取り、個別の相談かどうかを先に判定する
- 【自動】 質問であれば、現在有効な版の協約・規約・共済の手引きを検索し、該当する条文を取り出す
- 【自動】 Azure OpenAI が条文だけを根拠に回答を作り、文書名と条番号、原文の引用を付けて返す
- 【自動】 条文に答えが無いもの、解釈が分かれるものは「事務局が確認して返信します」と返し、事務局の確認待ちに入れる
- 【自動】 個別の相談は回答せず、相談の種類と要点を整理して担当の役員へ通知し、組合員には受け付けたことと連絡の目安を返す
- 【人】 事務局が確認待ちのものに返信し、役員が相談を受けて組合員に連絡する
- 【人】 事務局が毎日、前日の回答から抜き取りで確認し、誤りがあれば組合員に訂正を送る
2番目を3番目より先に置いているのが、この設計の分かれ目です。 検索してから相談かどうかを判断すると、条文が見つかった時点で回答に寄ってしまいます。相談かどうかは、条文を探す前に質問の文面だけで決めます。
人が見るのは全件ではありません。 条文で答えが決まる質問はそのまま返し、事務局と役員の時間は、確認待ちと相談に使います。 全件を事務局が承認してから返す設計にすると、返事の速さという利点がなくなります。
02今回想定するシステム構成
組合員(スマートフォン・PC)
│ 組合員番号でログイン
▼
組合ポータルのチャット画面(Azure App Service)
▼【トリガー】質問の送信
Azure Functions ── 前処理(個人の識別情報の分離、長さの確認)
▼
Azure OpenAI ── ①相談か質問かの判定(構造化出力)
│
├─ 相談 ──▶ 担当役員への通知(要点と種類)/組合員へ受付の返信
│
└─ 質問
▼
Azure AI Search ── 現在有効な版の条文をハイブリッド検索
▼
Azure OpenAI ── ②条文だけを根拠に回答(構造化出力)
▼
根拠の照合(引用が原文にあるか)
├─ 照合OK ──▶ 組合員へ回答(文書名・条番号・引用付き)
└─ 照合NG/答え無し ──▶ 事務局の確認待ち| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 生成AI | Azure OpenAI(Microsoft Foundry) | Claude API(Amazon Bedrock)、OpenAI API |
| 連携 | Azure Functions(判定・検索・回答の順番と、引用の照合) | Power Automate |
| 文書検索 | Azure AI Search(ハイブリッド検索) | Azure OpenAI の埋め込みと自前の全文検索の組み合わせ |
| 画面 | Azure App Service(組合ポータルのチャット) | 組合の既存Webサイトへの埋め込み |
| 保管 | Azure Blob Storage(条文の原本と会話の記録) | 組合の文書管理 |
Azure OpenAI を選ぶ理由は、組合が自分の契約で持てることです。 会社の Microsoft 365 にある Copilot を使えば手軽ですが、相談の記録が会社の管理者の見える場所に残ります。 組合のサブスクリプションに Azure OpenAI と検索を置き、組合が管理者になる構成にします。
検索は自前で行い、取り出した条文をプロンプトに入れます。 Azure OpenAI には自社のデータを直接つなぐ「持ち込みデータ」の仕組みがありますが、公式ドキュメントでは構造化出力は持ち込みデータのシナリオでサポートされていないとされています。回答を決まった形の JSON で受け取って根拠を照合したいので、Azure AI Search で検索し、その結果を回答の呼び出しに渡します。
Azure AI Search のハイブリッド検索は、全文検索とベクトル検索を1つの要求で並列に実行し、逆ランク融合(RRF)で結果をまとめます。 ベクトル検索は、文章の意味を数値の並びにして近いものを探す方式です。「産休」と書いた質問から「産前産後休暇」の条文に届くのはベクトル検索の側、「第32条」「別表3」のような番号や固有の語に正確に当たるのは全文検索の側です。協約の質問は両方が混ざるので、片方だけでは取りこぼします。
03どうやって実装するのか
処理の起点を決める
組合員がチャット画面で質問を送信したときに動きます。 定時のまとめ処理にはしません。チャットの利点は返事の速さで、まとめて処理するとメールで聞くのと変わらなくなります。
ログインは組合員番号と、組合が発行するパスワードで行います。 会社のアカウント(会社の Microsoft Entra ID)でのサインインにはしません。会社のアカウントでサインインさせると、誰がいつ組合に何を聞いたかの痕跡が会社の管理する仕組みに残ります。 組合のテナントに組合員のアカウントを作るか、組合のポータルの独自の認証にします。
フォームとメールで届く質問も、受付の担当がチャットと同じ入口に貼り付けて流せるようにします。入口が複数あっても、判定と回答の仕組みは1つにします。 経路ごとに判定の基準が違うと、相談の拾い方がばらつきます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 質問の文面 | 組合員がチャットに書いた本文。同じ会話の直前のやり取り | チャット画面 |
| 組合員の属性 | 所属の支部、雇用区分(正社員・嘱託・パートなど)、共済の加入区分 | 組合員名簿(氏名は渡さない) |
| 労働協約 | 本文の各条と別表。版ごとの効力の発生日と終了日 | 共有フォルダの原本から作った検索の索引 |
| 組合規約 | 組合費、役員選挙、大会、脱退などの各条 | 同上 |
| 共済の手引き | 給付の種類、支給の条件、申請の期限と必要書類 | 同上 |
| 担当の割り当て | 相談の種類ごとの担当役員と連絡先 | 事務局が持つ一覧 |
質を決めるのは、雇用区分と版の日付の2つです。 協約は正社員と嘱託・パートで適用される条文が違うことが多く、雇用区分が無いと正社員の条文で嘱託の組合員に答えてしまいます。 版の日付が無いと、改定前の条文で答えます。
労働協約は、書面に作成し、両当事者が署名し又は記名押印することによって効力を生ずると労働組合法で定められています。 検索の索引に入れるのは、署名・記名押印が済んだ確定版だけにします。交渉中の案や、合意前の会社回答を入れると、まだ効力の無い条件を組合員に伝えることになります。
データの取得方法を決める
条文は、共有フォルダにある協約・規約・手引きのPDFから、条ごと・別表ごとに1件の文書として検索の索引に入れます。ページで区切ると、1つの条が2つに割れたり、別の条とくっついたりします。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 条の本文 | 原本のPDFを条単位に切ったテキスト | 全文検索とベクトル検索の対象 |
| 文書名・条番号・見出し | 条の先頭の行 | 回答に示す根拠 |
| 効力の発生日・終了日 | 協約の改定の記録 | 現在有効な版だけに絞るフィルター |
| 適用される雇用区分 | 条文の適用範囲の記載と事務局の付記 | 組合員の雇用区分での絞り込み |
| 原本の場所 | 共有フォルダのファイルとページ | 組合員が原文を開くためのリンク |
検索の要求には、効力の日付と雇用区分のフィルターを必ず付けます。 Azure AI Search のハイブリッド検索は、フィルターやセマンティック ランク付けといったテキスト側の機能をベクトル検索と一緒に使えます。旧版の条文は索引から消さずに残し、フィルターで外します。 「去年はどうだったか」という質問に答えるときと、後から過去の回答を検証するときに必要になるからです。
別表は条とは別の文書として入れ、条から別表への参照を項目として持たせます。 「特別休暇の日数は別表2による」という条文だけが検索に当たっても、日数は答えられません。条が当たったら、参照先の別表も一緒に取り出します。
AIへ渡す前に整形する
- 個人の識別情報を分ける … 質問に氏名・社員番号・上司の名前が書かれていれば、回答の呼び出しには渡さず、相談の通知にだけ使います
- 長さを確かめる … 長すぎる質問は、要点を書き直してもらうよう案内します。相談の可能性が高いので、判定には全文を渡します
- 会話の文脈を付ける … 「それはパートでも同じですか」のような続きの質問には、直前の質問と回答を添えます
- 雇用区分と共済の加入区分を付ける … 名簿から引いて、検索のフィルターと回答の条件に使います
- 検索の語を整える … 「産休」「育休」「年休」のような略語に、条文の正式な語を添えます。略語の一覧は事務局が持ちます
- 同じ質問の連投をまとめる … 送信の二度押しや、言い換えての再送を1件として扱います
1番目を最初に置くのは、回答に個人を入れる必要が無いからです。 「特別休暇の日数」に答えるのに、誰が聞いたかは要りません。AIに渡す範囲を、答えるのに要る範囲に絞ります。
AIに処理させる
呼び出しは2回に分けます。 1回目は相談か質問かの判定、2回目は条文に基づく回答です。1回で両方をさせると、条文が手元にあるせいで相談にも条文で答えようとします。
| 呼び出し | させること | 判断できないときの扱い |
|---|---|---|
| ①判定 | 質問の文面だけを見て、question(文書で答えが決まる)か consultation(本人の事情の相談)かを決め、相談なら種類を付ける | 迷えば consultation |
| ②回答 | 渡された条文だけを根拠に答え、文書名・条番号・原文の引用を返す | 条文に答えが無ければ not_found |
判定で consultation とする目安は、次のようなものです。
| 相談の種類 | 例 |
|---|---|
| ハラスメント | 上司の言動、職場での扱い |
| 処遇・異動への不服 | 評価、配置転換、昇格の見送り |
| 懲戒・退職・解雇 | 処分の通知、退職の勧め |
| 賃金の計算違い | 自分の給与明細の残業代や手当が合わない |
| 心身の不調 | 休職、復職、体調と勤務の両立 |
| 共済の給付の可否 | 自分のケースで給付が出るかの判断 |
最後の行は、文書の質問に見えて相談です。 「入院したら見舞金は出ますか」は手引きの条件で答えられますが、「この入院で出ますか」は共済の担当が書類を見て決めることです。一般の条件は答え、個別の可否は回す、と線を引きます。
| させないこと | 理由 |
|---|---|
| 協約の解釈が会社と割れている事項への見解 | 組合としての見解は執行委員会が決める |
| 個別の労働契約が協約に反するかの判断 | 協約の基準に反する労働契約の部分は無効と法律にあるが、当てはめは事実を聞かなければできない |
| 条文に無いことの補い | 会社の就業規則や慣行を推測で答えない |
| 交渉中の内容の説明 | 確定していない条件を伝えない |
| 相談への助言 | 聞き取りと判断は役員が行う |
2行目は特に起きやすい失敗です。 労働組合法には、労働協約に定める労働条件その他の労働者の待遇に関する基準に違反する労働契約の部分は無効とする規定があります。AIは「協約に反するので無効です」と言い切りたがりますが、その人の契約が実際にどうなっているかを、チャットの一文からは判断できません。
指示内容を固定する
①判定の呼び出し
あなたは労働組合の事務局で、組合員から届いた文面を仕分ける担当です。
回答はしません。仕分けだけをしてください。
【仕分けの基準】
- question ....... 協約・規約・共済の手引きの条文を読めば、誰にでも同じ答えが
返せる質問(日数、期限、金額の決まり、手続きの方法など)
- consultation ... 本人や職場の具体的な事情が書かれていて、事実の聞き取りや
組合としての判断が要るもの
【厳守事項】
- 迷ったときは consultation にしてください。question にしないでください。
- 制度の質問の形をしていても、本人が困っている事情が書かれていれば
consultation です。
例:「育休は取れますか。上司に取るなと言われています」は consultation。
- 共済の給付について「自分の場合に出るか」を聞いているものは consultation です。
- consultation のときは category を1つ選び、summary に事情の要点を
3文以内で書いてください。本人の評価や推測は書かないでください。
- 心身の不調や、自分を傷つける考えが書かれているときは、
urgent を true にしてください。
【文面】{message}
【直前のやり取り】{history}
②回答の呼び出し
あなたは労働組合の事務局として、組合員の質問に答えます。
下の【条文】に書かれていることだけを根拠にしてください。
【厳守事項】
- 条文に書かれていないことは答えないでください。会社の就業規則や
慣行、一般的な法律の知識で補わないでください。
- 条文に答えが無いときは status を not_found にしてください。
- 回答に使った条文は、citations に文書名・条番号・原文の引用を入れてください。
引用は条文からそのまま写し、言い換えないでください。
- 別表を参照している条文は、別表の値まで確かめてから答えてください。
別表が渡されていなければ not_found です。
- 雇用区分が【組合員の区分】と合わない条文を根拠にしないでください。
- 協約と共済の手引きで似た言葉が出てきても、混ぜないでください。
どちらの文書の話かを回答の中で明示してください。
- 「無効です」「違反です」「請求できます」のような判断を書かないでください。
- 回答は、組合員が読む文章として丁寧語で、300字以内にしてください。
【組合員の区分】{employment_type}/共済:{mutual_aid_type}
【質問】{question}
【条文】{retrieved_articles}
判定の側に「迷ったら consultation」を明記しないと、question に寄ります。 文面の多くは制度の言葉を含むので、言葉だけを見ると質問に見えるからです。相談を質問と取り違えた損失は、質問を相談と取り違えた損失よりはるかに大きいので、迷いの向きを指示で固定します。
回答の側で「言い換えないで写す」を求めるのは、後段で引用を照合するためです。 引用が原文に無ければ、回答は返さずに確認待ちに回します。
出力形式を固定する
①判定は次の形の JSON で受け取ります。
{
"route": "question | consultation",
"category": "harassment | treatment | discipline | wage_error | health | mutual_aid_case | other | none",
"urgent": false,
"summary": ""
}
②回答は次の形です。
{
"status": "answered | not_found | ambiguous",
"answer": "",
"citations": [
{ "document": "労働協約 | 組合規約 | 共済の手引き",
"article": "", "version_from": "", "quote": "" }
],
"needs_staff": false
}
構造化出力を使うのは、後段の処理を機械で分岐させるためです。 Azure OpenAI の構造化出力は、指定した JSON スキーマに従った出力を返す仕組みで、Chat Completions API と Responses API の両方で使えます。route が consultation なら回答の呼び出しをせずに通知へ、status が answered 以外なら確認待ちへ、と文章を読まずに振り分けられます。
スキーマには制約があります。 公式ドキュメントでは、すべての項目を必須にし、オブジェクトには常に additionalProperties: false を設定するとされています。省略したい項目は、null との共用体の型で表します。文字列の長さや配列の要素数の制約(maxLength、minItems、maxItems など)はサポートされていないので、「回答は300字以内」「引用は1件以上」はスキーマでは縛れません。受け取った後に Azure Functions の側で数えて、外れたものは確認待ちに回します。
| 後段の条件 | 行き先 |
|---|---|
route が consultation | 担当役員へ通知。urgent なら即時の連絡と相談先の案内 |
status が answered で、引用がすべて原文にある | 組合員へ回答 |
status が answered だが、引用が原文に無い | 事務局の確認待ち |
status が not_found か ambiguous | 事務局の確認待ち。組合員には「確認して返信します」 |
| 回答が300字を超える、引用が0件 | 事務局の確認待ち |
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| チャット画面 | Azure App Service の画面から Azure Functions を呼ぶ | 質問の受け取りと回答の表示 |
| Azure OpenAI | API呼び出し(構造化出力) | 判定と回答の2回 |
| Azure AI Search | API呼び出し(ハイブリッド検索、フィルター付き) | 現在有効な版の条文を取り出す |
| 組合員名簿 | 読み取りのみ | 雇用区分と共済の加入区分 |
| 役員への通知 | 組合のメールまたはチャット | 相談の種類・要点・緊急かどうか |
| 確認待ちの一覧 | 事務局の画面 | not_found と照合NGの回答 |
役員への通知に、相談の全文は載せません。 載せるのは種類と3文以内の要点と、事務局の画面で全文を開くためのリンクです。役員のメールが会社のメールである場合、全文を送ると会社のサーバーに相談の内容が残ります。 組合の連絡手段を使うか、リンクだけを送ります。
組合員名簿は読むだけで、書き込みません。 雇用区分が変わっていても、チャットからは直しません。
人が確認する
事務局が見るのは、確認待ちに入ったものと、毎日の抜き取りです。 条文で答えた回答をすべて承認してから返す設計にはしません。
- 緊急の相談を最初に見る …
urgentが付いたものは、担当役員と書記長に同時に通知します。組合員への連絡は人が行います - 確認待ちに返信する …
not_foundは条文に答えが無いもの、照合NGは引用が原文に無いもの。多くは、別表が索引に入っていないか、略語の一覧が足りていません - 前日の回答から抜き取る … 1日20件程度を読み、条文と回答が合っているかを見ます。誤りがあれば組合員に訂正を送り、原因を記録します
- 相談の振り分けを見直す …
questionと判定されて回答されたもののうち、文面に事情が書かれていたものを探します
4番目を毎週続けてください。 相談を質問と取り違えた件は、組合員の側からは「組合に相談したのに条文を返された」という形でしか表に出ません。事務局が自分から探さないと、見つかりません。
目標は、600件をならして1件4分です。 確認待ちと相談が2割前後という想定で、それより多い月は、協約の改定が索引に反映されていないか、略語の一覧が足りていません。
例外に対処する
| 起きること | 対応 |
|---|---|
| 質問が安全方針で止まる | ハラスメントや心身の不調の相談は、内容によって入力の段階で止まることがある。エラーを捨てずに相談として役員へ回す |
| 回答が安全方針で止まる | 出力が止まった回答は返さず、事務局の確認待ちへ |
| 検索で条文が1件も当たらない | not_found として確認待ちへ。よくある語なら略語の一覧に足す |
| 改定の効力の発生日の前後で質問が来る | 新旧両方の条文を取り出し、いつから変わるかを書いて答える |
| 雇用区分が名簿に無い | 回答せず確認待ちへ。区分で条文が変わるため |
| 交渉中の内容を聞かれる | 確定していない旨を返し、組合の報告文書の場所を案内する |
| 組合員でない人が聞く | ログインで弾く。会社の人事や管理職からの質問は受けない |
| 同じ人が短時間に大量に送る | 一定の件数で受付を止め、事務局に知らせる |
| Azure OpenAI が応答しない | 質問を保存して「後ほど事務局から返信します」と返す |
1行目が、この構成でいちばん気を付ける例外です。 Azure OpenAI の既定の安全方針(DefaultV2)は、憎悪と公平性・暴力・性的・自傷の4つの区分について、入力と出力の両方で重大度「中」以上をブロックします。 入力が止まるとエラーが返ります。ハラスメントの具体的な言動や、つらい気持ちを書いた相談ほど止まりやすく、エラーを「処理失敗」として捨てると、いちばん急ぐ相談が誰にも届きません。 止まった質問は、判定を待たずに相談として扱います。
記録を残す
- 質問の全文と、受け付けた日時・経路
- 判定の結果(
route、category、urgent、summary) - 検索で取り出した条文の ID と版、回答の JSON の全文
- 引用の照合の結果と、確認待ちに回した理由
- 事務局が訂正した回答と、その理由
- 相談を受けた役員と、組合員へ連絡した日時
記録は組合のサブスクリプションの中に置き、会社の管理者が読めない場所にします。 保存の期間と、退会した組合員の記録の扱いは、執行委員会で決めて組合員に示します。
3つ目で条文の版を残すのは、協約が毎年改定されるためです。 後から「あのときの回答は正しかったか」を確かめるとき、当時有効だった版が分からなければ検証できません。
04実装レベルの3段階
半自動化の段階で、少なくとも2か月は回してください。 組合員に直接返す前に、事務局が判定と回答案を毎回見ることで、相談の取り違えと、索引の抜けが先に見つかります。 1件12分は、半自動化で6分程度、本格構成で4分になる見立てです。 本格構成に進む条件は、相談の取り違えが続けて出なくなることです。 回答の誤りは訂正できますが、取り違えた相談は取り戻せません。
05工数削減シミュレーション
導入後 600件 × 4分 ÷ 60 = 40 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 組合員が千人を超え、専従の事務局が数名で、労働協約・組合規約・共済の手引きへの同じ質問に毎月何百件も答えている企業別の労働組合。協約の条文と共済の給付条件がPDFや冊子で整っており、改定のたびに版を差し替えられる場合。相談内容を会社側から見えない場所に置く運用を、組合として決められる場合。
- 組合員が数十人で、委員長や書記長が顔を見て答えれば足りる場合。労働協約が書面になっておらず、慣行と口頭の確認で運用している場合。組合の情報基盤を会社の情報システム部門に預けていて、相談の記録を会社側の管理者が読める状態を変えられない場合。なお、協約の解釈が会社と割れている事項や、個別の紛争の見通しは、この構成では答えません。
07最小構成で試す方法
- 過去3か月に届いた質問から50件を選ぶ(うち10件は、個別の事情を含む相談を入れる)
- 組合の契約で使える生成AIの画面に、協約の目次と、よく聞かれる10条ほどの本文を貼る
- 50件を1件ずつ、「この文面は、条文で答えが決まる質問か、本人の事情の相談か。相談なら答えずに種類だけ書いてください」と聞く
- 質問と判定されたものについて、「貼った条文だけを根拠に、条番号と引用を付けて答えてください。無ければ『条文に無い』と書いてください」と聞く
- 判定と回答を、当時事務局が返した内容と突き合わせる
会社の業務用の生成AIでは試さないでください。 実際の質問を入れる以上、組合の契約の環境で行います。
| 出てきた内容 | 判断 |
|---|---|
| 相談10件がすべて相談と判定され、質問の回答が当時と合う | 検索と構造化出力の連携に進む |
| 相談の一部が質問と判定された | 判定の指示の書き方で直る見込み。迷いの向きを指示に足して取り直す |
| 貼っていない条文の内容まで答えた | 根拠の制約が効いていない。引用の照合を必ず組む |
2行目が出ることは珍しくありません。 失敗ではなく、事務局が普段どの言葉で相談を見分けているかを書き出すきっかけになります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 相談に条文で答えてしまう | 判定を検索より先に置き、迷ったら相談にする |
| 改定前の条文で答える | 効力の日付のフィルターを検索に必ず付ける |
| 正社員の条文で嘱託・パートに答える | 雇用区分を名簿から引き、フィルターと指示の両方に入れる |
| 条だけ当たって別表の値が無い | 別表を別の文書にし、条から参照を辿って一緒に渡す |
| 協約と共済の手引きの言葉を混ぜる | 回答にどちらの文書かを明示させ、引用で確かめる |
| 条文に無いことを就業規則の知識で補う | 根拠の制約と、引用の照合で止める |
| 「無効です」と言い切る | 判断の語を禁じ、抜き取りの確認で探す |
| 相談の入力が安全方針で止まり、消える | エラーを相談として役員へ回す |
| 回答の長さ・引用の数をスキーマで縛れない | 受け取った後に数えて、外れたものを確認待ちへ |
| 持ち込みデータで組んで構造化出力が使えない | 検索は自前で行い、結果をプロンプトに入れる |
| 会社のアカウントでログインさせてしまう | 組合のアカウントで認証する |
| 交渉中の案が索引に入る | 署名・記名押印の済んだ確定版だけを入れる |
上の1行目と、下から4行目が、この構成の失敗のほとんどです。 どちらも、相談がいちばん届いてほしい人に届かなくなるという同じ結果になります。
下の2行は、技術の問題に見えて組合の信頼の問題です。 会社に相談が見えているかもしれない、まだ決まっていないことをチャットが言った。一度そう受け取られると、チャットは使われなくなります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 組合員の質問と相談の内容、所属・雇用区分・共済の加入区分、そして相談に書かれる職場の人間関係、心身の状態、処遇への不満です。
- 相談の記録を会社から切り離す … 組合のサブスクリプションに置き、組合が管理者になります。組合員が組合に何を相談したかは、会社に知られてはならない情報です
- AIに渡す範囲を答えに要る範囲に絞る … 回答の呼び出しには氏名を渡しません。相談の要点も、役員への通知には3文以内にします
- 相談に答えさせない … 聞き取りと判断は役員が行います。AIは仕分けと引き継ぎまでです
- 組合としての見解を出させない … 協約の解釈が会社と割れている事項は、執行委員会が決めることです。この構成が答えるのは、条文に書かれていることだけです
- 緊急の相談は人が連絡する … 心身の不調や、自分を傷つける考えが書かれたものは、自動の返信で済ませません。担当役員がその日のうちに連絡します
- 安全方針の挙動を、組合員の実際の文面で確かめる … 公式ドキュメントでは、分類のモデルには誤検知と見逃しがあり、実際の利用の内容で評価するよう求めています。過去の相談の文面(本人の同意の範囲で)で、止まるものと止まらないものを確かめてください
- 確定していない条件を伝えない … 索引に入れるのは確定版だけにし、交渉の経過は組合の報告文書で伝えます
誤りが起きた場合のリスクは、誤った条件を伝えることと、相談を取りこぼすことの2つです。 前者は訂正で取り戻せますが、後者は取り戻せません。だから判定は迷ったら相談に倒し、止まった入力も相談として扱います。
10まず何から始めるか
1週目:決めごとを執行委員会で決める
相談の種類と担当役員、記録を置く場所と残す期間、会社に見せないための認証の方式を決めます。ここが決まらないうちは、仕組みを作り始めません。
2週目:50件で試す
過去3か月の質問から50件(うち相談10件)を選び、組合の契約の生成AIで判定と回答を試します。相談がすべて相談と判定されるかを最優先で見ます。
3週目:協約を条単位に切る
協約・規約・共済の手引きを条ごとに分け、別表を切り出し、版の効力の日付と適用される雇用区分を付けます。 略語の一覧も作ります。
4週目:事務局向けの画面で回す
検索の索引と2回の呼び出しをつなぎ、事務局が届いた質問を貼ると判定と回答案が出るところまで作ります。この時点では組合員に直接返しません。
2か月目: 引用の照合と確認待ちの一覧を足し、相談の取り違えを毎週数えます。3か月目以降: 取り違えが続けて出なくなったら、組合員向けのチャットを一部の支部で開きます。協約の改定のたびに索引を差し替える手順が、書記長以外でも回るようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 労働協約は書面に作成し、両当事者が署名し又は記名押印することによって効力を生ずること(第14条)。3年を超える有効期間の定めができないこと(第15条)。労働協約に定める労働条件その他の労働者の待遇に関する基準に違反する労働契約の部分は無効とすること(第16条) | e-Gov 法令API: 労働組合法 | 2026-10-26 |
構造化出力が JSON スキーマに従った出力を返し、Chat Completions API と Responses API の両方で使えること。すべての項目を必須にし additionalProperties: false を設定すること。minLength・maxLength・pattern・format・minItems・maxItems などがサポートされないこと。持ち込みデータのシナリオでは構造化出力がサポートされないこと | Microsoft Learn: Azure OpenAI で構造化出力を使用する方法 | 2026-10-26 |
| 既定の安全方針(DefaultV2)が憎悪と公平性・暴力・性的・自傷の4区分について入力と出力の両方で重大度「中」以上をブロックすること。入力が止まるとエラーが返ること。分類のモデルに誤検知と見逃しがあり、実際の内容で評価するよう求めていること | Microsoft Learn: Default safety policies | 2026-10-26 |
| ハイブリッド検索が全文検索とベクトル検索を1つの要求で並列に実行し、RRF で結果をまとめること。フィルターやセマンティック ランク付けと併用できること | Microsoft Learn: ハイブリッド検索の概要 | 2026-10-26 |
協約の解釈や個別の相談への対応は、組合の執行委員会と担当役員で決めてください。 本記事は公開されている法令と製品の仕様で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1858)についてのご相談はこちらから。
