💬

【ローカル開発編】Amazon Bedrockを活用したSlackチャットボットの作り方を紹介 ー その1

2023/12/01に公開

AWS re:Invent 2023、Swami氏のKeynote(基調講演)で、Anthropic社の「Claude v2.1(クロード)」が Amazon Bedrock上で利用可能になることが発表されました!

Claude v2.1は最大の200Kコンテキストをインプットすることができ、Claude v2.0 モデルと比べてハルシネーション事故が2倍ほど減少したということで11月下旬にSNSで話題にあがっていました。
【Anthropic】Introducing Claude 2.1

また、Amazon Bedrock Edition の中で日本語に対応しているのは Claude だけです。せっかく、日本語に対応している基盤モデルということで、最新AIチャットボットとしてSlack上で活躍してもらうために作成手順を紹介していきます!

既定のテンプレートをベースに実装してみたところ、このような回答を返してくれるチャットボットになりました。人間味のある表現が得意なようです。

本ブログではいくつかのパートに分けてシリーズ、投稿していきます。
今回はAWS Lambdaなどのコンピューティングサービスは使用せず、手元のPCから直接Bedrock APIを実行することを前提にしています。
イメージとしては、下記のとおりです。

■ 環境設定(カッコ内は私のバージョン情報の表記)

基本は、最新バージョンを利用ください。

  • AWS CLI(2.13.32)
  • Python(3.10.0) ※次回、Lambdaで動かすため 3.10に合わせてください!
  • boto3(1.33.4)
  • langchain(0.0.343)
  • ngrok(3.4.0)

boto3やlangchainなどの環境設定は Amazon Titan基盤モデルのTitan Text G1 Lite/Express を試してみた を参考にください。

Slackとのチャレンジ認証は、外部公開されたエンドポイントが必要になるため、今回はngrokを使用します。
https://ngrok.com/download

1. Amazon Bedrock を利用するための事前設定

1-1. Claude の利用申請を行う

米国西部 (オレゴン) us-west-2 リージョンを選択し、「Claude」と「Claude Instant」の利用申請を行います。

1-2. Bedrock API の操作するための設定を行う

Amazon Titan基盤モデルのTitan Text G1 Lite/Express を試してみた の『1.Bedrock API を操作するための準備』を参考にください。

2. Slack Appの作成と設定

2-1. Slack Appの作成

https://api.slack.com/apps にアクセスして、「Create New App」をクリックします。

Create an app → From an app manifest
Pick a workspace to develop your app → <作成したいSlackワークスペース>
Enter app manifest below → YAML
を選択していき、下記の構成情報を定義したマニフェストをコピペします。

display_information:
  name: BedrockAPI_Claude
  description: "null"
  background_color: "#000000"
features:
  bot_user:
    display_name: BedrockAPI_Claude
    always_online: false
oauth_config:
  scopes:
    bot:
      - app_mentions:read
      - channels:history
      - channels:join
      - chat:write
      - im:history
settings:
  event_subscriptions:
    request_url: https://null
    bot_events:
      - app_mention
      - message.channels
  org_deploy_enabled: false
  socket_mode_enabled: false
  token_rotation_enabled: false

作成します。
Install to Workspace をクリックして、Slack ワークスペースにアクセスする権限をリクエスト許可を行います。

許可します。

2-2. Signing Secret と Bot User OAuth Tokenの取得

Signing Secret をメモする。

  • Basic Information > App Credentials の Signing Secret から確認できます。

Bot User OAuth Token をメモする。

  • OAuth & Permissions > OAuth Tokens for Your Workspace の Bot User OAuth Token から確認できます。

3. Bedrock APIサーバの初期設定と起動

今回は、こちらのソースコードを使ってサーバを起動します。

> git clone https://github.com/murakami-koki/AWS.SlackBot.Bedrock.git

> cd AWS.SlackBot.Bedrock/part1

3-1. 環境変数の設定

「2-2. Signing Secret と Bot User OAuth Tokenの取得」 にてメモした資格情報を環境変数に追加します。
下記のコマンドを実行します。

> export SLACK_SIGNING_SECRET=<your-signing-secret>
> export SLACK_BOT_TOKEN=xoxb-<your-bot-token>

3-2. ローカルホストの起動

> python3 app.py

3-3. 外部公開サーバの起動

下記のコマンドを別タブなどを開いて実行します。

> ngrok http 3000

オレンジ枠の https://<ランダムID>.ngrok.io をコピーします。

Event Subscriptions > Request URL にペーストします。

4. 動作確認

Slackチャンネルに @BedrockAPI_Claude を招待してください。

招待後、チャットしてみましょう!

Discussion