💬

Google Chat を RAG システムの UI として利用する方法

2024/07/08に公開

1. はじめに

株式会社 Hogetic Lab のエンジニア、古川です。
私は Collectro というデータ収集・分析プラットフォームのプロダクトマネージャ(PdM)として、企画・仕様検討を主に担当しています。

前回は、収集したデータの活用例として、Slack を RAG システムの検索・問い合わせの UI として利用するための方法について説明しました。今回は、ビジネスのコミュニケーションツールとして人気のある Google Chat を利用する方法について紹介します。
Slack との違いや Google Chat ならではの注意点・考慮ポイントも合わせて解説します。

2. Google Chat アプリの設定方法

前提条件

  • Google Chat が使える Google Workspace のアカウントを持っていること。
  • 同じ Google Workspace のアカウントでログインできる GCP プロジェクトを持っていること。(Google Chat アプリの構成を管理するために必要です。)

ロジックの設置先
Google Chat アプリのロジックの設置先はいくつか選択肢があります。

  1. リクエストを受け取るための連携サーバー
  2. App Script プロジェクト
  3. Dialogflow

今回は、比較的設定の簡単な「1. リクエストを受け取るための連携サーバー」を使用する方法を説明します。

2.1 Google Chat アプリ(連携サーバー)の準備

  • 連携サーバーが Google Chatのリクエストを受け取るエンドポイント(URL)を決めます。
    ※この時点では実装・デプロイしていなくても問題ありません。

2.2 Google Chat API の構成

  1. Google Cloud Console の Google Chat API にアクセスし、有効にします。
    Google Chat API の有効化
    Google Chat API を有効化
  2. 構成をクリックし、以下を設定します。(後から変更可能です。)
    1. アプリケーション情報アプリ名 に任意のアプリ名を入力、説明 に機能や使い方を記載します。アバターのURL にアプリのアイコン画像(PNG)の URL を入力します。
      構成 - アプリケーション情報
      Google Chat API の構成 - アプリケーション情報
    2. インタラクティブ機能:インタラクティブ機能を有効にし、アプリの使い方に合わせて以下を設定します。
      • スペースとグループの会話に参加する:スペースでの会話でアプリを使用する場合はチェックを入れます。
      • 1:1 のメッセージを受信する:ダイレクトメッセージ(DM)での会話でアプリを使用する場合はチェックを入れます。
        構成 - インタラクティブ機能
        Google Chat API の構成 - インタラクティブ機能
    3. 接続設定アプリのURL を選択し、事前に決めたエンドポイントのURLを入力します。
    4. 公開設定:特定のユーザーとグループが使用できるように設定を有効にし、ユーザーおよびグループのメールアドレスを入力します。
    5. ログ:エラーを記録するように設定します。
  3. 「保存」をクリックして設定を保存します。

2.3 Google Chat アプリ(連携サーバー)の開発

  • Google Chat API を利用するための権限を連携サーバーに付与するために、GCP プロジェクトでサービスアカウントを作成し、そのキーを生成します。
    ※ 連携サーバーとして、Google Chat アプリと同一の GCP プロジェクト上に Cloud Run や Cloud Functions などを作成する場合は、それらを起動するときのサービスアカウントを使用することも可能です。
  • エンドポイントでリクエストを受け、適切なレスポンスを返す連携サーバーを開発します。Google Chat API を使ったリソースアクセスの認証では、上で作成したキーを使用します。
    ※ サーバーサイドの実装は、言語やフレームワークによって異なるためここでは省略します。

2.4 Google Chat アプリをスペースに追加

  1. Google Chat でアプリを追加したいスペースを開きます。
  2. スペースの設定から「アプリと統合」をクリックします。
    アプリの追加
    Google Chat アプリの追加
  3. 右上の「+アプリを追加」をクリックし、Google Chat API の構成で設定したアプリを追加します。
  4. アプリがメンションされるとイベントが発生し、連携サーバーにリクエストが送信されます。

3. 注意・考慮すべきポイント

Google Chat アプリを RAG システムの UI として利用する際の注意点や考慮すべきポイントをまとめます。

  • メンションに対してスレッドで返信するように実装することで会話が見やすくなりますが、Google Chat では画面上で返信に気づきにくいので注意が必要です。
    Google Chat でのスレッド返信表示
    Google Chat でのスレッド返信表示
  • DM やグループチャットではスレッドは使えないため、会話履歴を使った回答が必要な場合は、スペースで利用をお勧めします。
  • Google Chat API を実行するための権限の認証方式として「ユーザー認証」と「サービスアカウント認証」の二つがあります。ユーザー認証が必要な API を使う場合、OAuth 2.0 による認証が必要になり、API の実行はそのユーザーの権限で行われます。
  • スレッド内での会話へのメンション時に、スレッド内の過去の会話を取得することで、 LLM が会話の流れを把握して回答を生成することができます。(会話履歴の取得にはユーザー認証が必要です。)
  • ユーザー認証が必要な API を使った時の回答は、Google Chat アプリとしての回答ではなく、ユーザー認証に同意したユーザーとして返信されます。API で会話履歴を取得して LLM に入力する際には、アプリとユーザーの区別がつかなくなるので注意が必要です。
  • Google Chat アプリのアイコンは画像アップロードではなく URL 指定のみです。自社のWebサイトのロゴ画像や、Google Cloud Storage にアップロードした画像を「インターネットに公開」して使うことをお勧めします。
  • Google Chat からのリクエストに30秒以内に返信しないとリトライが発生するため、何もしないと同じ回答が複数回表示されてしまいます。Slack と違い、ヘッダーにリトライとわかる情報は付与されないので、応答に時間がかかる場合は非同期処理を実装することをお勧めします。
  • 公開設定で、Google Workspace 内の全ユーザーが使用できるようにするには、アプリを Google Workspace Marketplace に公開する必要があります。組織内の Google Workspace 管理者に相談してください。
    Google Chat アプリと連携した時の画面
    Google Chat アプリと連携した時の画面

4. まとめ

今回は、Google Chat を RAG システムの検索・問い合わせの UI として利用するための方法について、連携サーバーを使用する場合を紹介しました。 App Script プロジェクトでの開発については、別の記事で解説しようと思います。

また、引き続き、他のチャットツールの使い方についても記事にしていきたいと考えています。お楽しみに。

※ データ分析や AI 活用に関するご相談は、以下よりお気軽にお問い合わせください。
お問い合わせフォーム

Hogetic Lab

Discussion