【ローカル開発編】Amazon Bedrockを活用したSlackチャットボットの作り方を紹介 ー その1
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を使用します。
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