このチュートリアルでは、Vertex AI と Gemini を搭載した生成 AI を使用して、Chat スペースでの会話に基づいて質問に回答する Google Chat アプリを作成する方法について説明します。Chat アプリは、Google Workspace Events API と Pub/Sub を使用して、Chat スペースに投稿された質問をリアルタイムで認識して回答します。質問に言及されていない場合でも回答します。
Chat アプリは、スペースで送信されたすべてのメッセージをデータソースおよびナレッジベースとして使用します。ユーザーが質問すると、Chat アプリは以前に共有された回答を確認して共有します。回答が見つからない場合は、回答不可と表示されます。各回答でアクセサリの操作ボタンをクリックして、スペースの管理者の名前リンクを付けて回答を求めることができます。Google Chat アプリは Gemini AI を使用して、追加されたスペースでの会話で継続的にトレーニングを行い、ナレッジベースを調整して拡張します。
Chat アプリは、従業員のオンボーディングとサポートのスペースで次のように機能します。
-
図 2.ダナさんは、会社がスピーキング トレーニングを提供しているかどうかを尋ねます。 -
図 3.AI ナレッジ アシスタントの Chat アプリは、Gemini を使用して Vertex AI にプロンプトを入力することで、Chat スペースの会話履歴に基づいて Dana の質問に回答し、その回答を共有します。
前提条件
Google Chat へのアクセス権を持つ Google Workspace アカウント。
次のことを行うための Google Cloud サービスへのアクセス。
- Google Cloud プロジェクトを作成します。
- Google Cloud 請求先アカウントを Cloud プロジェクトにリンクする。アクセス権があるかどうかを確認するには、課金を有効にするために必要な権限をご覧ください。
- 未認証の Google Cloud Functions の関数の呼び出しを使用する。これは、Google Cloud 組織がドメインで制限された共有を使用しているかどうかを判断することで確認できます。
必要に応じて、Google Cloud 管理者にアクセス権または権限の付与を依頼してください。
Google Cloud CLI を使用する場合、gcloud CLI と連携するように構成された Node.js 開発環境。Node.js 開発環境の設定をご覧ください。
目標
- 生成 AI を使用して、Chat スペースの会話で共有される知識に基づいて質問に回答する Chat アプリを作成します。
- 生成 AI を使用する場合:
- 従業員からの質問を検出して回答する。
- Chat スペースでの進行中の会話から継続的に学習する。
- Chat アプリが直接メッセージ送信されていない場合でも、Chat スペース内のメッセージをリアルタイムでリッスンして応答できます。
- Firestore データベースへの書き込みや読み取りによってメッセージを永続化します。
- 質問に対する回答が見つからない場合は、スペースの管理者をメンションすることで、Chat スペースでのコラボレーションを促進します。
アーキテクチャ
次の図は、AI ナレッジ アシスタントの Chat アプリで使用される Google Workspace リソースと Google Cloud リソースのアーキテクチャを示しています。
AI ナレッジ アシスタントのチャットアプリは次のように動作します。
ユーザーが AI ナレッジ アシスタントの Chat アプリを Chat スペースに追加します。
Chat アプリは、アプリを Chat スペースに追加したユーザーに、認証と認可を構成するように求めます。
Chat アプリは Chat API の
spaces.messages.list
メソッドを呼び出してスペースのメッセージを取得し、取得したメッセージを Firestore データベースに保存します。Chat アプリは、Google Workspace Events API の
subscriptions.create
メソッドを呼び出して、スペース内のメッセージなどのイベントのリッスンを開始します。サブスクリプションの通知エンドポイントは、Eventarc を使用してイベントを Chat アプリに転送する Pub/Sub トピックです。Chat アプリからスペースに紹介メッセージが投稿されます。
Chat スペースのユーザーが次のメッセージを投稿しました。
Chat アプリは、Pub/Sub トピックからリアルタイムでメッセージを受け取ります。
Chat アプリが Firestore データベースにメッセージを追加します。
ユーザーが後でメッセージを編集または削除すると、Chat アプリは更新または削除されたイベントをリアルタイムで受信し、Firestore データベース内のメッセージを更新または削除します。
Chat アプリは、Gemini を使用して Vertex AI にメッセージを送信します。
プロンプトは、メッセージに質問が含まれているかどうかを確認するように Gemini を使用する Vertex AI に指示します。チャット メッセージがある場合、Gemini は Firestore に保存されている Chat スペースのメッセージ履歴に基づいて質問に答え、Google Chat アプリは Chat スペースにメッセージを送信します。一致していない場合は、返信しないでください。
Gemini を搭載した Vertex AI が質問に回答すると、Chat アプリはアプリの認証を使用して Chat API の
spaces.messages.create
メソッドを呼び出して回答を送信します。Gemini を使用する Vertex AI が質問に回答できない場合、Chat アプリは、その質問に対する答えが Chat スペースの履歴に見つからないというメッセージを投稿します。
メッセージには、ユーザーがクリックできるアクセサリのアクション ボタンが常に含まれています。これにより、Chat アプリはスペースの管理者の名前リンクを付けて、回答を求めることができます。
Chat アプリは、Google Workspace Events API から、Chat スペースのサブスクリプションがまもなく期限切れになるライフサイクル通知を受け取ります。
- Chat アプリは、Google Workspace Events API の
subscriptions.patch
メソッドを呼び出して、サブスクリプションの更新リクエストを送信します。
- Chat アプリは、Google Workspace Events API の
Chat アプリが Chat スペースから削除されます。
Chat アプリは、Google Workspace Events API の
subscriptions.delete
メソッドを呼び出して、サブスクリプションを削除します。Chat アプリが Firestore から Chat スペースのデータを削除します。
AI ナレッジ アシスタントの Chat アプリで使用されているプロダクトを確認する
AI ナレッジ アシスタントの Chat アプリは、次の Google Workspace プロダクトと Google Cloud プロダクトを使用します。
- Gemini による Vertex AI API: Gemini を活用した生成 AI プラットフォーム。AI ナレッジ アシスタントの Chat アプリは、Gemini で Vertex AI API を使用して、従業員の質問を認識、理解、回答します。
-
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 ナレッジ アシスタントの 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 Build: 自動化されたビルドを実行する、継続的インテグレーション、継続的デリバリー、デプロイのためのフルマネージド プラットフォーム。
- Cloud Run: コンテナ化アプリを実行するためのフルマネージド環境。
-
環境を準備する
このセクションでは、Chat アプリ用の Google Cloud プロジェクトを作成して構成する方法について説明します。
Google Cloud プロジェクトを作成する
Google Cloud コンソール
- Google Cloud コンソールで、メニュー > [IAM と管理] > [プロジェクトを作成] に移動します。
-
[プロジェクト名] フィールドに、プロジェクト用のわかりやすい名前を入力します。
省略可: プロジェクト ID を編集するには、[編集] をクリックします。プロジェクトの作成後にプロジェクト ID を変更することはできません。プロジェクトの存続期間中にニーズを満たす ID を選択してください。
- [ロケーション] フィールドで [参照] をクリックして、プロジェクトの候補となるロケーションを表示します。[選択] をクリックします。
- [作成] をクリックします。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
Cloud プロジェクトの課金を有効にする
Google Cloud コンソール
- Google Cloud コンソールで [お支払い] に移動します。メニュー アイコン > [お支払い] > [マイ プロジェクト] をクリックします。
- [組織を選択] で、Google Cloud プロジェクトに関連付けられている組織を選択します。
- プロジェクトの行で [アクション] メニュー( )を開き、[お支払い情報を変更] をクリックして、Cloud 請求先アカウントを選択します。
- [アカウントを設定] をクリックします。
gcloud CLI
- 使用可能な請求先アカウントを一覧表示するには、
gcloud billing accounts list
- 請求先アカウントを 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 コンソール
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 を有効にします。
正しい Cloud プロジェクトで API を有効にしていることを確認し、[次へ] をクリックします。
正しい API を有効にしていることを確認し、[有効にする] をクリックします。
gcloud CLI
必要に応じて、作成したプロジェクトを現在の Cloud プロジェクトに設定します。
gcloud config set project PROJECT_ID
PROJECT_ID は、作成した Cloud プロジェクトのプロジェクト ID に置き換えます。
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 アプリを外部に公開する前に、プレースホルダ情報を同意画面の実際の情報に置き換えます。
OAuth 同意画面を構成し、スコープを指定して、アプリを登録する
Google Cloud コンソールで、メニュー アイコン > [API とサービス] > [OAuth 同意画面] に移動します。
[ユーザーの種類] で [内部] を選択し、[作成] をクリックします。
[アプリ名] に「
AI knowledge assistant
」と入力します。[ユーザー サポートメール] で、自分のメールアドレスまたは適切な Google グループを選択します。
[デベロッパーの連絡先情報] にメールアドレスを入力します。
[Save and Continue] をクリックします。
[スコープを追加または削除] をクリックします。パネルが表示され、Cloud プロジェクトで有効にした各 API のスコープのリストが表示されます。
[スコープを手動で追加] に、次のスコープを貼り付けます。
https://www.googleapis.com/auth/chat.messages
[Add to Table] をクリックします。
[更新] をクリックします。
[Save and Continue] をクリックします。
アプリ登録の概要を確認し、[ダッシュボードに戻る] をクリックします。
OAuth クライアント ID を作成する
Google Cloud コンソールで、メニュー アイコン > [API とサービス] > [認証情報] に移動します。
[認証情報を作成] > [OAuth クライアント ID] をクリックします。
[アプリケーションの種類] > [ウェブ アプリケーション] をクリックします。
[名前] フィールドに、認証情報の名前を入力します。この名前は Google Cloud コンソールにのみ表示されます。
[承認済みのリダイレクト URI] の下の [URI を追加] をクリックします。
[URI 1] に次のように入力します。
https://REGION-PROJECT_ID.cloudfunctions.net/app/oauth2
次のように置き換えます。
- REGION: Cloud Functions の関数のリージョン(
us-central1
など)。後で 2 つの Cloud Functions の関数を作成するときに、リージョンをこの値に設定する必要があります。 - PROJECT_ID: 作成した Cloud プロジェクトのプロジェクト ID。
- REGION: Cloud Functions の関数のリージョン(
[作成] をクリックします。
[OAuth クライアントを作成しました] ウィンドウで [JSON をダウンロード] をクリックします。
ダウンロードしたファイルに
client_secrets.json
という名前を付けて保存します。後で 2 つの Cloud Functions を作成するとき、各デプロイにclient_secrets.json
ファイルを含めます。[OK] をクリックします。
Pub/Sub トピックを作成する
Pub/Sub トピックは Google Workspace Events API と連携して、メッセージなどの Chat スペースのイベントに登録し、Chat アプリにリアルタイムで通知します。
Pub/Sub トピックの作成方法は次のとおりです。
Google Cloud コンソール
Google Cloud コンソールで、メニュー アイコン > [Pub/Sub] に移動します。
[トピックを作成] をクリックします。
[トピック ID] に「
events-api
」と入力します。[デフォルトのサブスクリプションを追加する] の選択を解除します。
[暗号化] で、[Google が管理する暗号鍵] を選択します。
[作成] をクリックします。Pub/Sub トピックが表示されます。
この Pub/Sub トピックと Google Workspace Events API を連携させるには、Pub/Sub トピックに投稿する権限を Chat IAM ユーザーに付与します。
[events-api] パネルの [権限] で、[プリンシパルを追加] をクリックします。
[プリンシパルの追加] で、[新しいプリンシパル] に「
chat-api-push@system.gserviceaccount.com
」と入力します。[ロールの割り当て] の [ロールを選択] で、[Pub/Sub] > [Pub/Sub パブリッシャー] を選択します。
[保存] をクリックします。
gcloud CLI
トピック ID
events-api
の Pub/Sub トピックを作成します。gcloud pubsub topics create events-api
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 アプリのデータベースは、Firestore データモデルをご覧ください。
コレクションに編成された ドキュメントに基づく NoSQL データモデルを使用します。詳細については、次の図は、AI ナレッジ アシスタント Chat アプリのデータモデルの概要を示しています。
ルートには 2 つのコレクションが含まれます。
spaces
。各ドキュメントは、Chat 用アプリが追加された Chat スペースを表します。各メッセージは、messages
サブコレクション内のドキュメントで表されます。users
。各ドキュメントは、Chat スペースに Chat アプリを追加したユーザーを表します。
コレクション、ドキュメント、フィールドの定義を表示する
spaces
AI ナレッジ アシスタントの Chat アプリを含む Chat スペース。
フィールド | |
---|---|
Document ID | String 特定のスペースの一意の ID。Chat API でのスペースのリソース名の一部。 |
messages | Subcollection of Documents ( Chat スペースで送信されたメッセージ。Firebase の message の Document ID に対応します。 |
spaceName | String Chat API 内のスペースの一意の名前。Chat API のスペースのリソース名に対応します。 |
messages
Chat スペースで送信されたメッセージ。
フィールド | |
---|---|
Document ID | String 特定のメッセージの一意の ID。 |
name | String Chat API 内のメッセージの一意の名前。Chat API でのメッセージのリソース名に対応します。 |
text | String メッセージのテキスト本文。 |
time | String (Timestamp format) メッセージが作成された時刻。 |
users
AI ナレッジ アシスタントの Chat アプリを Chat スペースに追加したユーザー。
フィールド | |
---|---|
Document ID | String 特定ユーザーの一意の ID。 |
accessToken | String OAuth 2.0 ユーザー認証で付与されたアクセス トークンで、Google Workspace API の呼び出しに使用されます。 |
refreshToken | String OAuth 2.0 ユーザー認証中に付与された更新トークン。 |
Firestore データベースの作成方法は次のとおりです。
Google Cloud コンソール
Google Cloud コンソールで、メニュー > [Firestore] に移動します。
[データベースを作成] をクリックします。
[Firestore モードの選択] で [ネイティブ モード] をクリックします。
[続行] をクリックします。
データベースを構成します。
[データベースに名前を付ける] で、[データベース ID] は
(default)
のままにします。[ロケーション タイプ] で [リージョン] を選択します。
[リージョン] で、データベースのリージョン(
us-central1
など)を指定します。最適なパフォーマンスを得るには、Chat アプリの Cloud Functions と同じロケーションまたは近くにあるロケーションを選択します。
[データベースを作成] をクリックします。
gcloud CLI
ネイティブ モードで Firestore データベースを作成します。
gcloud firestore databases create \ --location=LOCATION \ --type=firestore-native
LOCATION は、Firestore リージョンの名前(
us-central1
など)に置き換えます。最適なパフォーマンスを得るには、Chat アプリの Cloud Functions と同じロケーションまたは近くにあるロケーションを選択してください。
Chat アプリを作成してデプロイする
Google Cloud プロジェクトを作成して構成したので、Chat 用アプリをビルドしてデプロイできます。このセクションでは、次のことを行います。
- 2 つの Cloud Functions の関数を作成してデプロイする。1 つは Chat のインタラクション イベントへの応答、もう 1 つは Pub/Sub イベントへの応答です。
- Google Chat API の構成ページで Chat 用アプリを作成してデプロイします。
Cloud Functions の関数を作成してデプロイする
このセクションでは、次の名前の Cloud Functions の関数を 2 つ作成してデプロイします。
app
: Chat から受信したイベントに HTTP リクエストとして応答する Chat アプリのコードをホストして実行します。eventsApp
: Pub/Sub からのメッセージなどの Chat スペース イベントを受信して処理します。
これらの Cloud Functions の関数から、AI ナレッジ アシスタントのチャットアプリのアプリケーション ロジックが構成されます。
必要に応じて、Cloud Functions を作成する前に、GitHub でホストされているサンプルコードをよく確認しておいてください。
app
を作成してデプロイする
Google Cloud コンソール
コードを GitHub から ZIP ファイルとしてダウンロードします。
ダウンロードした zip ファイルを展開します。
抽出されたフォルダには、Google Workspace サンプル リポジトリ全体が含まれています。
抽出したフォルダで、
google-chat-samples-main/node/ai-knowledge-assistant
ディレクトリに移動します。認証と認可用の OAuth クライアント ID 認証情報を作成したときにダウンロードした
client_secrets.json
ファイルをgoogle-chat-samples/node/ai-knowledge-assistant
ディレクトリに追加します。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/
Google Cloud コンソールで、メニュー アイコン > [Cloud Functions] に移動します。
Chat アプリの Google Cloud プロジェクトが選択されていることを確認します。
[
関数を作成] をクリックします。[関数の作成] ページで、関数を設定します。
- [環境] で [第 2 世代] を選択します。
- [関数名] に「
app
」と入力します。 - [リージョン] で、
us-central1
などのリージョンを選択します。このリージョンは、認証と認可用の OAuth クライアント ID 認証情報を作成したときに、承認済みのリダイレクト URI で設定したリージョンと一致する必要があります。 - [トリガーのタイプ] で、[HTTPS] を選択します。
- [認証] で、[未認証の呼び出しを許可] を選択します。
- [次へ] をクリックします。
[ランタイム] で、[Node.js 20] を選択します。
[エントリ ポイント] で、デフォルトのテキストを削除し、「
app
」と入力します。[ソースコード] で [ZIP アップロード] を選択します。
[転送先バケット] で、バケットを作成または選択します。
- [探す] をクリックします。
- バケットを選択します。
- [Select] をクリックします。
Google Cloud は ZIP ファイルをアップロードし、このバケットにコンポーネント ファイルを抽出します。次に、Cloud Functions はコンポーネント ファイルを Cloud Functions にコピーします。
ZIP ファイルで、GitHub からダウンロードした ZIP ファイルをアップロードし、解凍して再圧縮します。
- [探す] をクリックします。
- ZIP ファイルに移動して選択します。
- [開く] をクリックします。
[Deploy] をクリックします。
[Cloud Functions の詳細] ページが開き、関数が表示され、2 つの進行状況インジケーター(ビルドとサービス用のインジケーター)が表示されます。進行状況インジケーターが両方とも表示されなくなり、チェックマークに変わり、関数がデプロイされ準備完了になります。
サンプルコードを編集して定数を設定します。
- [Cloud Functions の関数の詳細] ページで、[編集] をクリックします。
- [次へ] をクリックします。
- [ソースコード] で [インライン エディタ] を選択します。
- インライン エディタで
env.js
ファイルを開いて編集します。- project の値を Cloud プロジェクト ID に設定します。
- location の値を、Cloud Functions のリージョン(
us-central1
など)に設定します。
[Deploy] をクリックします。
gcloud CLI
GitHub からコードのクローンを作成します。
git clone https://github.com/googleworkspace/google-chat-samples.git
この AI ナレッジ アシスタント チャットアプリのコードが含まれているディレクトリに切り替えます。
cd google-chat-samples/node/ai-knowledge-assistant
認証と認可用の OAuth クライアント ID 認証情報を作成したときにダウンロードした
client_secrets.json
ファイルをgoogle-chat-samples/node/ai-knowledge-assistant
ディレクトリに追加します。env.js
ファイルを編集して環境変数を設定します。- project の値を Cloud プロジェクト ID に設定します。
- location の値を Cloud Functions のリージョン(
us-central1
など)に設定します。
Cloud Functions の関数を Google Cloud にデプロイします。
gcloud functions deploy app \ --gen2 \ --region=REGION \ --runtime=nodejs20 \ --source=. \ --entry-point=app \ --trigger-http \ --allow-unauthenticated
REGION は、
env.js
ファイルに設定された値と一致する Cloud Functions のリージョンの値(us-central1
など)に置き換えます。
eventsApp
を作成してデプロイする
Google Cloud コンソール
Google Cloud コンソールで、メニュー アイコン > [Cloud Functions] に移動します。
Chat アプリの Google Cloud プロジェクトが選択されていることを確認します。
[
関数を作成] をクリックします。[関数の作成] ページで、関数を設定します。
- [環境] で [第 2 世代] を選択します。
- [関数名] に「
eventsApp
」と入力します。 - [リージョン] で、
us-central1
などのリージョンを選択します。このリージョンは、認証と認可用の OAuth クライアント ID 認証情報を作成したときに、承認済みのリダイレクト URI で設定したリージョンと一致する必要があります。 - [トリガーのタイプ] で、[Cloud Pub/Sub] を選択します。
- [Cloud Pub/Sub トピック] で、作成した Pub/Sub トピック名を選択します。形式は
projects/PROJECT/topics/events-api
です。ここで、PROJECT は Cloud プロジェクト ID です。 - 「
Service account(s) might not have enough permissions to deploy the function with the selected trigger.
」で始まるメッセージが表示された場合は、[Grant All] をクリックします。 - [次へ] をクリックします。
[ランタイム] で、[Node.js 20] を選択します。
[エントリ ポイント] で、デフォルトのテキストを削除し、「
eventsApp
」と入力します。[ソースコード] で、[Cloud Storage の ZIP] を選択します。
[Cloud Storage のロケーション] で [参照] をクリックします。
app
Cloud Functions の関数の作成時に zip ファイルをアップロードしたバケットを選択します。アップロードした ZIP ファイルをクリックします。
[Select] をクリックします。
[Deploy] をクリックします。
[Cloud Functions の詳細] ページが開き、関数に 3 つの進行状況インジケーター(ビルド、サービス、トリガー)が表示されます。3 つの進行状況インジケーターがすべて表示され、チェックマークに変わると、関数がデプロイされて準備が整います。
サンプルコードを編集して定数を設定します。
- [Cloud Functions の関数の詳細] ページで、[編集] をクリックします。
- [次へ] をクリックします。
- [ソースコード] で [インライン エディタ] を選択します。
- インライン エディタで
env.js
ファイルを開いて編集します。- project の値を Cloud プロジェクト ID に設定します。
- location の値を Cloud Functions のリージョン(
us-central1
など)に設定します。
[Deploy] をクリックします。
gcloud CLI
gcloud CLI で、まだ移動していない場合は、以前に GitHub からクローンを作成したこの AI ナレッジ アシスタント チャットアプリのコードを含むディレクトリに切り替えます。
cd google-chat-samples/node/ai-knowledge-assistant
認証と認可用の OAuth クライアント ID 認証情報を作成したときにダウンロードした
client_secrets.json
ファイルをgoogle-chat-samples/node/ai-knowledge-assistant
ディレクトリに追加します。env.js
ファイルを編集して環境変数を設定します。- project の値を Cloud プロジェクト ID に設定します。
- location の値を Cloud Functions のリージョン(
us-central1
など)に設定します。
Cloud Functions の関数を Google Cloud にデプロイします。
gcloud functions deploy eventsApp \ --gen2 \ --region=REGION \ --runtime=nodejs20 \ --source=. \ --entry-point=eventsApp \ --trigger-topic=events-api
REGION は、
env.js
ファイルに設定された値と一致する Cloud Functions のリージョンの値(us-central1
など)に置き換えます。
Cloud Functions の関数 app
のトリガー URL をコピーします
Google Cloud コンソールで Chat 用アプリを構成するときに、次のセクションに app
Cloud Functions の関数のトリガー URL を貼り付けます。
Google Cloud コンソール
Google Cloud コンソールで、メニュー アイコン > [Cloud Functions] に移動します。
Cloud Functions のリストの [名前] 列で、[
app
] をクリックします。[トリガー] をクリックします。
URL をコピーします。
gcloud CLI
Cloud Functions の
app
関数を記述します。gcloud functions describe app
url
プロパティをコピーします。
Google Cloud コンソールで Chat 用アプリを構成する
このセクションでは、Google Cloud コンソールで Chat API を構成し、Chat アプリに関する情報(Chat アプリの名前や、チャット操作イベントの送信先である Chat アプリの Cloud Functions の関数のトリガー URL など)を構成する方法について説明します。
Google Cloud コンソールで、メニュー アイコン > [その他のプロダクト] > [Google Workspace] > [プロダクト ライブラリ] > [Google Chat API] > [管理] > [構成] をクリックします。
[アプリ名] に「
AI knowledge assistant
」と入力します。[アバターの URL] に「
https://fonts.gstatic.com/s/i/short-term/release/googlesymbols/live_help/default/24px.svg
」と入力します。[説明] に「
Answers questions with AI
」と入力します。[インタラクティブ機能を有効にする] をクリックしてオンにします。
[機能] で [スペースとグループの会話に参加する] を選択します。
[接続設定] で [アプリの URL] を選択します。
[アプリの URL] に、
app
Cloud Functions の関数のトリガー URL をhttps://
REGION-
PROJECT_ID.cloudfunctions.net/app
の形式で貼り付けます。REGION は Cloud Functions の関数のリージョンです(us-central1
など)。PROJECT_ID は作成した Cloud プロジェクトのプロジェクト ID です。[公開設定] で [Workspace ドメイン内の特定のユーザーとグループにこの Chat 用アプリの利用を許可する] を選択し、メールアドレスを入力します。
必要に応じて、[ログ] で [エラーを Logging にロギング] を選択します。
[保存] をクリックします。構成が保存されたことを示すメッセージが表示されます。これは、Chat 用アプリのテストの準備が整ったことを意味します。
Chat アプリをテストする
AI ナレッジ アシスタントの Chat アプリが回答できる質問を行い、メッセージを使用して Chat スペースで AI ナレッジ アシスタントの Chat アプリをテストします。
AI ナレッジ アシスタントのチャットアプリをテストする方法をいくつかご紹介します。
- AI ナレッジ アシスタントの Chat アプリを既存の Chat スペースに追加し、そのスペースに関連する質問をします。
- Chat スペースを作成し、データソースとして使用するメッセージをいくつか投稿します。
Answer 20 common onboarding questions employees ask their teams.
のようなプロンプトを使用して、Gemini からメッセージを取得できます。または、Chat での開発の概要ガイドのいくつかの段落を貼り付けて、それについて質問することもできます。
このチュートリアルでは、Chat スペースを作成して、Chat での開発の概要ガイドにあるいくつかの段落を貼り付けます。
Google Chat を開きます。
Chat スペースを作成するには:
> [スペースを作成] をクリックします。
[新しいチャット][スペース名] に「
Testing AI knowledge assistant app
」と入力します。[このスペースの用途] で [コラボレーション] を選択します。
[アクセス設定] で、スペースにアクセスできるユーザーを選択します。
[作成] をクリックします。
データソースとして使用するメッセージを追加します。
ウェブブラウザで、Chat による開発の概要ガイドをご覧ください。
ガイドの内容をコピーして、作成した Chat スペースに貼り付けます。
AI ナレッジ アシスタントの Chat アプリを追加するには:
メッセージの入力バーに「
@AI knowledge assistant
」と入力し、表示された候補メニューで AI ナレッジ アシスタントの Chat アプリを選択し、enter
キーを押します。AI ナレッジ アシスタントの Chat アプリをスペースに追加するかどうかを尋ねるメッセージが表示されます。[スペースに追加] をクリックします。
Chat アプリをスペースに初めて追加する場合は、Chat アプリの認証と認可を構成する必要があります。
- [構成] をクリックします。
- 新しいブラウザ ウィンドウまたはタブが開き、Google アカウントの選択を求められます。テストに使用するアカウントを選択します。
- AI ナレッジ アシスタントのチャットアプリがリクエストする権限を確認します。付与するには、[許可] をクリックします。
- 「
You may close this page now.
」というメッセージが表示されます。ブラウザのウィンドウまたはタブを閉じて Chat スペースに戻ります。
質問する
メッセージの入力バーに「
What are Google Chat apps?
」のような質問を入力します。AI ナレッジ アシスタントの Chat アプリが回答します。
回答が正確でない場合や、十分でない場合は、AI の会話履歴の改善に協力するため、[
ヘルプ] をクリックします。AI ナレッジアシスタントのチャットアプリが スペースの管理者に言及し 質問に答えるよう求めます次回は、AI ナレッジ アシスタントの Chat アプリが答えを出します。
考慮事項、代替アーキテクチャの選択、次のステップ
このセクションでは AI ナレッジアシスタントの チャットアプリのその他の構築方法について説明します
Firestore、Cloud Storage、または Chat API でのリスト メッセージの呼び出し
このチュートリアルでは、メッセージなどの Chat スペースのデータを Firestore データベースに保存することをおすすめします。Chat アプリが質問に回答するたびに、Chat API を使用して Message
リソースの list
メソッドを呼び出す場合よりもパフォーマンスが向上するためです。さらに、list messages
を繰り返し呼び出すと、Chat 用アプリが API の割り当て上限に達する可能性があります。
ただし、Chat スペースの会話履歴が長くなりすぎると、Firestore の使用コストが高くなる可能性があります。
Firestore の代わりに Cloud Storage を使用することもできます。AI ナレッジ アシスタントの Chat アプリがアクティブなスペースごとに独自のオブジェクトを取得します。各オブジェクトは、スペース内のすべてのメッセージを含むテキスト ファイルです。このアプローチの利点は、Gemini を使用してテキスト ファイルの全内容を Vertex AI に一度にフィードできることです。ただし欠点は、Cloud Storage のオブジェクトには追加できず、置き換えるだけであるため、会話履歴の更新に多くの労力が必要になることです。メッセージ履歴を定期的に更新する場合には適していませんが、メッセージ履歴を定期的に(たとえば週に 1 回)バッチ更新する場合は、この方法が適しています。
トラブルシューティング
Google Chat アプリまたはカードがエラーを返すと、Chat インターフェースに「エラーが発生しました」というメッセージが表示されます。または「リクエストを処理できません」が表示されます。Chat UI にエラー メッセージが表示されなくても、Chat アプリやカードが予期しない結果(カード メッセージが表示されないなど)を生成することがあります。
Chat UI にエラー メッセージが表示されない場合がありますが、Chat 用アプリのエラーロギングが有効になっている場合は、説明的なエラー メッセージとログデータを使用してエラーを修正できます。エラーの表示、デバッグ、修正については、Google Chat のエラーのトラブルシューティングと修正をご覧ください。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、Cloud プロジェクトを削除することをおすすめします。
- Google Cloud コンソールで、[リソースの管理] ページに移動します。メニュー アイコン > [IAM と管理] > [リソースの管理] をクリックします。
- プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
- ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。