こんにちは、エンジニアのyokomachiです。
2024/9/17のアップデートでAWS ChatbotでSlackやTeamsからAmazon Bedorock Agentにアクセスできるようになりました。
これまでAmazon Bedrock Agentの機能をユーザーに対してリリースするためには、Agentを呼び出すためのチャットクライアントアプリやAgentとの統合を独自に実装する必要がありましたが、今回のアップデートでSlackやTeamsを運用している社内やグループに対して、Agentの機能を簡単にリリースできるようになりました。
ということで今回は実際にAmazon Bedrock Agentの作成~Slackからの呼び出しまでを実装してみたいと思います。
Amazon Bedrock Agentの作成
今回使用するBedrockのAgentを作成します。
AWSコンソールでBedrockのサービスページを開き、オーケストレーション内の「エージェント」を選択してSlackから呼び出すエージェントを作成します。
今回はエージェント自体の検証ではないので、特にナレッジベースやLambda実行などもなく、与えられた文章を要約するだけの単純なエージェントを作成します。
作成したエージェントのテストまで完了後、エージェントのエイリアスを作成します。
AWS Chatbotの有効化
続いてAWSコンソールでAWS Chatbotのサービスページを開き、チャットクライアントを設定します。
今回はSlackからBedrockへアクセスできるようにします。
「Slack」を選択後、Slack側でAWS Chatbotアプリの許可をすると、下画像のようにSlackワークスペースのクライアントが作成されます。
続いて「新しいチャネルを設定」からSlackの特定のチャネルに対するアクセス許可を設定します。
今回はパブリックチャネル「agent-for-slack」をSlack側に作成したので、これにアクセス許可を行います。
今回アクセス許可は下画像のようにチャネルロールとして設定します。
チャネルロール、チャネルガードレールポリシーにはそれぞれAgentを実行するためのポリシーを含めるように設定します。
今回の検証ではポリシー「AWSChatbotChannelRole_for_agent-for-bedrock」をあらかじめ作成しておきました。
このポリシーのステートメントでは下記のようにAgentのIDとエイリアスIDを指定した必要最小限の許可を与えます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowInvokeBedrockAgent", "Effect": "Allow", "Action": "bedrock:InvokeAgent", "Resource": [ "arn:aws:bedrock:ap-northeast-1:{AWS Account ID}:agent-alias/{Agent ID}/{Agent Alias ID}" ] } ] } |
※リソースの指定の仕方がBedrockコンソールで確認できるエージェントARNとは若干違うことにご注意ください。
エージェントARN : arn:aws:bedrock:ap-northeast-1:{AWS Account ID}:agent/{Agent ID}
ポリシーに設定するARN : arn:aws:bedrock:ap-northeast-1:{AWS Account ID}:agent-alias/{Agent ID}/{Agent Alias ID}
Slackチャンネルにコネクタを設定
最後にSlackチャンネルからAWS Chatbotを呼び出せるようにコネクタを設定します。
以下のコマンドで、エイリアスを指定してコネクタを追加します。
※{Agent ID} {Agent Alias ID}の間は/(スラッシュ)ではなく、スペースであることにご注意ください
1 2 |
@aws connector add {alias} arn:aws:bedrock:ap-northeast-1:{AWS Account ID}:agent/{Agent ID} {Agent Alias ID} |
これで準備は整いました。
SlackからAmazon Bedrock Agentに文章を与えて、要約を返してもらいます。
今回は弊社Webサイトに記載の行動指針を与えてみました。
できてますね!
まとめ
今回はSlackやTeamsからAmazon Bedrock Agentを呼び出せるようになったAWS Chatbotの検証を行いました。
SlackやTeamsといった既存のチャットツールをAgentのクライアントとして使いやすくなったことで、Amazon Bedrock Agentの導入までの敷居が下がったり、クライアントの実装に割くコストをAgentのカスタマイズにまわすことができるようになったのが嬉しいアップデートですね。
- AWS ChatbotでSlackからAmazon Bedrock Agentにアクセスしてみる - 2024-09-18
- Amazon Bedrockの新機能「Prompt flows」を試してみた - 2024-07-11
- Amazon ConnectのZero-ETLがGAされたので試してみた - 2024-06-03
- Amazon Connectの新機能「フローパフォーマンスダッシュボード」を見てみた - 2024-05-16
- Amazon Connect Agent Workspaceにサードパーティアプリを統合してみる&留意点 - 2024-05-07