社内FAQ自動応答 — 問い合わせ対応工数を80%削減
SECTION 21 — 社内AIチャットボット
「有給の取り方は?」「経費精算の締め日は?」など、同一の質問が毎月数十件寄せられる
総務・情シス・人事など特定部署に問い合わせが集中し、本来業務を圧迫している
担当者の返信待ちで業務がブロックされる。特に夜間・休日は翌営業日まで待機となる
SECTION 21 — 社内AIチャットボット
3つの要素で構成される
社内FAQ、規程、マニュアルをスプレッドシートに集約。AIが参照する情報源となる
質問の意図を理解し、ナレッジベースから最適な回答を生成。文脈に合わせた自然な文章で返答する
Google Chat または Chatwork。社員が普段使うツールに統合することで導入障壁を下げる
SECTION 21 — 社内AIチャットボット
社員が日常的に使うツール。Webhook URLを設定するだけで接続できる
受信メッセージの解析、ナレッジ検索、API呼び出し、返信送信を担当
FAQ・規程・マニュアルをスプレッドシートで管理。非エンジニアでも更新可能
SECTION 21 — 社内AIチャットボット
スプレッドシート構造(推奨)
シート1枚をFAQ、もう1枚をマニュアル・規程として分けると管理しやすい
| 列名 | 内容 | 例 |
|---|---|---|
| カテゴリ | 部門・ジャンル分類 | 総務 / 人事 / 情シス |
| 質問キーワード | 検索に使うキーワード群 | 有給 休暇 取り方 申請 |
| 質問文 | 代表的な質問文 | 有給休暇の申請方法は? |
| 回答 | 正式な回答テキスト | kintoneの申請フォームから… |
| 関連リンク | 詳細資料へのURL | https://… |
GAS × Gemini API でチャットボットを構築する
SECTION 21 — 実装
RAGとは「検索 + 生成」の2段階プロセス
AIが自分の知識だけで答えるのではなく、社内資料から情報を「検索」してから「回答を生成」する手法
ユーザーの質問に関連する情報をナレッジベースから取り出す。キーワードマッチングや類似度検索を使用
取得した情報をプロンプトに組み込み、AIへの指示を強化する。「以下の情報をもとに回答せよ」という形式
Gemini が文脈を理解したうえで、自然な回答文を生成して返す
Gemini はインターネット上の情報は知っているが、あなたの会社の内部情報は知らない。RAGによって社内知識を与えることで初めて有用な回答が可能になる
SECTION 21 — 実装
ナレッジ検索ロジック(GAS)
Gemini API 呼び出し
SECTION 21 — 実装
メッセージ受信 & 返信(GAS)
Google Chat ボット設定手順
script.google.com で新規プロジェクト作成
「デプロイ」→「新しいデプロイ」→「Webアプリ」を選択。アクセスを「全員」に設定
Google Cloud Console でChat API を有効化し、ボット設定にWebアプリURLを登録
ボットアカウントをDMまたはスペースに追加してテスト
SECTION 21 — 実装
Chatworkを使っている組織でも同じGASロジックが使える。Webhook URLをChatworkに登録するだけ
Webhook受信処理
SECTION 21 — 実装
「さっきの件について詳しく教えて」のように、前の会話を参照した質問に正しく回答するためには、直前の会話履歴をプロンプトに含める必要がある
履歴管理(CacheService使用)
履歴をプロンプトに組み込む
CacheService から該当ユーザーの直近会話を取得
「これまでの会話:」として過去のQ&Aをプロンプト冒頭に付加
今回の質問・回答を追加してCacheServiceに保存(最大10件)
回答精度を改善し、運用を安定させる
SECTION 21 — 品質向上
システムプロンプトに制約を明記することで、的外れな回答を防ぐ
「このような質問にはこう答える」という例をプロンプトに含めると精度が大幅向上する
SECTION 21 — 品質向上
AIが答えられないケースは必ず発生する
ナレッジベースにない質問、個人情報を含む問い合わせ、緊急対応が必要な案件など。これらを適切に人間につなぐ設計が重要
「担当部署に転送します」と社員に伝え、担当者にも自動で通知メールを送る
未回答質問をスプレッドシートに自動記録。ナレッジベース拡充の優先リストとして活用
担当者が対応後、その回答を承認してナレッジベースに追加できる仕組みを整備
SECTION 21 — 品質向上
| 項目 | 用途 |
|---|---|
| タイムスタンプ | 時間帯分析・ピーク把握 |
| ユーザーID | 部門別・個人別の質問傾向 |
| 質問テキスト | 未カバー領域の特定 |
| マッチしたFAQ | 精度評価・ナレッジ品質向上 |
| エスカレーション有無 | 自動化率の算出 |
スプレッドシートのログをLooker Studioに接続するだけで自動ダッシュボードが完成
実際に手を動かして社内チャットボットを作ってみよう
SECTION 21 — ハンズオン
シート名を「FAQ」に変更する
A列: カテゴリ / B列: キーワード / C列: 質問文 / D列: 回答 / E列: 関連リンク
自部署でよく受ける質問から入力する。まずは回答が明確なものを選ぶ
URLの「/d/」と「/edit」の間の文字列がスプレッドシートID
キーワード列には検索に使われやすい単語を複数登録する(例: 「有給 休暇 年休 申請」)
| カテゴリ | キーワード | 回答概要 |
|---|---|---|
| 総務 | 有給 休暇 申請 | kintoneから申請 |
| 総務 | 経費 精算 締め日 | 毎月末日 |
| 情シス | パスワード リセット | 情シス宛メール |
| 人事 | 評価 面談 時期 | 6月・12月実施 |
SECTION 21 — ハンズオン
「新しいプロジェクト」→ 名前を「社内チャットボット」に設定
プロジェクトの設定 → スクリプトプロパティ → 「GCP_PROJECT_ID」を追加
配布のサンプルコード(searchKnowledge / generateAnswer / onMessage)を貼り付ける
「デプロイ」→「新しいデプロイ」→ 種類: Webアプリ → アクセス: 全員
Cloud Console で Chat API を有効化し、デプロイされたURLをボット設定に登録
SECTION 21 — ハンズオン
正常系テスト: 登録したFAQをそのまま質問し、正しく回答されるか確認
表記ゆれテスト: 「有給」「ゆうきゅう」「有休」など異なる書き方で試す
境界値テスト: ナレッジにない質問でエスカレーションされるか確認
ログ確認: 未回答・誤回答の質問を抽出
ナレッジ追加: 未回答質問に対するFAQを追記
キーワード拡充: 表記ゆれに対応するキーワードを追加
自動化率計測: 週次でエスカレーション率をチェック
SECTION 21 — 社内AIチャットボット
社内AIチャットボットの基礎から実装まで学習しました