1. 概要1.1 想定しているカスタマーサポートの課題現状のカスタマーサポート業務では、顧客からの応答や問い合わせのタイミングに左右されやすく、本来提供すべき情報を適切なタイミングで届けられないという課題があります。その結果、問い合わせが増え、サポート部門の負荷が高まることで、対応が後手に回り、さらに問い合わせが増えるという負のスパイラルが生じやすくなっています。また、対応内容や判断が担当者ごとの経験や感覚に依存しやすく、「この人ならこう対応する」といった形で対応が属人化してしまう点も課題です。属人化が進むと、対応品質にばらつきが出るだけでなく、新しい担当者の教育にも時間がかかります。こうした課題に対して、本取り組みでは、顧客の属性やこれまでの履歴をもとに、あらかじめ対応方針を整理・提示することで、対応のばらつきを抑え、属人化を防ぐことを目指しています。1.2 AIエージェントの全体像本記事では、顧客サポート業務の高度化を目的として開発した、簡易的なAIエージェントの概要について紹介します。本AIエージェントは、顧客の問い合わせ情報を保持するデータマートを参照し、指定した期間の問い合わせ履歴をもとに、ひと月あたりの問い合わせ回数が多い顧客を対象として分析を行います。AIの推論ステップは2段階に分けており、Step1ではクエリで抽出したデータから顧客属性を決定し、Step2ではその顧客属性に基づいて顧客へのアプローチを推論させます。最終的にSlackの指定のチャンネルに通知される構成になっており、オペレータの意思決定を支援します。2. 環境構成本AIエージェントは、Google Cloud Platform 上のマネージドサービスを中心に構成しています。データの参照、AI推論、実行基盤をそれぞれ分離することで、シンプルかつ拡張しやすい構成としています。全体構成図は以下となります。2.1 データ・プロンプト管理BigQuery顧客の問い合わせ情報を保持するデータマートとして利用しています。本検証では、実データではなく検証用のダミーデータを配置し、指定した期間の問い合わせ履歴から対象ユーザーを抽出するクエリを実行します。Cloud StorageCloud Storage には、対象ユーザーを絞り込むためのクエリ、Gemini に指示を与えるためのプロンプトファイル(前述したStep1、Step2のプロンプト)、のようなAIエージェントが利用する静的リソースを配置しています。プロンプトをコードから切り離して Cloud Storage に配置することで、ロジックを変更せずにプロンプトだけを改善できる構成としています。2.2 実行基盤Cloud RunAIエージェントの実行基盤として Cloud Run を利用しています。Cloud Run 上では Python プログラムが動作しており、以下の処理を担っています。BigQuery へのクエリ実行Cloud Storage からのプロンプト読み込みGemini への推論リクエストと推論結果の整形外部サービス(Slack)への通知2.3 外部連携SlackGemini が生成した顧客へのアプローチ案の出力先として Slack を利用しています。指定したチャンネルに AI の推論結果を通知することで、オペレーターが日常的に利用しているツール上で内容を確認できるようにしています。2.4 ソースコード管理GitHubCloud Run 上で動作する Python プログラムのソースコードは GitHub 上で管理しています。GitHub 上のコードを更新することで、Cloud Run にデプロイされる構成となっており、コード修正から反映までのサイクルを短く保てる点も特徴です。3. データマートの設計本AIエージェントが参照するデータマートの設計について、全体像と設計方針を簡潔に説明します。詳細なカラム定義やリレーションについては、こちらのリンクからxlsxファイルをダウンロードすることでご確認いただけます。3.1 データマート全体構成本データマートは、以下のテーブル群をもとに構成しています。1.customers(顧客の基本情報)NOPKFKカラム名項目名備考データ型NOT NULL制約1〇id顧客IDINT〇2name顧客名STRING〇3age年齢INT〇4prefecture都道府県STRING〇5gender性別男、女、その他STRING〇6registered_at登録日TIMESTAMP〇7updated_at更新日TIMESTAMP2.support_inquiries(顧客からの問い合わせ履歴)NOPKFKカラム名項目名備考データ型NOT NULL制約1〇id問い合わせIDINT〇2〇customer_id顧客ID契約者の場合必須INT3inquired_at問い合わせ日時TIMESTAMP〇4channel問い合わせチャネルメール・電話等STRING〇5inquiry_type問い合わせ種別技術・一般的な質問STRING〇6subject問い合わせ件名STRING〇7message問い合わせ内容STRING〇3.support_responses(問い合わせに対するスタッフの対応履歴)NOPKFKカラム名項目名備考データ型NOT NULL制約1〇id対応IDINT〇2〇inquiry_id問い合わせIDsupport_ionquiriesのidINT〇3〇responder_id対応者IDINT〇4started_at対応開始日時TIMESTAMP〇5ended_at対応終了日時TIMESTAMP〇6content対応内容STRING〇7notes内部メモ担当者用のメモSTRING8action_type対応アクション種別初回応答・解決案提示STRING〇9next_action_type次の対応アクション種別顧客返信待ち・技術調査STRING〇10is_resolved解決済みフラグBOOLEAN〇上記テーブルを結合し、以下のようなデータマートを作成しました。customer_support_view(AIエージェントが参照するためのデータマート)カラム名データ型説明customer_idINT64顧客IDcustomer_nameSTRING顧客名customer_ageINT64顧客年齢customer_prefectureSTRING顧客の都道府県customer_registered_atTIMESTAMP顧客登録日inquiry_idINT64問い合わせIDresponse_idINT64応答IDresponder_idINT64担当者IDinquired_atTIMESTAMP問い合わせ日時response_startTIMESTAMP対応開始日時response_endTIMESTAMP対応終了日時channelSTRING問い合わせチャネルinquiry_typeSTRING問い合わせ種別inquiry_subjectSTRING問い合わせ件名inquiry_detailsSTRING問い合わせ内容agent_responseSTRING担当者の対応内容notesSTRING担当者の対応メモresponse_actionSTRING対応アクションnext_action_typeSTRING次の対応アクションis_resolvedBOOL解決フラグ顧客情報、問い合わせ内容、対応状況を一度に参照できる構成となっています。3.2 正規データとデータマートの役割分離customers、support_inquiries、support_responses は、業務上の事実を保持する正規データとして管理しています。一方で、customer_support_view は、これらを結合したAIエージェントの参照専用のデータマートとして位置づけています。正規データとデータマートを分離することで、元データの構造を保ったまま、利用用途(AI分析)に最適化した形でデータを提供できるようにしています。4. AIエージェントの処理フロー4.1 顧客属性分析(AI推論 Step1)まず Step1 では、顧客属性の分析を行います。はじめに、customer_support_view に対してクエリを実行し、分析対象となる顧客データを抽出します。このクエリは、Gemini に渡すデータ形式を意識して定義しており、Google Cloud Storage に保管しています。Cloud Run 上で処理が開始されると、Cloud Storage からクエリを取得し、BigQuery 上の customer_support_view に対して実行します。次に、抽出したデータと顧客属性分析用のプロンプトを組み合わせ、Vertex AI を通じて Gemini に渡します。Step1 のプロンプトは、データマートから抽出した問い合わせ履歴をもとに、適切な連絡チャネルを推論したり、問い合わせ内容から満足度、離脱リスク、重要テーマ等を整理したりして、問い合わせ履歴をもとに顧客属性を推論できるようなものとなっています。4.2 顧客アプローチ提案(AI推論 Step2)次に Step2 として、Step1でGeminiが推論した顧客属性の分析結果と、対象顧客へのアプローチを推論させるためのプロンプトを、再度Geminiに渡します。問い合わせ頻度が多い顧客や未解決の問い合わせを抱える顧客については、緊急度・不満度が高い可能性があると判断し、それを踏まえて、推奨する対応内容や適切な連絡チャネルを、理由とあわせて整理・提案します。Step2 のプロンプトは、Step1 で推論した顧客属性の分析結果をもとに、次にとるべきアクション(アプローチ)を推論できるようなものとなっています。※ 1度に多くの推論をさせてしまうと推論精度が落ちてしまうため、顧客属性の推論と顧客へのアプローチの推論を分けています。4.3 Slackチャンネルへの通知最終的に、Geminiが推論した対象顧客への具体的なアプローチ案を、Slackの指定チャンネルに通知することで、オペレーターの意思決定を支援し、対応方針を検討するための材料を提供します。5. まとめ本記事では、カスタマーサポート業務における課題を整理したうえで、それを解決するための簡易的なAIエージェントの構成と設計方針を紹介しました。データマートをもとに、顧客属性の分析とアプローチ提案を段階的に行うことで、オペレーターの意思決定を支援する仕組みとなっています。Cloud Run を実行基盤としているため、バッチ処理のような形で定期実行し、毎日 Slack に通知するといった運用も実現できます。柔軟に改善できる構成とすることで、検証から実運用への展開も視野に入れています。CLOVE合同会社は、企業のデータ活用を推進するための戦略策定、データ基盤構築、データ分析、AI活用支援を提供するコンサルティング会社です。 データ活用の専門家として、マーケティング、営業、業務効率化など幅広い領域で支援を行っております。貴社の課題や目的に応じた最適な設計をご提案しますので、ご興味がありましたらぜひこちらからお気軽にご相談ください。