Google製LLM「PaLM2」と対話できるLINE Botを作ってみた
はじめに
この記事ではCloudRunとVertexAIで文章要約のLINE botを作成するハンズオンを書いています。
実行環境はCloudShellです。
具体的には以下の環境を想定しています。
- docker --version
- Docker version 24.0.6, build ed223bc
- gcloud --version
- Google Cloud SDK 447.0.0
- alpha 2023.09.15
- app-engine-go 1.9.75
- app-engine-java 2.0.19
- app-engine-python 1.9.105
- app-engine-python-extras 1.9.101
- beta 2023.09.15
- bigtable
- bq 2.0.98
- bundled-python3-unix 3.9.16
- cbt 0.16.1
- cloud-datastore-emulator 2.3.1
- cloud-run-proxy 0.4.0
- core 2023.09.15
- gcloud-crc32c 1.0.0
- gke-gcloud-auth-plugin 0.5.6
- gsutil 5.25
- kpt 1.0.0-beta.44
- local-extract 1.5.9
- minikube 1.31.2
- nomos 1.16.0-rc.2
- package-go-module 0.4.0
- pubsub-emulator 0.8.6
- skaffold 2.7.0
- git
- git version 2.30.2
※少し内容のレベルを上げて続編を書きました。最近読んだ本を教えてくれるLINE botをGemini Proを使って作成してみた
LINE botの設定
プロバイダの設定
Create
をクリックします。
名前はGenAI
とします。
チャンネルの設定
Create a MessagingAPI Channelをクリックします。
設定項目がいくつかあります。以下のように設定してください。
項目 | 入力するもの |
---|---|
Channel type | Messaging API |
Provider | GenAI |
Company or owner's country or region | Japan |
Channel name | PaLM2くん |
Channel description | VertexAIとCloudRunでLINE botを作成してみた |
Category | 個人 |
Subcategory | 個人(その他) |
Email address | デフォルト |
チェックボックスが2つありますのでチェックを入れます。
I have read and agree to the LINE Official Account Terms of Use
I have read and agree to the LINE Official Account API Terms of Use
Create
をクリックします。確認画面が表示されたらOKをクリックします。
Messaging APIのシークレットキーをコピー
チャネル基本設定にあるチャネルシークレット
をコピーします。
次にMessaging API設定チャネルアクセストークン
を発行してコピーします。
デフォルトの設定の無効化とWebhookの設定
応答メッセージとあいさつメッセージをそれぞれ無効にするために編集をクリックします。
Webhookは有効にします。
変更前
変更後
Google Cloudの操作
プロジェクトを作成する
Google Cloud Consoleにログインします。
画面左上の逆三角形からプロジェクトを作成します。逆三角形をクリックします。
新しいプロジェクトをクリックします。
プロジェクト名はline-handson-test、場所は組織なし
に設定します。
※ご利用の環境によって設定する場所
が変わってくると思いますが、今回は個人でアカウントを作成された場合を想定しています。
最後に作成ボタンをクリックします。
CloudShellを開く
作成したプロジェクトに切り替えたあと、画面右上にあるボタンからCloudShellを開きます。
※CloudShellのボタン
APIの有効化
以下のサービスでAPIを有効化します。
- ArtifactRegistry
- VertexAI
gcloud services enable aiplatform.googleapis.com
gcloud services enable artifactregistry.googleapis.com
※参考:VertexAIをコンソール画面で有効にする場合
環境変数名を追加
プロジェクト名を環境変数に代入してシェル変数を作成しておきます。
export gcp_project="{プロジェクト名}"
リポジトリのクローン
リポジトリをクローンします。
git clone https://github.com/ymd65536/cloudrun_linebot.git
config.pyの修正
ディレクトリを変更します。
cd cloudrun_linebot/src
config.py
をsrcフォルダ内に作成します。
echo "" > config.py
vi config.py
LINE botのチャネルアクセストークンとシークレットを修正します。
token = "アクセストークン"
secret = "シークレット"
イメージをビルドする
linebot-app
という名前でイメージをビルドします。
docker build -t linebot-app . --platform linux/amd64 --no-cache
イメージにタグをつける
ビルドしたイメージにタグをつけます。このタグはArtifactRegistryにあるイメージと同じタグである必要があります。
docker tag linebot-app:latest asia-northeast1-docker.pkg.dev/$gcp_project/linebot-sample/linebot-app:latest
※タグ付けされたイメージの確認方法
docker images
ArtifactRegistryでリポジトリを作成する
イメージをpushするためにArtifactRegistryにリポジトリを作成します。
gcloud artifacts repositories create linebot-sample --location=asia-northeast1 --repository-format=docker --project=$gcp_project
dockerの認証
ArtifactRegistryにイメージをpushする場合はdockerの認証を通す必要があります。
認証を通すため、以下のコマンドを実行します。
gcloud auth configure-docker
イメージのプッシュ
ArtifactRegistryにイメージをpushします。push先はasia-northeast1-docker.pkg.dev
です。
docker push asia-northeast1-docker.pkg.dev/$gcp_project/linebot-sample/linebot-app:latest
デプロイ
イメージのpushが完了しましたら、以下のコマンドを実行してCloudRunにコンテナをデプロイします。
gcloud run deploy --image asia-northeast1-docker.pkg.dev/$gcp_project/linebot-sample/linebot-app:latest --region asia-northeast1 --platform managed
デプロイが完了すると独自のエンドポイントURLが生成されます。
実行結果
$ gcloud run deploy --image asia-northeast1-docker.pkg.dev/$gcp_project/linebot-sample/linebot-app:latest --region asia-northeast1 --platform managed
Service name (linebot-app):
Deploying container to Cloud Run service [linebot-app] in project [****] region [asia-northeast1]
OK Deploying... Done.
OK Creating Revision...
OK Routing traffic...
Done.
Service [linebot-app] revision [linebot-app-00001-wv7] has been deployed and is serving 100 percent of traffic.
Service URL: https://*****.a.run.app
Webhook URLの設定
Messaging API設定にあるWebhook URLを設定します。
編集をクリックします。
エンドポイントの最後に/callback
と付けたものを入力し、更新をクリックします。
Webhookを有効にする
LINE botからWebhookを利用できるようにWebhookを有効にします。
変更前
変更後
疎通確認
検証をクリックします。
以下のように成功と表示されていれば、問題ありません。
動作確認
エンドポイントURLを開く
生成された独自のエンドポイントURLをブラウザで開きます。するとVertexAIからの応答が返ってきます。
LINE botにメッセージを送信して動作確認
QRコードを読み取ってLINE botを友達追加します。
どんなメッセージでも良いので送信してみましょう。
Tips
LINE botのシークレット情報について
今回はconfig.py
に書き込んでイメージの中に保存していますが、実際にはsecret managerを活用します。
Discussion