SAM で Bedrock を実行する LINE BOT テンプレートを作成してみた

2024.05.06

こんにちは、森田です。

みなさん、Amazon Bedrock使っていますか?

Amazon Bedrockでは、複数の基盤モデルを利用することができますが、それを LINE 上できたら便利だと思いましたので SAM を使って LINE BOT を作っていきます。

構成

今回は、シンプルに構成したかっため、 API Gatewayを利用していません。

LINE上で利用する基盤モデルの切り替えができるようにユーザ情報をDynamoDBテーブルへ保存するようにしています。

作成したテンプレート

作成手順

【LINE側】 トークンの取得

LINE Developers にアクセスを行い、新規チャンネルの作成を行います。

チャンネル作成後、チャネルシークレットとチャネルアクセストークンを取得してメモしておきます。

【LINE側】 応答メッセージとあいさつメッセージの無効化

以下のように応答メッセージとあいさつメッセージの無効化を行います。

こちらを実施しておかないと、デフォルトで設定されているメッセージも一緒に返ってきてしまいます。

テンプレートの準備

上記のテンプレートを手元にクローンします。

git clone https://github.com/cH6noota/bedrock-line-bot

クローン後、template.yml内にメモしておいたチャネルシークレットとチャネルアクセストークンを貼り付けます。

template.yaml

Globals:
  Function:
    Timeout: 30
    Tracing: Active
    # You can add LoggingConfig parameters such as the Logformat, Log Group, and SystemLogLevel or ApplicationLogLevel. Learn more here https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html#sam-function-loggingconfig.
    LoggingConfig:
      LogFormat: JSON
    Environment:
      Variables:
        ACCESS_TOKEN: メモしたチャネルアクセストークン
        CHANNEL_SECRET: メモしたチャネルシークレット

貼り付け後、以下コマンドにてデプロイを行います。

$ sam build && sam dploy

動作確認

友達追加時

以下のように利用できる基盤モデルがクイックリプライとして表示されます。

基盤モデル選択

クイックリプライを選択すると、ユーザ情報に利用する基盤モデルが保存されます。

メッセージの送信

あとは、ユーザから以下のようにメッセージを送信すると、設定したモデルを利用して回答が行われます。

まとめ

シンプルな LINE BOT をSAMを利用して構築してみました。

ここから、さらにカスタマイズしていくことで自分にとって使いやすいBOTを実現できるので、近いうちにまた試してみたいと思います。