【Google Cloud】Vertex AIでSlack生成AIチャットボットを実装してみた
2024.6.19
はじめに
こんにちは、フクナガです。以前、こういった記事を執筆しました。
・ 【Slack APIタイムアウト対策】Cloud FunctionsでSlackへの返答とCloud Pub/Subへの追加を実装
・ 【やってみた】Gemini 1.5 ProをColab EnterpriseでVertex AI経由で呼び出してみた
SlackからCloud Functionsを利用する方法、Vertex AIの呼び出し方を学んだ、ということは…?
次の記事はもうわかりますよね?
そう、Slackチャットボットの実装です!!
なにかと話題の言語モデル「Gemini」を呼び出すSlackチャットボットを実装していきましょう!
構築するアーキテクチャ
今回は、実装後に皆さんが様々なアレンジを加えやすいように必要最低限の実装にとどめます。
完成イメージ
Slackでこんなやり取りができるチャットボットを構築していきます!
実装
1. Cloud FunctionsでSlackチャットボットを作成する
こちらの記事の実装部分を参考にしてください。
Slackでメッセージを送って、返ってくる状態になっていたら次の手順に進めます。
2. Cloud FuntionsコードからVertex AIを呼び出すようにコードを変更する
(1) Cloud Functionsコンソールで「サブスクライバー」用の関数を開く
私は、「fukunaga-slack-subscriber」という名前でサブスクライバー用関数を作成していましたので、そちらを使っていきます。
(2) Cloud Functionsコンソールで「ソース」タブを選択し、「編集」を押下する
(3) Cloud Functionsのmain.py、requirements.txtを編集する
下記の記事を参考に、コードを実装しました!!
- requirements.txt
functions-framework==3.* google-cloud-pubsub requests==2.25.1 google-cloud-aiplatform
-
main.py
import base64 import functions_framework import requests import json import vertexai from vertexai.generative_models import GenerativeModel, Part PROJECT_ID = "プロジェクトIDを入力" REGION = "リージョンを入力" # Triggered from a message on a Cloud Pub/Sub topic. @functions_framework.cloud_event def hello_pubsub(cloud_event): vertexai.init(project=PROJECT_ID, location=REGION) # モデルを読み込み model = GenerativeModel('gemini-1.5-pro-preview-0409') WEB_HOOK_URL = "SlackのWebhook URLを入力" # Slackから入力された文字列をプロンプトとして変数に格納 prompt = base64.b64decode(cloud_event.data["message"]["data"]).decode() # 生成AIモデルを呼び出し、プロンプトを入力する response = model.generate_content(prompt) # Slackに元の質問と生成AIからの回答を送信する requests.post(WEB_HOOK_URL, data=json.dumps({ #メッセージ "text" : "元の質問は:" + prompt + "\n" + "回答:" + "\n" + response.text, })) return question
(4) Cloud Functionsコンソールの「保存して再デプロイ」を押下する
しばらく経つとデプロイが完了します。
試してみた
実際に、Slackから生成AIに対し、質問を投げてみます!
実行に失敗してしまいました!
エラーメッセージを確認すると、メモリ不足という内容が出力されていました。
Cloud Functionsのランタイムから「割り当てられるメモリ」と「CPU」を変更します。
「ランタイム、ビルド、接続、セキュリティの設定」から、メモリなどの設定を変更可能です。
変更し、デプロイが完了後もう一度試してみます。
無事に回答が返ってきました!!
まとめ
Geminiを呼び出すSlackチャットボットをCloud FunctionsとVertex AIを用いて実装してみました。
お気づきの方がいらっしゃるかもしれませんが、実は今の状態だと完成度60%です。
そう、生成AI最大の魅力である「会話を続けること」が今の状態だとできません。
気軽にSlackチャットボットが実装できることを今回の記事でお伝え出来たと思いますので、次回の記事で実用的なチャットボット実装についてご紹介していこうと思います!!
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitterインフラエンジニア歴5年のフクナガです。2024 Japan AWS Top Engineers / Google Cloud Partner Top Engineer 2025 に選出されました! 生成 AI 多めで発信していますが、CI/CDやIaCへの関心も高いです。休日はベースを弾いてます。
Recommends
こちらもおすすめ
-
Slack、Brobotなどで快適GAレポーティング!
2015.12.20
-
【Google Cloud】Cloud Runを触ってみた!
2024.6.26
-
Amazon Bedrockのウォーターマーク検出を試してみた!
2024.5.23
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28
AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16