
この記事はFIXER Advent Calendar 2023( FIXER Advent Calendar 2023 - Adventar ) 12月2日の記事です。
こんにちは、FIXERの村上です!
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(※) |
AWS SDK for Python (Boto3) | 1.33.4 |
LangChain | 0.0.343 |
Ngrok | 3.4.0 |
Boto3やLangChainなどの環境設定は Amazon Titan基盤モデルのTitan Text G1 Lite/Express を試してみた を参考にください。
Slackとのチャレンジ認証やコールバック処理などは、外部公開されたエンドポイントが必要になるため、本ブログでは Ngrok を使用します。
【Ngrok】Install ngrok
※ Pythonのバージョンは3.10.Xにしてください。他のバージョンでは動作しないことがあります。
1.Amazon Bedrock を利用するための事前設定
2023年12月1日時点では、Claude v2.1 は 米国西部 (オレゴン)リージョンのみ対応しています。
1-1. Claude の利用申請
リージョンは、オレゴン(us-west-2)を選択します。
Bedrockコンソール画面にアクセスして、「Claude」と「Claude Instant」の利用申請を行います。
1-2. Bedrock API の操作設定
IAMポリシーの発行や資格情報ファイルの設定は、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
の順に選択していきます。YAMLには、下記の構成情報を定義したマニフェストをコピペします。
XMLdisplay_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://<UUID>.ngrok.io をコピーします。

次に Event Subscriptions > Request URL にペーストします。末尾に /slack/events を付けてください。

4.動作確認
Slackチャンネルに @Bedrock_Claude を招待してください。
招待後、チャットしてみましょう!

■ 最後に
最後まで読んでいただき、ありがとうございます!
re:Invent 2023 の 3日間に渡る Keynote では、生成AI関連の新規サービスや機能追加が発表されているので、このチャットボットもどんどん進化できますね。
次回は、少しソースコードを改修してAWS Lambdaにデプロイし、動かしてみます!