【初心者向け】Google Chat × Vertex AIで始めるLLMチャットボット開発入門


Google ChatとVertex AIを組み合わせて、簡単にLLMチャットボットを構築する方法を紹介します。
本記事を読むことで、GCPの各種サービスを活用したチャットボットの開発手順を理解し、実際に動作するデモを作成できるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397664/0e1f0522-d5a3-488a-a25a-06b7bfec6cfd.png)

# アーキテクチャ概要
[こちらの Google Workspace ドキュメント](https://developers.google.com/workspace/chat/tutorial-project-management?hl=ja#architecture)にあるアーキテクチャ図をそのまま参考にさせて頂きました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397664/c17c48c7-6a10-7cd7-c5c9-df9108b86abd.png)

# 環境構築手順

## API の有効化
事前に以下のAPIを有効化しておきます。
- Cloud Build API（Cloud Run 関数を使用するために必要）
- Cloud Run Admin API
- Firestore API
- Vertex AI API

## GCP サービスアカウント作成
- 以下のロールを付与した「vertexai-demo」サービスアカウント作成
  - Cloud Datastore ユーザー
  - Vertex AI ユーザー
![スクリーンショット 2024-05-26 111133.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397664/1043515b-31b4-4cf7-1c94-79004c74f672.png)

## Firestore データベースを作成
メニューの [Firestore] から [FIRESTORE データベースを作成] を選択します。

- [データベース ID] は 「(default)」 のまま
- [Standard Edition] を選択
- [構成オプション] は 「Firestore ネイティブ」 のまま
- [場所] は 「リージョン」 で 「asia-northeast1」 を指定

![スクリーンショット_2025-05-05 join2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397664/e5ede29e-20ab-4688-9d2b-53f84fc31215.png)

:::note info
Firestore には、ネイティブモードとDatastoreモードの2つの動作モードがあります。
Datastore モードは、古いGoogle Datastoreと互換性を保つためのモードであり、Firestore API は使用できません
:::


## Cloud Run 関数を作成してデプロイ

- メニューから [Cloud Run Functions] を選択します
- [こちらの GitHub](https://codeload.github.com/t-oyama772/google-chat-vertexai-demo/zip/refs/heads/main) からコードを zip ファイルとしてダウンロードします
- ダウンロードした ZIP ファイルを展開します
- Google Cloud コンソールで、[Cloud Run functions] ページに移動します
- [関数を作成] をクリックします
  - [インライン エディタで関数を作成する] を選択します
  - [サービスの名前] に[vertexai-chat-demo] と入力します
  - [リージョン] で [asia-northeast1] を選択します
  - [ランタイム] で [Python 3.12] を選択します
  - [認証] で、[Allow unauthenticated invocations] （未認証の呼び出しを許可） を選択します
  - [セキュリティ] で先述で作成したサービスアカウント（vertexai-demo）を設定します
  - [作成] をクリックし、Cloud Run がサービスを作成するのを待ちます。コンソールの [ソース] タブにリダイレクトされ、関数のソースコードが表示されます
  - [エントリ ポイント] で、 [hello_chat] と入力します
  - main.py と requirements.txt をダウンロードしたコードに差し替えます
  - [保存して再デプロイ] をクリックします
  - デプロイが完了すると、「URL」というテキストの横にコンテナの URL が表示されます。[クリップボードにコピー] をクリックして URL をコピーします。これは、次のセクションで Chat アプリを構成するときに必要になります

## Google Chat API 設定

### Google Chat API の有効化

- メニューから [APIとサービス] を選択します
- 画面上部にある [APIとサービスを有効にする] をクリックします
- 検索窓に [google chat] と入力し、[Google Chat API] を選択します
- [有効にする] をクリックします

![スクリーンショット 2024-05-26 104717.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397664/02305ea5-efd0-e27e-f751-4dd2bb3c9c83.png)

- [Google Chat API] > [構成] をクリックします
- [アプリ名] を入力します
- [アバターの URL] に [https://developers.google.com/chat/images/quickstart-app-avatar.png] を入力します
- [説明] を入力します
- [インタラクティブ機能を有効にする] をオンにします
- [機能] で、[1:1 のメッセージを受信する] と [スペースとグループの会話に参加する] を選択します
- [接続設定] で [HTTP エンドポイント URL] を選択します
- [HTTP エンドポイント URL] に、Cloud Run 関数のデプロイからコピーしたトリガー URL を貼り付けます
- [公開設定] で [このチャットアプリを ・・・ 使用できるようにします] を選択し、Google Chat を使用するメンバーのメールアドレスを入力します
- [ログ] で [Logging にエラーをログに記録] を選択します
- [保存] をクリックします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397664/2dddc35c-acf6-4142-a3e3-6b3227d8b618.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397664/94d43bf8-7860-45f6-82f7-702d9818ce56.png)

![スクリーンショット 2025-05-26 23.37.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397664/be11c4c8-dd62-469a-a59d-af90f089fbac.png)

![スクリーンショット 2025-05-26 23.41.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397664/17d30b0b-98ca-4971-a028-9aa1d1c1c8e1.png)


# デモの実行
## チャットボットの準備
- Google Workspace アカウントを使用して Google Chat を開きます
- [新しいチャット] をクリックします。
- [1 人以上を追加] フィールドに、Chat アプリの名前を入力します。
- 検索結果から Chat アプリを選択するとダイレクト メッセージが開きます。
![スクリーンショット 2025-05-27 chat.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397664/71ec13f3-e387-4f0f-84f4-17c66a7dbe12.png)

<br>

- [モデルを選択] （もしくは [はじめから]）と入力して enter を押します
- モデルの選択ボタンが出てくるので、使用したいモデルのボタンをクリックします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397664/45ba5686-f9e1-456a-8722-d01c6c32e4a2.png)

## プロンプトの入力

- プロンプトを入力して enter を押すと回答が返ってきます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397664/0e1f0522-d5a3-488a-a25a-06b7bfec6cfd.png)

参考）
https://developers.google.com/workspace/chat/tutorial-project-management?hl=ja
https://developers.google.com/workspace/chat/quickstart/apps-script-app?hl=ja
https://blog.g-gen.co.jp/entry/vertex-ai-search-with-gemini

# まとめと今後の展望
本記事では、Google Chat アプリと Cloud Functions を連携させて、Vertex AI の LLM を活用した簡易チャットボットを構築する手順を紹介しました。
Google Workspace アカウントを活用することで、社内利用を想定したプロトタイプを素早く構築できる点も、本構成の大きな利点です。

今後は、以下のような拡張・応用も考えられます。
- セキュリティ強化: ユーザーごとの認証情報を活用し、発言者のロールによって応答を制御する。
- 応答精度の向上: Vertex AI の出力に対してルールベースの後処理や文脈保持の工夫を加える。
- Google Workspace 連携: Gmail や Google Calendar API と連携させ、業務効率化チャットボットとして発展させる。
- ログ保存と分析: Firestore や BigQuery を使って会話ログを蓄積し、UX改善やFAQ自動抽出に活用する。

PoC段階ではシンプルな構成から始め、徐々にスケーラブルなマイクロサービスアーキテクチャへの発展も可能です。