COLUMN
Slack×Amazon Bedrock Slack上にチャットbotを作ってみた
こんにちは、田口です。
Amazon Bedrockは2024年9月のアップデートでAWS Chatbotと連携され、簡単にコミュニケーションツールと連携できるようになりました。本コラムではこの機能を利用してSlackとの連携を試してみます。
1. Amazon Bedrockとは
Amazon Bedrockとは大手AI企業が提供する基盤モデルやAmazonが提供する基盤モデルをAPIを通じて利用可能にするフルマネージドなサービスです。
Amazonが提供するAmazon Titanをはじめ、AnthropicのClaude3シリーズなど様々な基盤モデルを利用できるため、ユースケースにあわせて最適なモデルを選択することができます。
その他Amazon Bedrockで出来ることや料金などの詳細は以下コラムで触れています。気になる方はぜひご覧ください。
2. AWS ChatbotとAmazon Bedrockの連携
Amazon Bedrockですが従来はSlackと連携させるとなった場合、Slack APIを用いてAmazon API GatewayとAWS Lambdaを経由してAmazon Bedrockと連携させていました。
Deploy a Slack gateway for Amazon Bedrock
しかし2024年9月にAWS ChatbotとAmazon Bedrockエージェントが連携され、上記リソースを構築しなくとも簡単にSlackやMicrosoft Teamsと連携できるようになりました。
2-1. AWS Chatbotとは
AWS ChatbotはMicrosoft Teams、SlackやAmazon Chimeと簡単に連携できるようにし、Slack等を介してAWSのリソースのアラート通知やCLIによる操作が可能となるサービスです。
2-2. Bedrockエージェントとは
Amazon Bedrockエージェントとはエージェントの設定と実行に役立つ以下の2つの主要なAPI操作セットで構成されています。
- エージェントとその関連リソースを作成、構成、管理するためのビルド時のAPI操作
- ユーザー入力でエージェントを呼び出し、タスクを実行するためのオーケストレーションを開始するためのランタイムAPI操作
また、エージェントを利用するには以下のコンポーネントの構成が最低でも必要となります。
-
エージェントリソースロール
- エージェントでAPI操作を呼び出す権限を持つサービスロール
-
基盤モデル
- エージェントがオーケストレーションを実行するときに呼び出す基盤モデル
-
エージェント向けの指示
- システムプロンプト
- エージェントがどのような役割でユーザーとどのように対話すべきかを記述する
なお、Bedrockエージェントは使用できないリージョンもあるため、あらかじめ以下をご確認ください。
3. チャットボットを作ってみる
3-1. Bedrockエージェントを作成する
まずはBedrockエージェントを作成していきます。
Amazon Bedrockの画面へ移動し、「エージェント」を選択し、右上にある「エージェントを作成」をクリックします。
エージェント名はデフォルトでランダムな文字列を含む名前が入力されています。変更したい場合は任意の名前に変更し、作成を押します。
するとエージェントビルダーが立ち上がります。詳細を見ていきます。
「エージェントの説明」はオプションのため、今回は何も入力せず進みます。
「エージェントリソースロール」はBedrockエージェントが基盤モデルへアクセスするために必要なロールになります。新しいサービスロールを作成してそのまま利用します。
次に使用する基盤モデルを選択します。今回は日本語に対応しているClaude 3 Haikuを選択しました。
モデルによっては利用するために申請を出さないといけない場合があります。利用できないモデルはモデル名がグレーアウトされており、画像のように「アクセスがないモデル」としてまとめられています。
またBedrockエージェントでサポートされているすべてのモデルを表示するには左上の「Bedrock Agents optimized」のチェックを外すことで確認できます。
グレーアウトされているモデルを使用したい場合は、「アクセスをリクエスト」のリンクをクリックして利用したいモデルのアクセス権を要求する必要があります。
リクエストをすると以下のような画面に遷移するため、「モデルアクセスを変更」から有効化したいモデルを選択して申請を行います。
次に「エージェント向けの指示」を入力します。この項目はシステムプロンプトとなるので、事前に明確な役割や目標について入力します。
今回はAnthropicのプロンプトライブラリ内のプロンプトを参考に以下としました。
Your task is to explore a science fiction scenario and discuss the potential challenges and considerations that may arise. Briefly describe the scenario, identify the key technological, social, or ethical issues involved, and encourage the user to share their thoughts on how these challenges might be addressed.
その他の設定を見ていきます。
「Code Interpreter」とはコードの記述、実行、テスト、トラブルシューティングを伴うタスクをエージェントが処理できるようにするかどうかを選択できます。
「ユーザー入力」はユーザーからの情報が足りないとき、エージェントから追加の質問をして情報を要求するかどうかを選択できます。
「KMSキーセレクション」はデータをAWS所有のキーで暗号化するかどうかを選ぶことが出来ます。
「アイドルセッションタイムアウト」はデフォルトではユーザーがエージェントとのセッションで30分間応答がなかった場合、エージェントは会話の履歴を保持しなくなるため、変更したい場合はここを調整します。最大60分まで調整可能です。
今回は特に設定変更せずに先に進みます。
「アクショングループ」とはLambdaを用いてエージェントがユーザーによる実行を支援できるアクションを定義します。エージェントがユーザに変わりAPIを用いることでアクションを実行できるようになります。
「Memory」とはエージェントとの会話を何日間保管するかという設定です。最大30日間記憶することができます。こちらはClaude 3 sonnetとHaikuでのみ有効化することができます。なおこちらの機能はプレビュー版となります。
「ナレッジベース」は企業内の情報などを参照させたい場合、利用します。
回答内容の情報を制限させたい場合は「ガードレール」を使用して調整します。使用する場合はあらかじめガードレールを作成する必要があります。
その他「詳細プロンプト」ではエージェントから基盤モデルに送信されるプロンプトをカスタマイズすることが出来ます。
設定が完了したら右上にある「保存して終了」をクリックします。
次に右側のテストウィンドウに「準備」とあるため、それをクリックし、エージェントの動作をテストできるようにします。この作業はエージェントの更新の際も実施する必要があります。
上部に「~が正常に準備されました。」となっていれば問題ありません。
試しにテストウィンドウに質問を投げかけてみます。
回答が無事返ってきました。
日本語でも返答があるので問題なさそうです。
動作が確認できたので、エージェントをデプロイするためにエイリアスを設定していきます。
Amazon Bedrockはバージョン管理が自動的にされており、エイリアスによって以前のバージョンのエージェントを関連付けることも可能です。
画面上部の「エイリアスを作成」を押して任意のエイリアス名を付けます。
バージョンは、新しいバージョンとしてエイリアスに関連付けます。
スループットですが、トークンべースではない、一定のスループットが欲しい場合は「プロビジョンドスループット」を用いますが、今回はテストなので「オンデマンド」とします。
右下の「エイリアスを作成」をクリックします。
3-2. AWS Chatbotを作成する
次にSlackと連携ができるようにAWS Chatbotを作成していきます。
AWS Chatbotに移動し、「新しいクライアントを設定」から「Slack」を選択します。
Slackにリダイレクトされ、AWS Chatbotから使用しているSlackワークスペースへのアクセス権要求画面が出てきますので、内容を確認し、「許可する」をクリックします。
「新しいチャネルを設定」をクリックし、Bedrockエージェントと連携したいチャネルを選択します。
(弊社環境では既にSlackと連携しておりますので、いくつか設定済みチャネルがあります)
ロール設定はチャンネル単位としたいため、「チャネルロール」を選択します。
ロールは新規作成します。任意のロール名を入力します。
チャネルガードレールポリシーには「AmazonBedrockFullAccess」を追加します。
通知、タグについては一旦今回はなしで作成します。
デフォルトのチャネルロールでは権限が不足しているため、追加していきます。
作成したChatbotをクリックして詳細を開き、チャネルロールをクリックし、IAMロールの画面へ飛びます。
許可ポリシーにて「許可を追加」から「ポリシーをアタッチ」を選択します。
「AmazonBedrockFullAccess」を選択し、「許可を追加」をクリックします。
※今回はテストのため、緩めの権限を付与していますが、ユースケースにあわせて設定ください
これでChatbotの用意ができました。
SlackとAmazon Bedrockを連携していきます。
3-3. SlackとAmazon Bedrockを連携する
AWS Chatbotと連携したチャンネルで以下コマンドを実行します。
@aws connector add {コネクター名} {Bedrockエージェントのエージェント ARN} {BedrockエージェントのエイリアスID}
コネクター名は今後SlackからBedrockエージェントを呼び出すときに使用する値となります。任意のものを入力ください。
BedrockエージェントのARNとBedrockエージェントのエイリアスは以下の箇所で確認できます。
AWS Chatbotがチャンネルに招待されていない場合、上記コマンドを実行したタイミングでチャンネル招待の有無を確認されます。
招待すると、このような形で「successfully」の返事が返ってきます。
では、試しに質問してみます。
回答がありました。ただし英語なので、ちょっと内容がわからないです。
日本語に翻訳するようお願いしてみます。
前回の回答をちゃんと引き継いで日本語に翻訳してくれました。
4. まとめ
これまではAmazon BedrockをSlackと連携する場合、AWS公式のCloud Formationがあったとはいえ、すこし手間がかかっていました。しかし、AWS Chatbotと連携されたことによりSlack上に簡単にChatbotを作成することが出来ました。
NTT東日本はAmazon Bedrock を活用し、日々の電話業務を効率化するソリューションをご提供しております。気になる方はぜひNTT東日本にお問い合わせください。
RECOMMEND
その他のコラム
無料ダウンロード
自社のクラウド導入に必要な知識、ポイントを
この1冊に総まとめ!
あなたはクラウド化の
何の情報を知りたいですか?
- そもそも自社は本当にクラウド化すべき?オンプレとクラウドの違いは?
- 【AWS・Azure・Google Cloud】
どれが自社に最もマッチするの? - 情シス担当者の負荷を減らしてコストを軽減するクラウド化のポイントは?
- 自社のクラウド導入を実現するまでの具体的な流れ・検討する順番は?
初めての自社クラウド導入、
わからないことが多く困ってしまいますよね。
NTT東日本では
そんなあなたにクラウド導入に必要な情報を
1冊の冊子にまとめました!
クラウド化のポイントを知らずに導入を進めると、以下のような事になってしまうことも・・・
- システムインフラの維持にかかるトータルコストがあまり変わらない。。
- 情シス担当者の負担が減らない。。
- セキュリティ性・速度など、クラウド期待する効果を十分に享受できない。。
理想的なクラウド環境を実現するためにも、
最低限の4つのポイントを
抑えておきたいところです。
-
そもそも”クラウド化”とは?
その本質的なメリット・デメリット - 自社にとって
最適なクラウド環境構築のポイント - コストを抑えるための
具体的なコツ - 既存環境からスムーズにクラウド化を
実現するためのロードマップ
など、この1冊だけで自社のクラウド化のポイントが簡単に理解できます。
またNTT東日本でクラウド化を実現し
問題を解決した事例や、
導入サポートサービスも掲載しているので、
ぜひダウンロードして読んでみてください。
面倒でお困りのあなたへ
クラウドのご相談できます!
無料オンライン相談窓口
NTT東日本なら貴社のクラウド導入設計から
ネットワーク環境構築・セキュリティ・運用まで
”ワンストップ支援”が可能です!
NTT東日本が選ばれる5つの理由
- クラウド導入を
0からワンストップでサポート可能! - 全体最適におけるコスト効率・業務効率の改善を
中立的にご提案 - クラウド環境に問題がないか、
第3者目線でチェック
してもらいたい - 安心の24時間・365日の対応・保守
- NTT東日本が保有する豊富なサービスの組み合わせで
”課題解決”と”コスト軽減”を両立
特に以下に当てはまる方はお気軽に
ご相談ください。
- さまざまな種類やクラウド提供事業者があってどれが自社に適切かわからない
- オンプレミスのままがよいのか、クラウド移行すべきなのか、迷っている
- オンプレミスとクラウド移行した際のコスト比較を行いたい
- AWSとAzure、どちらのクラウドが自社に適切かわからない
- クラウド環境に問題がないか、第3者目線でチェックしてもらいたい
- クラウド利用中、ネットワークの速度が遅くて業務に支障がでている
クラウドを熟知するプロが、クラウド導入におけるお客さまのLAN 環境や接続ネットワーク、
クラウドサービスまでトータルにお客さまのお悩みや課題の解決をサポートします。
相談無料!プロが中立的にアドバイスいたします
クラウド・AWS・Azureでお困りの方はお気軽にご相談ください。