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

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

Chat 用アプリは、スペースで送信されたすべてのメッセージをデータソースとナレッジベースとして使用します。質問が投稿されると、Chat 用アプリは以前に共有された回答を確認し、そのうちの 1 つを共有します。回答が見つからない場合は、回答できないことを伝えます。各回答で、ユーザーは補助アクション ボタンをクリックしてスペース管理者を名前リンクし、回答を求めることができます。Gemini AI を使用することで、Google Chat アプリは、追加されたスペースでの会話を継続的に学習し、知識ベースを適応させ、拡大させます。

従業員のオンボーディングとサポートのスペースで Chat 用アプリがどのように機能するかは次のとおりです。

  • AI ナレッジ アシスタント アプリに言及すると、そのアプリがスペースに追加されます。
    図 1: Charlie が AI ナレッジ アシスタントの Chat 用アプリを Chat スペースに追加します。
  • ダナが質問します。
    図 2. Dana は、会社で講演のトレーニングを提供しているかどうかを尋ねます。
  • AI ナレッジ アシスタントの Chat 用アプリが質問に回答します。
    図 3. AI ナレッジ アシスタント Chat 用アプリは、Chat スペースの会話履歴に基づいて Dana の質問に回答するよう Gemini を使用して Vertex AI にプロンプトを送信し、回答を共有します。

前提条件

目標

  • 生成 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. このプロンプトは、メッセージに質問が含まれているかどうかを確認するよう Vertex AI with Gemini に指示します。Gemini は、Firestore に保存されている Chat スペースのメッセージ履歴に基づいて質問に回答し、Google Chat アプリが Chat スペースにメッセージを送信します。一致しない場合は、返信しないでください。

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

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

        メッセージには、ユーザーがクリックできる補助アクション ボタンが常に含まれています。このボタンをクリックすると、Chat 用アプリがスペース管理者を @メンションして回答を求めます。

  • Chat 用アプリは、Google Workspace Events API から、Chat スペースのサブスクリプションがまもなく期限切れになるというライフサイクル通知を受け取ります。

    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: 生成 AI プラットフォーム。AI 知識アシスタントの Chat 用アプリは、Gemini を使用した Vertex AI API を使用して、従業員の質問を認識、理解し、回答します。
  • Chat API: メッセージなどの Chat インタラクション イベントを受信して応答する 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 ナレッジ アシスタント Chat 用アプリは、Pub/Sub を使用して Chat スペースからサブスクリプション イベントを受信します。
  • Eventarc: Eventarc を使用すると、基盤となるインフラストラクチャを実装、カスタマイズ、またはメンテナンスすることなく、イベント ドリブン アーキテクチャを構築できます。AI ナレッジ アシスタント 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 と管理] > [プロジェクトを作成] に移動します。

    [Create a Project] に移動

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

    省略可: プロジェクト ID を編集するには、[編集] をクリックします。プロジェクトの作成後にプロジェクト ID を変更することはできないため、プロジェクトのライフタイムを考慮してニーズに合った ID を指定してください。

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

gcloud CLI

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

  • Cloud Shell: gcloud CLI がすでに設定されているオンライン ターミナルを使用するには、Cloud Shell をアクティブにします。
    Cloud Shell をアクティブにする
  • ローカルシェル: ローカル開発環境を使用するには、gcloud CLI をインストールして初期化します。
    Cloud プロジェクトを作成するには、gcloud projects create コマンドを使用します。
    gcloud projects create PROJECT_ID
    作成するプロジェクトの ID を設定して、PROJECT_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 コンソールで、メニュー > > [ブランディング] に移動します。

    [ブランディング] に移動

  2. をすでに構成している場合は、[ブランディング]、[対象ユーザー]、[データアクセス] で次の OAuth 同意画面の設定を構成できます。[ まだ設定されていません] というメッセージが表示された場合は、[使ってみる] をクリックします。

    1. [アプリ情報] の [アプリ名] に「AI knowledge assistant」と入力します。
    2. [ユーザー サポートメール] で、メールアドレスまたは適切な Google グループを選択します。
    3. [次へ] をクリックします。
    4. [対象] で [内部] を選択します。[内部] を選択できない場合は、[外部] を選択します。
    5. [次へ] をクリックします。
    6. [連絡先情報] で、プロジェクトに対する変更の通知を受け取るメールアドレスを入力します。
    7. [次へ] をクリックします。
    8. [完了] で、Google API サービスのユーザーデータに関するポリシーを確認し、同意する場合は [Google API サービス: ユーザーデータに関するポリシーに同意します] を選択します。
    9. [続行] をクリックします。
    10. [作成] をクリックします。
    11. ユーザータイプとして [外部] を選択した場合は、テストユーザーを追加します。
      1. [オーディエンス] をクリックします。
      2. [テストユーザー] で [ユーザーを追加] をクリックします。
      3. メールアドレスと他の承認済みテストユーザーを入力し、[保存] をクリックします。
  3. [データアクセス] > [スコープを追加または削除] をクリックします。パネルが表示され、Google Cloud プロジェクトで有効にした各 API のスコープのリストが表示されます。

    1. [Manually add scopes] に、次のスコープを貼り付けます。

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

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

    4. アプリに必要なスコープを選択したら、[データアクセス] ページで [保存] をクリックします。

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. ダウンロードしたファイルを credentials.json として保存します。後で、2 つの Cloud Functions を作成するときに、各デプロイに credentials.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 が連携して動作するように、Chat IAM ユーザーに Pub/Sub トピックへの投稿権限を付与します。

    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 認証情報を作成したときにダウンロードした credentials.json ファイルを追加します。

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

    ZIP ファイルには、次のファイルとフォルダが含まれている必要があります。

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

    Cloud Functions に移動

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

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

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

    1. [環境] で、[Cloud Run 関数] を選択します。
    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 file] で、GitHub からダウンロードして展開し、再圧縮した zip ファイルをアップロードします。

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

    [Cloud Functions の詳細] ページが開き、関数が 2 つの進行状況インジケーター(ビルド用とサービス用)とともに表示されます。両方の進行状況インジケーターが消えてチェックマークに置き換わると、関数がデプロイされ、準備が完了します。

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

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

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 認証情報を作成したときにダウンロードした credentials.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 関数のリージョンの値に置き換えます。

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

Google Cloud コンソール

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

    Cloud Functions に移動

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

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

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

    1. [環境] で、[Cloud Run 関数] を選択します。
    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. で始まるメッセージが表示された場合は、[すべて許可] をクリックします。
    7. [次へ] をクリックします。
  4. [ランタイム] で [Node.js 20] を選択します。

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

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

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

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

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

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

  11. [デプロイ] をクリックします。

    [Cloud Functions の詳細] ページが開き、関数が 3 つの進行状況インジケーター(ビルド、サービス、トリガー)とともに表示されます。3 つの進行状況インジケータがすべて消えてチェックマークに置き換わると、関数がデプロイされ、準備が完了します。

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

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

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 認証情報を作成したときにダウンロードした credentials.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 関数のリージョンの値に置き換えます。

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 用アプリを構成する

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

  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. [接続設定] で、[HTTP エンドポイント URL] を選択します。

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

  9. [公開設定] で、[Workspace ドメイン内の特定のユーザーおよびグループにこの Chat 用アプリの利用を許可する] を選択し、メールアドレスを入力します。

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

  11. [保存] をクリックします。構成が保存されたことを示すメッセージが表示され、Chat 用アプリをテストする準備が整います。

Chat アプリをテストする

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

AI ナレッジ アシスタントの Chat 用アプリをテストする方法は次のとおりです。

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

このチュートリアルでは、Chat スペースを作成し、Chat を使用した開発の概要ガイドからいくつかの段落を貼り付けます。

  1. Google Chat を開きます。

    Google Chat にアクセスする

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

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

    2. [Space name] に「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 用アプリをスペースに追加するかどうかを確認するメッセージが表示されます。[Add to space] をクリックします。

    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 ナレッジ アシスタントの Chat 用アプリが回答を認識します。

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

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

Firestore、Cloud Storage、または Chat API で List Messages を呼び出す

このチュートリアルでは、Chat アプリが質問に回答するたびに Chat API で Message リソースの list メソッドを呼び出すよりもパフォーマンスが向上するため、メッセージなどの Chat スペースのデータを Firestore データベースに保存することをおすすめします。また、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 を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。