Gemini AI Chat アプリを使用して、Chat の会話内容に基づいて質問に回答できます

このチュートリアルでは、Vertex AI と Gemini による生成 AI により、Chat スペースでの会話に基づいて質問に回答する Google Chat アプリを作成する方法について説明します。Chat アプリは、Google Workspace Events API と Pub/Sub を使用して、Chat スペースに投稿された質問をリアルタイムで認識して回答します。質問が記載されていなくても認識できます。

Chat アプリは、スペースで送信されたすべてのメッセージをデータソースとナレッジベースとして使用します。誰かが質問すると、Chat アプリは以前に共有された回答を確認して、1 つを共有します。答えが見つからない場合は、応答できないというメッセージが表示されます。回答ごとに、ユーザーはアクセサリのアクション ボタンをクリックして、スペースの管理者の名前リンクを付けて回答を依頼できます。Google Chat アプリは、Gemini AI を使用することで、追加されたスペースでの会話を継続的にトレーニングしながら、ナレッジベースを適応させて拡大します。

従業員のオンボーディングとサポートのスペースでの Chat アプリの動作は次のとおりです。

  • AI ナレッジ アシスタント アプリについて言及すると、スペースに追加されます。
    図 1: チャーリーさんは AI ナレッジ アシスタントの Chat アプリを Chat スペースに追加します。
  • Dana さんから次の質問がありました。
    図 2.Dana が、同社がスピーチのトレーニングを提供しているかどうかを尋ねています。
  • AI ナレッジ アシスタントの Chat アプリが質問に答えます。
    図 3.AI ナレッジ アシスタントの Chat アプリは、Gemini を使用して Vertex AI にプロンプトを入力することで、Chat スペースの会話履歴に基づいてダナの質問に答え、回答を共有します。

前提条件

目標

  • 生成 AI を使用して、Chat スペースの会話で共有された知識に基づいて質問に答える Chat アプリを作成します。
  • 生成 AI を使用する場合:
    • 従業員の質問を検出して回答します。
    • Chat スペースで進行中の会話から継続的に学習します。
  • Chat アプリにメッセージが直接送信されていない場合でも、Chat スペース内のメッセージをリアルタイムでリッスンして応答できます。
  • Firestore データベースに対して書き込みと読み取りを行い、メッセージを保持します。
  • 質問に対する回答が見つからない場合にスペースの管理者をメンションすることで、Chat スペースでのコラボレーションを促進します。

アーキテクチャ

次の図は、AI ナレッジ アシスタント Chat アプリで使用される Google Workspace リソースと Google Cloud リソースのアーキテクチャを示しています。

AI ナレッジ アシスタント Chat アプリのアーキテクチャ図

AI ナレッジ アシスタントの Chat アプリは、次のように動作します。

  • ユーザーが AI ナレッジ アシスタントの Chat アプリを Chat スペースに追加します。

    1. Chat アプリは、Chat スペースに追加したユーザーに、認証と認可を構成するよう求めます。

    2. Chat アプリは、Chat API の spaces.messages.list メソッドを呼び出してスペースのメッセージを取得し、取得したメッセージを Firestore データベースに保存します。

    3. Chat アプリは、Google Workspace Events API の subscriptions.create メソッドを呼び出して、スペース内のメッセージなどのイベントをリッスンします。サブスクリプションの通知エンドポイントは、Eventarc を使用してイベントを Chat アプリに転送する Pub/Sub トピックです。

    4. Chat アプリからスペースに紹介メッセージが投稿されます。

  • Chat スペース内のユーザーが次のメッセージを投稿しました。

    1. Chat アプリは Pub/Sub トピックからリアルタイムでメッセージを受信します。

    2. Chat アプリが Firestore データベースにメッセージを追加します。

      ユーザーが後でメッセージを編集または削除すると、Chat アプリは更新または削除されたイベントをリアルタイムで受信し、Firestore データベース内のメッセージを更新または削除します。

    3. Chat アプリは、Gemini を使用してメッセージを Vertex AI に送信します。

      1. このプロンプトは、Gemini を使用して Vertex AI に、メッセージに質問が含まれているかどうかを確認するよう指示します。その場合、Gemini は Firestore に保存されている Chat スペースのメッセージ履歴に基づいて質問に回答し、Google Chat アプリがそのメッセージを Chat スペースに送信します。応答しない場合は、応答しないでください。

      2. Gemini の Vertex AI が質問に回答すると、Chat アプリは、アプリ認証を使用して Chat API の spaces.messages.create メソッドを呼び出し、回答を送信します。

        Gemini を使用する Vertex AI が質問に回答できない場合、Chat アプリは、Chat スペースの履歴でその質問に対する回答が見つからないことを示すメッセージを送信します。

        メッセージには、ユーザーがクリックできるアクセサリ アクション ボタンが常に含まれています。これにより、Chat アプリはスペースの管理者に名前リンクを付けて応答を求めることになります。

  • Chat アプリが、Chat スペースのサブスクリプションの有効期限が近づいているというライフサイクル通知を Google Workspace Events API から受け取ります。

    1. Chat アプリは、Google Workspace Events API の subscriptions.patch メソッドを呼び出して、サブスクリプション更新リクエストを送信します。
  • Chat アプリが Chat スペースから削除されます。

    1. Chat アプリは、Google Workspace Events API の subscriptions.delete メソッドを呼び出して、サブスクリプションを削除します。

    2. Chat アプリが Firestore から Chat スペースのデータを削除します。

AI ナレッジ アシスタントの Chat アプリで使用されるプロダクトを確認する

AI ナレッジ アシスタントの Chat アプリは、次の Google Workspace と Google Cloud プロダクトを使用します。

  • Gemini による Vertex AI API: Gemini を活用した生成 AI プラットフォーム。AI ナレッジ アシスタントの Chat アプリは、Vertex AI API と Gemini を使用して、従業員の質問を認識、理解、回答します。
  • Chat API: メッセージなどのチャット操作イベントを受信して応答する Google Chat アプリを開発するための API。AI ナレッジ アシスタントの Chat アプリは、Chat API を使用して次の処理を行います。
    • Chat から送信されたインタラクション イベントを受信して応答します。
    • スペースで送信されたメッセージを一覧表示します。
    • スペースでユーザーからの質問に答えます。
    • Chat での表示を決定する属性(名前やアバター画像など)を構成します。
  • Google Workspace Events API: この API を使用すると、Google Workspace アプリケーション全体でイベントに登録し、変更通知を管理できます。AI ナレッジ アシスタントの Chat アプリは、Google Workspace Events API を使用して Chat スペースに投稿されたメッセージをリッスンします。これにより、質問が記載されていなくても検出して回答できます。
  • Firestore: サーバーレスのドキュメント データベース。AI ナレッジ アシスタントの Chat アプリは、Firestore を使用して、Chat スペースで送信されたメッセージに関するデータを保存します。
  • Pub/Sub: Pub/Sub は、メッセージを生成するサービスとメッセージを処理するサービスを切り離す、非同期でスケーラブルなメッセージング サービスです。AI Knowledge Assistant の Chat アプリは、Pub/Sub を使用して Chat スペースからサブスクリプション イベントを受信します。
  • Eventarc: Eventarc を使用すると、基盤となるインフラストラクチャを実装、カスタマイズ、またはメンテナンスすることなく、イベント ドリブン アーキテクチャを構築できます。AI Knowledge Assistant の Chat アプリは、Eventarc を使用して Pub/Sub から Chat スペースにイベントを転送し、サブスクリプション イベントを受信して処理する Cloud Functions の関数に転送します。
  • Cloud Functions: サーバーやランタイム環境を管理せずに、Chat のインタラクションとサブスクリプション イベントに応答できる単一目的のスタンドアロン関数を作成できる軽量のサーバーレス コンピューティング サービス。AI ナレッジ アシスタントの Chat アプリは、次の 2 つの Cloud Functions を使用します。
    • app: Chat が操作イベントをコンピューティング プラットフォームに送信し、それらのイベントを処理して応答するロジックを実行する HTTP エンドポイントをホストします。
    • eventsApp: Pub/Sub サブスクリプションからのメッセージなどの Chat スペース イベントを受信して処理します。
    Cloud Functions は、次の Google Cloud プロダクトを使用してコンピューティング リソースを構築し、ホストします。
    • Cloud Build: 自動ビルドを実行する、フルマネージドの継続的インテグレーション、デリバリー、デプロイ プラットフォーム。
    • Cloud Run: コンテナ化アプリを実行するためのフルマネージド環境。

環境を準備する

このセクションでは、Chat アプリ用の Google Cloud プロジェクトを作成して構成する方法について説明します。

Google Cloud プロジェクトを作成する

Google Cloud コンソール

  1. Google Cloud コンソールで、メニュー > [IAM と管理] > [プロジェクトを作成] に移動します。

    [プロジェクトの作成] に移動

  2. [プロジェクト名] フィールドに、プロジェクトのわかりやすい名前を入力します。

    省略可: プロジェクト ID を編集するには、[編集] をクリックします。プロジェクトの作成後にプロジェクト ID を変更することはできません。プロジェクトの存続期間に応じて、ニーズに合った ID を選択してください。

  3. [ロケーション] フィールドで [参照] をクリックして、プロジェクトの潜在的なロケーションを表示します。[選択] をクリックします。
  4. [作成] をクリックします。Google Cloud コンソールが [ダッシュボード] ページに移動し、数分以内にプロジェクトが作成されます。

gcloud CLI

次のいずれかの開発環境で、Google Cloud CLI(「gcloud」)にアクセスします。

  • Cloud Shell: gcloud CLI がすでに設定されているオンライン ターミナルを使用するには、Cloud Shell をアクティブにします。
    Cloud Shell をアクティブにする
  • ローカルシェル: ローカル開発環境を使用するには、gcloud CLI をインストールしてinitializeします。
    Cloud プロジェクトを作成するには、gcloud projects create コマンドを使用します。
    gcloud projects create PROJECT_ID
    PROJECT_ID は、作成するプロジェクトの ID を設定して置き換えます。

Cloud プロジェクトの課金を有効にする

Google Cloud コンソール

  1. Google Cloud コンソールで、[お支払い] に移動します。メニュー アイコン > [お支払い] > [マイ プロジェクト] をクリックします。

    [マイ プロジェクトの課金] に移動

  2. [組織を選択] で、Google Cloud プロジェクトに関連付けられた組織を選択します。
  3. プロジェクトの行で [アクション] メニュー()を開き、[お支払い情報を変更] をクリックして、Cloud 請求先アカウントを選択します。
  4. [アカウントを設定] をクリックします。

gcloud CLI

  1. 使用可能な請求先アカウントを一覧表示するには、次のコマンドを実行します。
    gcloud billing accounts list
  2. 請求先アカウントを Google Cloud プロジェクトにリンクします。
    gcloud billing projects link PROJECT_ID --billing-account=BILLING_ACCOUNT_ID

    次のように置き換えます。

    • PROJECT_ID は、課金を有効にする Cloud プロジェクトのプロジェクト ID です。
    • BILLING_ACCOUNT_ID は、Google Cloud プロジェクトにリンクする請求先アカウント ID です。

API を有効にする

Google Cloud コンソール

  1. Google Cloud コンソールで、Google Chat API、Vertex AI API、Cloud Functions API、Firestore API、Cloud Build API、Pub/Sub API、Google Workspace Events API、Eventarc API、Cloud Run Admin API を有効にします。

    API を有効にする

  2. 正しい Cloud プロジェクトで API が有効になっていることを確認し、[次へ] をクリックします。

  3. 正しい API が有効になっていることを確認し、[有効にする] をクリックします。

gcloud CLI

  1. 必要に応じて、現在の Cloud プロジェクトを作成したプロジェクトに設定します。

    gcloud config set project PROJECT_ID
    

    PROJECT_ID は、作成した Cloud プロジェクトのプロジェクト ID に置き換えます。

  2. Google Chat API、Vertex AI API、Cloud Functions API、Firestore API、Cloud Build API、Pub/Sub API、Google Workspace Events API、Eventarc API、Cloud Run Admin API を有効にします。

    gcloud services enable chat.googleapis.com \
    aiplatform.googleapis.com \
    cloudfunctions.googleapis.com \
    firestore.googleapis.com \
    cloudbuild.googleapis.com \
    pubsub.googleapis.com \
    workspaceevents.googleapis.com \
    eventarc.googleapis.com \
    run.googleapis.com
    

認証と権限付与の設定

認証と認可を使用すると、Chat アプリが Google Workspace と Google Cloud のリソースにアクセスできます。

このチュートリアルでは、Google Chat アプリを内部で公開するため、プレースホルダ情報を使用しても問題ありません。Google Chat アプリを外部に公開する前に、プレースホルダ情報を同意画面の実際の情報に置き換えます。

  1. Google Cloud コンソールで、メニュー > [API とサービス] > [OAuth 同意画面] に移動します。

    OAuth 同意画面に移動

  2. [ユーザーの種類] で [内部] を選択し、[作成] をクリックします。

  3. [アプリ名] に「AI knowledge assistant」と入力します。

  4. [ユーザー サポートメール] で、メールアドレスまたは適切な Google グループを選択します。

  5. [デベロッパーの連絡先情報] にメールアドレスを入力します。

  6. [Save and Continue] をクリックします。

  7. [スコープを追加または削除] をクリックします。パネルに、Cloud プロジェクトで有効にした各 API のスコープのリストが表示されます。

  8. [スコープを手動で追加] に、次のスコープを貼り付けます。

    • https://www.googleapis.com/auth/chat.messages
  9. [Add to Table] をクリックします。

  10. [更新] をクリックします。

  11. [Save and Continue] をクリックします。

  12. アプリ登録の概要を確認し、[ダッシュボードに戻る] をクリックします。

OAuth クライアント ID の認証情報を作成する

  1. Google Cloud コンソールで、メニュー > [API とサービス] > [認証情報] に移動します。

    [認証情報] に移動

  2. [認証情報を作成] > [OAuth クライアント ID] をクリックします。

  3. [アプリケーションの種類] > [ウェブ アプリケーション] をクリックします。

  4. [名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。

  5. [承認済みのリダイレクト URI] の下の [URI を追加] をクリックします。

  6. [URI 1] に次のように入力します。

    https://REGION-PROJECT_ID.cloudfunctions.net/app/oauth2
    

    次のように置き換えます。

    • REGION: Cloud Functions の関数のリージョン(us-central1 など)。後で 2 つの Cloud Functions の関数を作成するときに、リージョンをこの値に設定する必要があります。
    • PROJECT_ID: 作成した Cloud プロジェクトのプロジェクト ID
  7. [作成] をクリックします。

  8. [OAuth クライアントを作成しました] ウィンドウで [JSON をダウンロード] をクリックします。

  9. ダウンロードしたファイルに client_secrets.json という名前を付けて保存します。後で 2 つの Cloud Functions の関数を作成するときに、各 Deployment に client_secrets.json ファイルを含めます。

  10. [OK] をクリックします。

Pub/Sub トピックを作成する

Pub/Sub トピックは、Google Workspace Events API と連携して、Chat スペース内のメッセージなどのイベントにサブスクライブし、リアルタイムで Chat アプリに通知します。

Pub/Sub トピックの作成方法は次のとおりです。

Google Cloud コンソール

  1. Google Cloud コンソールで、メニュー > [Pub/Sub] に移動します。

    [Pub/Sub] に移動

  2. [トピックを作成] をクリックします。

  3. [トピック ID] に「events-api」と入力します。

  4. [デフォルトのサブスクリプションを追加] の選択を解除します。

  5. [暗号化] で、[Google が管理する暗号鍵] を選択します。

  6. [作成] をクリックします。Pub/Sub トピックが表示されます。

  7. この Pub/Sub トピックと Google Workspace Events API を連携させるには、Pub/Sub トピックに投稿する権限を Chat IAM ユーザーに付与します。

    1. [events-api] パネルの [権限] で、[プリンシパルを追加] をクリックします。

    2. [プリンシパルの追加] で、[新しいプリンシパル] に「chat-api-push@system.gserviceaccount.com」と入力します。

    3. [ロールの割り当て] の [ロールを選択] で、[Pub/Sub] > [Pub/Sub パブリッシャー] を選択します。

    4. [保存] をクリックします。

gcloud CLI

  1. トピック ID が events-api の Pub/Sub トピックを作成します。

    gcloud pubsub topics create events-api
    
  2. Chat IAM ユーザーに、Pub/Sub トピックに投稿する権限を付与します。

    gcloud pubsub topics add-iam-policy-binding events-api \
    --member='serviceAccount:chat-api-push@system.gserviceaccount.com' \
    --role='roles/pubsub.publisher'
    

Firestore データベースを作成する

Firestore データベースは、Chat スペースからメッセージなどのデータを保持し、取得します。model/message.js ファイルと services/firestore-service.js ファイルによってサンプルコードで暗黙的に設定されるデータモデルは定義しません。

AI ナレッジ アシスタントの Chat アプリのデータベースは、 コレクションに編成された ドキュメントに基づく NoSQL データモデルを使用します。詳細については、Firestore データモデルをご覧ください。

次の図は、AI ナレッジ アシスタント Chat アプリのデータモデルの概要を示しています。

Firestore データベースのデータモデル。

ルートには、次の 2 つのコレクションが含まれています。

  1. spaces。各ドキュメントは、Chat アプリが追加された Chat スペースを表します。各メッセージは、messages サブコレクションのドキュメントで表されます。

  2. users。各ドキュメントは、Chat アプリを Chat スペースに追加したユーザーを表します。

コレクション、ドキュメント、フィールドの定義を表示する

spaces

AI ナレッジ アシスタントの Chat アプリを含む Chat スペース。

フィールド
Document IDString
特定のスペースの一意の ID。Chat API でのスペースのリソース名の一部。
messagesSubcollection of Documents (messages)
Chat スペースで送信されたメッセージ。Firebase の messageDocument ID に対応します。
spaceNameString
Chat API 内のスペースの一意の名前。Chat API のスペースのリソース名に対応します。

messages

Chat スペースで送信されたメッセージ。

フィールド
Document IDString
特定のメッセージの一意の ID。
nameString
Chat API 内のメッセージの一意の名前。Chat API のメッセージのリソース名に対応します。
textString
メッセージのテキスト本文。
timeString (Timestamp format)
メッセージが作成された時刻。

users

AI ナレッジ アシスタントの Chat アプリを Chat スペースに追加したユーザー。

フィールド
Document IDString
特定のユーザーの一意の ID。
accessTokenString
Google Workspace API の呼び出しに使用される OAuth 2.0 ユーザー承認中に付与されたアクセス トークン。
refreshTokenString
OAuth 2.0 のユーザー認証中に付与された更新トークン。

Firestore データベースを作成する方法は次のとおりです。

Google Cloud コンソール

  1. Google Cloud コンソールで、メニュー > [Firestore] に移動します。

    Firestore に移動

  2. [データベースを作成] をクリックします。

  3. [Firestore モードの選択] で、[ネイティブ モード] をクリックします。

  4. [続行] をクリックします。

  5. データベースを構成します。

    1. [データベースの命名] で、[データベース ID] を (default) のままにします。

    2. [ロケーション タイプ] で、[リージョン] を選択します。

    3. [リージョン] で、データベースのリージョン(us-central1 など)を指定します。最適なパフォーマンスを得るには、Chat アプリの Cloud Functions と同じロケーションまたは近くのロケーションを選択します。

  6. [データベースを作成] をクリックします。

gcloud CLI

  • ネイティブ モードで Firestore データベースを作成します。

    gcloud firestore databases create \
    --location=LOCATION \
    --type=firestore-native
    

    LOCATION は、Firestore リージョンの名前(us-central1 など)に置き換えます。最適なパフォーマンスを得るには、Chat アプリの Cloud Functions と同じ、または近いロケーションを選択してください。

Chat アプリを作成してデプロイする

Google Cloud プロジェクトの作成と構成が完了しました。次に、Chat アプリをビルドしてデプロイします。このセクションでは、次のことを行います。

  1. 2 つの Cloud Functions の関数を作成してデプロイする。1 つは Chat のインタラクション イベントへの応答用で、もう 1 つは Pub/Sub イベントへの応答用です。
  2. Google Chat API の構成ページで、Chat アプリを作成してデプロイします。

Cloud Functions の関数を作成してデプロイする

このセクションでは、次の 2 つの Cloud Functions の関数を作成してデプロイします。

  • app: Chat から受信したイベントに HTTP リクエストとして応答する Chat アプリのコードをホストして実行します。
  • eventsApp: Pub/Sub からのメッセージなどの Chat スペース イベントを受信して処理します。

これらの Cloud Functions が、AI ナレッジ アシスタント Chat アプリのアプリケーション ロジックを構成します。

必要に応じて、Cloud Functions を作成する前に、GitHub でホストされているサンプルコードを確認し、よく理解しておいてください。

GitHub で表示

app を作成してデプロイする

Google Cloud コンソール

  1. コードを GitHub から ZIP ファイルとしてダウンロードします。

    zip ファイルをダウンロード

  2. ダウンロードした ZIP ファイルを展開します。

    抽出されたフォルダには、Google Workspace のサンプル リポジトリ全体が含まれています。

  3. 抽出されたフォルダで、google-chat-samples-main/node/ai-knowledge-assistant ディレクトリに移動します。

  4. google-chat-samples/node/ai-knowledge-assistant ディレクトリで、認証と認可用の OAuth クライアント ID 認証情報を作成したときにダウンロードした client_secrets.json ファイルを追加します。

  5. ai-knowledge-assistant フォルダの内容を zip ファイルに圧縮します。

    zip ファイルのルート ディレクトリには、次のファイルとフォルダが含まれている必要があります。

    • .gcloudignore
    • .gitignore
    • README.md
    • deploy.sh
    • env.js
    • events_index.js
    • http_index.js
    • index.js
    • client_secrets.json
    • package-lock.json
    • package.json
    • controllers/
    • model/
    • services/
    • test/
  6. Google Cloud コンソールで、メニュー > [Cloud Functions] に移動します。

    Cloud Functions に移動

    Chat アプリ用の Google Cloud プロジェクトが選択されていることを確認します。

  7. [ 関数を作成] をクリックします。

  8. [関数の作成] ページで、関数を設定します。

    1. [環境] で、[第 2 世代] を選択します。
    2. [関数名] に「app」と入力します。
    3. [リージョン] で、us-central1 などのリージョンを選択します。このリージョンは、認証と認可用の OAuth クライアント ID 認証情報を作成したときに、承認済みのリダイレクト URI で設定したリージョンと一致する必要があります。
    4. [トリガーのタイプ] で、[HTTPS] を選択します。
    5. [認証] で、[未認証の呼び出しを許可する] を選択します。
    6. [次へ] をクリックします。
  9. [ランタイム] で [Node.js 20] を選択します。

  10. [エントリ ポイント] でデフォルトのテキストを削除し、「app」と入力します。

  11. [ソースコード] で、[ZIP アップロード] を選択します。

  12. [転送先バケット] で、バケットを作成または選択します。

    1. [探す] をクリックします。
    2. バケットを選択します。
    3. [選択] をクリックします。

    Google Cloud は ZIP ファイルをこのバケットにアップロードし、このバケット内のコンポーネント ファイルを抽出します。Cloud Functions がコンポーネント ファイルを Cloud Functions の関数にコピーします。

  13. ZIP ファイルに、GitHub からダウンロードして解凍、再圧縮した ZIP ファイルをアップロードします。

    1. [探す] をクリックします。
    2. zip ファイルに移動して選択します。
    3. [開く] をクリックします。
  14. [Deploy] をクリックします。

    Cloud Functions の詳細ページが開き、関数に 2 つの進行状況インジケーター(ビルドの進行状況インジケーターとサービスのインジケーター)が表示されます。両方の進行状況インジケーターが表示されなくなり、チェックマークに変わったら、関数がデプロイされて準備が整います。

  15. サンプルコードを編集して定数を設定します。

    1. [Cloud Functions の関数の詳細] ページで、[編集] をクリックします。
    2. [次へ] をクリックします。
    3. [ソースコード] で [インライン エディタ] を選択します。
    4. インライン エディタで env.js ファイルを開いて編集します。
      1. project の値を Cloud プロジェクト ID に設定します。
      2. location の値を、Cloud Functions の関数のリージョンus-central1 など)に設定します。
  16. [Deploy] をクリックします。

gcloud CLI

  1. GitHub からコードのクローンを作成します。

    git clone https://github.com/googleworkspace/google-chat-samples.git
    
  2. この AI ナレッジ アシスタント Chat アプリのコードがあるディレクトリに移動します。

    cd google-chat-samples/node/ai-knowledge-assistant
    
  3. google-chat-samples/node/ai-knowledge-assistant ディレクトリで、認証と認可用の OAuth クライアント ID 認証情報を作成したときにダウンロードした client_secrets.json ファイルを追加します。

  4. env.js ファイルを編集して環境変数を設定します。

    1. project の値を Cloud プロジェクト ID に設定します。
    2. location の値を、Cloud Functions の関数のリージョンus-central1 など)に設定します。
  5. Cloud Functions の関数を Google Cloud にデプロイします。

    gcloud functions deploy app \
    --gen2 \
    --region=REGION \
    --runtime=nodejs20 \
    --source=. \
    --entry-point=app \
    --trigger-http \
    --allow-unauthenticated
    

    REGION は、env.js ファイルに設定されている値(us-central1 など)と一致するように、Cloud Functions のリージョンの値に置き換えます。

eventsApp を作成してデプロイする

Google Cloud コンソール

  1. Google Cloud コンソールで、メニュー > [Cloud Functions] に移動します。

    Cloud Functions に移動

    Chat アプリ用の Google Cloud プロジェクトが選択されていることを確認します。

  2. [ 関数を作成] をクリックします。

  3. [関数の作成] ページで、関数を設定します。

    1. [環境] で、[第 2 世代] を選択します。
    2. [関数名] に「eventsApp」と入力します。
    3. [リージョン] で、us-central1 などのリージョンを選択します。このリージョンは、認証と認可用の OAuth クライアント ID 認証情報を作成したときに、承認済みのリダイレクト URI で設定したリージョンと一致する必要があります。
    4. [トリガーのタイプ] で、[Cloud Pub/Sub] を選択します。
    5. [Cloud Pub/Sub トピック] で、作成した Pub/Sub トピック名を選択します。これは projects/PROJECT/topics/events-api の形式です。ここで、PROJECT は Cloud プロジェクト ID です。
    6. Service account(s) might not have enough permissions to deploy the function with the selected trigger. で始まるメッセージが表示された場合は、[Grant All] をクリックします。
    7. [次へ] をクリックします。
  4. [ランタイム] で [Node.js 20] を選択します。

  5. [エントリ ポイント] でデフォルトのテキストを削除し、「eventsApp」と入力します。

  6. [ソースコード] で、[Cloud Storage から ZIP] を選択します。

  7. [Cloud Storage のロケーション] で、[参照] をクリックします。

  8. Cloud Functions の関数 app の作成時に ZIP ファイルをアップロードしたバケットを選択します。

  9. アップロードした ZIP ファイルをクリックします。

  10. [選択] をクリックします。

  11. [Deploy] をクリックします。

    Cloud Functions の詳細ページが開き、関数に 3 つの進行状況インジケーター(ビルド、サービス、トリガー)が表示されます。3 つの進行状況インジケーターがすべて消えてチェックマークに変わったら、関数がデプロイされて準備が整います。

  12. サンプルコードを編集して定数を設定します。

    1. [Cloud Functions の関数の詳細] ページで、[編集] をクリックします。
    2. [次へ] をクリックします。
    3. [ソースコード] で [インライン エディタ] を選択します。
    4. インライン エディタで env.js ファイルを開いて編集します。
      1. project の値を Cloud プロジェクト ID に設定します。
      2. location の値を Cloud Functions のリージョンus-central1 など)に設定します。
  13. [Deploy] をクリックします。

gcloud CLI

  1. gcloud CLI で、以前に GitHub からクローンを作成したこの AI ナレッジ アシスタント Chat アプリのコードを含むディレクトリに切り替えます。

    cd google-chat-samples/node/ai-knowledge-assistant
    
  2. google-chat-samples/node/ai-knowledge-assistant ディレクトリで、認証と認可用の OAuth クライアント ID 認証情報を作成したときにダウンロードした client_secrets.json ファイルを追加します。

  3. env.js ファイルを編集して環境変数を設定します。

    1. project の値を Cloud プロジェクト ID に設定します。
    2. location の値を、Cloud Functions の関数のリージョンus-central1 など)に設定します。
  4. Cloud Functions の関数を Google Cloud にデプロイします。

    gcloud functions deploy eventsApp \
    --gen2 \
    --region=REGION \
    --runtime=nodejs20 \
    --source=. \
    --entry-point=eventsApp \
    --trigger-topic=events-api
    

    REGION は、env.js ファイルに設定されている値(us-central1 など)と一致するように、Cloud Functions のリージョンの値に置き換えます。

app Cloud Functions の関数のトリガー URL をコピーします。

Google Cloud コンソールで Chat アプリを構成するときに、app Cloud Functions の関数のトリガー URL を次のセクションに貼り付けます。

Google Cloud コンソール

  1. Google Cloud コンソールで、メニュー > [Cloud Functions] に移動します。

    Cloud Functions に移動

  2. Cloud Functions の関数の [名前] 列で、[app] をクリックします。

  3. [トリガー] をクリックします。

  4. URL をコピーします。

gcloud CLI

  1. app Cloud Functions の関数を記述します。

    gcloud functions describe app
    
  2. url プロパティをコピーします。

Google Cloud コンソールで Chat アプリを構成する

このセクションでは、Chat アプリの名前や、Chat インタラクション イベントの送信先となる Chat アプリの Cloud Functions のトリガー URL など、Chat アプリに関する情報を使用して、Google Cloud コンソールで Chat API を構成する方法について説明します。

  1. Google Cloud コンソールで、メニュー アイコン > [その他のプロダクト] > [Google Workspace] > [プロダクト ライブラリ] > [Google Chat API] > [管理] > [構成] をクリックします。

    Chat API の構成に移動

  2. [アプリ名] に「AI knowledge assistant」と入力します。

  3. [アバターの URL] に「https://fonts.gstatic.com/s/i/short-term/release/googlesymbols/live_help/default/24px.svg」と入力します。

  4. [説明] に「Answers questions with AI」と入力します。

  5. [インタラクティブ機能を有効にする] をクリックしてオンにします。

  6. [機能] で、[スペースとグループの会話に参加する] を選択します。

  7. [接続設定] で [アプリの URL] を選択します。

  8. [アプリの URL] に、app Cloud Functions の関数のトリガー URL を https://REGION-PROJECT_ID.cloudfunctions.net/app の形式で貼り付けます。ここで、REGION は Cloud Functions の関数のリージョン(us-central1 など)、PROJECT_ID は、作成した Cloud プロジェクトのプロジェクト ID です。

  9. [公開設定] で、[この Chat アプリを Workspace ドメイン内の特定のユーザーとグループが使用できるようにする] をオンにして、メールアドレスを入力します。

  10. 必要に応じて、[ログ] で [エラーを Logging に記録] を選択します。

  11. [保存] をクリックします。構成の保存メッセージが表示されます。これは、Chat アプリのテストの準備ができたことを意味します。

Chat アプリをテストする

Chat スペースで AI ナレッジ アシスタント Chat アプリが回答できる質問をして、メッセージを使用して AI ナレッジ アシスタント Chat アプリをテストします。

AI ナレッジ アシスタント Chat アプリをテストするには、いくつかの方法があります。

  • AI ナレッジ アシスタントの Chat アプリを既存の Chat スペースに追加し、そのスペースに関連する質問をします。
  • Chat スペースを作成し、データソースとして使用するメッセージをいくつか投稿します。メッセージは、Gemini から「Answer 20 common onboarding questions employees ask their teams.」のようなプロンプトを使用して取得できます。または、Chat での開発の概要ガイドから数段落を貼り付けて、それについて質問することもできます。

このチュートリアルでは、Chat スペースを作成し、Chat での開発の概要ガイドに記載されている数段落を貼り付けます。

  1. Google Chat を開きます。

    Google Chat に移動

  2. Chat スペースを作成するには:

    1. [ 新しいチャット] > [スペースを作成] をクリックします。

    2. [スペース名] に「Testing AI knowledge assistant app」と入力します。

    3. [このスペースの目的] で [コラボレーション] を選択します。

    4. [アクセス設定] で、スペースにアクセスできるユーザーを選択します。

    5. [作成] をクリックします。

  3. データソースとして使用するメッセージを追加します。

    1. ウェブブラウザで Chat を使用した開発の概要ガイドをご覧ください。

    2. ガイドの内容をコピーして、作成した Chat スペースに貼り付けます。

  4. AI ナレッジ アシスタントの Chat アプリを追加します。

    1. メッセージの入力バーに「@AI knowledge assistant」と入力し、表示された候補メニューで AI ナレッジ アシスタント Chat アプリを選択して、enter を押します。

    2. AI ナレッジ アシスタント Chat アプリをスペースに追加するかどうかを尋ねるメッセージが表示されます。[スペースに追加] をクリックします。

    3. Chat アプリをスペースに初めて追加する場合は、Chat アプリの認証と認可を構成する必要があります。

      1. [構成] をクリックします。
      2. 新しいブラウザ ウィンドウまたはタブが開き、Google アカウントの選択を求められます。テストで使用するアカウントを選択します。
      3. AI ナレッジアシスタント Chat アプリがリクエストする権限を確認します。付与するには、[許可] をクリックします。
      4. You may close this page now.」というメッセージが表示されます。ブラウザ ウィンドウまたはタブを閉じて、Chat スペースに戻ります。
  5. 質問する

    1. メッセージの入力バーに、What are Google Chat apps? のような質問を入力します。

    2. AI ナレッジ アシスタントの Chat アプリが応答します。

    3. 必要に応じて、回答が正確でない場合や十分でない場合は、 [ヘルプを表示] をクリックして AI の会話履歴を改善します。AI ナレッジアシスタントの Chat アプリがスペースの管理者を メンションして質問に答えます次は AI ナレッジアシスタントの チャットアプリが答えを知るでしょう

考慮事項、代替アーキテクチャの選択肢、次のステップ

このセクションでは、AI ナレッジアシスタント Chat アプリを作成するその他の方法について説明します。

Firestore、Cloud Storage、Chat API での List Messages の呼び出し

このチュートリアルでは、メッセージなどの Chat スペースのデータを Firestore データベースに保存することをおすすめします。これは、Chat アプリが質問に回答するたびに、Chat API を使用して Message リソースの list メソッドを呼び出すよりもパフォーマンスが向上するためです。さらに、list messages を繰り返し呼び出すと、Chat アプリが API の割り当て上限に達する可能性があります。

ただし、Chat スペースの会話履歴が長くなりすぎると、Firestore の使用コストが高くなる可能性があります。

Cloud Storage は Firestore に代わるものです。AI ナレッジ アシスタント Chat アプリがアクティブである各スペースは、独自のオブジェクトを取得します。各オブジェクトは、スペース内のすべてのメッセージを含むテキスト ファイルです。このアプローチの利点は、テキスト ファイルの全コンテンツを Gemini を使用して一度に Vertex AI にフィードできることですが、欠点は、Cloud Storage のオブジェクトに追加できず、置き換えるだけであるため、会話履歴の更新に多くの手間がかかることです。このアプローチは、メッセージ履歴を定期的に更新する場合は意味がありませんが、メッセージ履歴を定期的に(たとえば週に 1 回)バッチ更新する場合は適しています。

トラブルシューティング

Google Chat アプリまたはカードからエラーが返されると、Chat インターフェースに「エラーが発生しました」または「リクエストを処理できません」というメッセージが表示されます。Chat UI にエラー メッセージが表示されないにもかかわらず、Chat アプリまたはカードから予期しない結果(カード メッセージが表示されないなど)が発生することがあります。

Chat の UI にエラー メッセージが表示されない場合もありますが、Chat アプリのエラーロギングがオンになっている場合は、エラー メッセージとログデータを使用してエラーを修正できます。エラーの表示、デバッグ、修正については、Google Chat のエラーのトラブルシューティングと修正をご覧ください。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、Cloud プロジェクトを削除することをおすすめします。

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。メニュー > [IAM と管理] > [リソースの管理] をクリックします。

    Resource Manager に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。