AWS Chatbotを使用して、Slack上でAmazon Bedrock Agentとやり取りする

## この記事について
2024年9月17日に、AWSから
[AWS Chatbot now allows you to interact with Amazon Bedrock agents from Microsoft Teams and Slack](https://aws.amazon.com/jp/about-aws/whats-new/2024/09/aws-chatbot-amazon-bedrock-agent-microsoft-teams-slack/)というニュースが発表されました。
[AWS Chatbot](https://aws.amazon.com/jp/chatbot/)において、Amazon Bedrock Agent との連携が容易にできるようになったとのことで、実際にSlack内でAmazon Bedrock Agentとのやりとりを試してみた記事になります。

## 前提
- 任意のワークスペースでSlackチャンネルを作成済み
- Amazon Bedrock Agent を作成済みであること
    - エージェントarnと、エイリアスIDを連携の際に使用します
    - エージェントは[こちら](https://iret.media/119620)の記事で作成したエージェントを使用しました。ここでは、詳細の構築手順の解説は割愛します（※1）

:::note info
※1 エージェントの振るまいとしては、以下のようになっています。
①AWSの生成AIに関する質問が来た場合は、[AWSの生成AIニュースのサイト](https://aws.amazon.com/jp/blogs/news/category/artificial-intelligence/generative-ai/)から最新の記事を3件を要約して、参照元をつけて回答させる
②デジタルガバナンスコードに関する質問が来た場合は、ナレッジベース内のドキュメントを参照して回答させる
（ナレッジベースには経産省の資料を格納しています）（※2）
③一般的な質問に関しては、FM（基盤モデル）が持つ一般的な知識に基づき回答させる
:::
:::note info
※2 ナレッジベースに格納している資料は以下です。
経済産業省資料
[デジタルガバナンスコード2.0](https://www.meti.go.jp/policy/it_policy/investment/dgc/dgc2.pdf)
[デジタルガバナンスコード3.0～DX経営による企業価値向上に向けて～（案）](https://public-comment.e-gov.go.jp/pcm/download?seqNo=0000277961)
:::

## 手順
### ①AWS Chatbotのコンソールへアクセス、「クライアントを設定」をクリック
![スクリーンショット 2024-09-29 151812.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/591fe862-35c4-b68d-870a-17f57f063e86.png)


### ②認証画面にリダイレクトされるので、Slackワークスペースにサインインを行う
![スクリーンショット 2024-09-29 134255.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/3f97d262-fd95-8d2a-eae4-46d080890fa4.png)

サインインを行った後、AWS ChatbotがSlackワークスペースにアクセスを許可して良いかを確認する画面が表示されるので、確認を行ったのち、「Allow」をクリックします。
![スクリーンショット 2024-09-29 134336.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/1a59d122-7a06-6e8a-35f7-5f845ea6ed27.png)

すると、下記のような画面に遷移すると思います。これでSlackワークスペースとAWS Chatbotの連携が完了しました。
![スクリーンショット 2024-09-29 134503.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/274244c3-49ea-5952-a93a-9d25899b2c88.png)

## ③Slackチャンネルへの連携にあたっての設定
次は、AWS Chatbotと、接続したいSlackチャンネルとの設定を行います。
「新しいチャネルを作成」ボタンから、連携先のチャンネルの情報を入力していきます。
今回はパブリックの、「test-aws-chatbot」というチャンネルに連携を行います。

![スクリーンショット 2024-09-29 134654.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/8bbba935-bf61-22bf-93a7-ad824ce49b78.png)

:::note info
設定の途中で、アクセス許可に関する設定を行います。（チャンネルのメンバーがサービスにアクセスする必要があるため）チャネルガードレールポリシーという部分で、Amazon Bedrockへのアクセスするポリシーをアタッチする必要があります。今回はAmazonBedrockFullAccessをアタッチしました。
:::
![スクリーンショット 2024-09-29 160954.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/c59a696e-319d-e090-8410-5dcb39479b10.png)

「通知」セクションについては、今回は特に何も設定しません。
![スクリーンショット 2024-09-29 161336.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/f9085bf7-028c-5819-3a76-cafa1b810ee0.png)

以上を設定したら、決定ボタンを押下します。以下のように、「設定済みのチャネル」という部分に、作成したチャネルが表示されていればOKです。
![スクリーンショット 2024-09-29 134948.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/b1e13e72-b46e-0496-f247-5e9273899181.png)


## ④Slackチャンネル内で、Bedrock Agentを接続する

対象のSlackチャンネル上で、以下を実行します。
```
@aws connector add connector_name arn:aws:bedrock:aws-region:XXXXXXXXXX:agent/AgentID AliasID
```
コネクタ名は「agent」としています。
正常に接続が成功していれば下記のような表示になります。
![スクリーンショット 2024-09-29 141309-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/0d1e63ca-9062-1f8a-7ffe-ace12004500d.png)



:::note info
ちなみに、接続を解除したい場合は以下で解除できます。
```
@aws connector delete connector_name
```
解除に成功した場合はこんな感じの応答が帰ってきます。
![スクリーンショット 2024-09-29 150002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/d0f69b22-8820-4101-a2da-26d51f756bf4.png)
:::

## 動作確認してみる
実際にエージェントに質問してみた結果がこちらです。期待通りの結果になっていそうです🙌
①パターン1:デジタルガバナンスコードに関する質問
事前に作成したナレッジベースの内容に基づき回答を生成してくれています。

![スクリーンショット 2024-09-29 163442.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/e4e1aba8-5064-c386-7d01-5d114ec256df.png)


②パターン2:AWSの生成AIニュースに関する質問
生成AIニュースに関する質問が来た場合は、最新の生成AIニュースを3件取得し、参照元を提示して紹介させる、という指示を事前に与えていることを考慮すると、問題なく回答がされているようです。
![スクリーンショット 2024-09-29 150914.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/f4306f4b-0c8c-cfed-07dc-61745709cc03.png)

③パターン3:一般的な質問
こちらも問題なく回答を生成してくれています。
![スクリーンショット 2024-09-29 141530.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623937/795550ce-5721-ff32-fa35-4005083ff9dc.png)


## 所感
既に作成済みのBedrock Agentが存在していた、という前提はありますが、連携させるのにかかった時間は約30分くらいでした。ノーコードで簡単に連携を行うことができ、非常に便利だと感じました。
普段の業務ではよくSlackを使用するので、今回試した内容をもう少しひねって、何か業務改善に転用できたら良いなと思いました。


## 参照
https://aws.amazon.com/jp/about-aws/whats-new/2024/09/aws-chatbot-amazon-bedrock-agent-microsoft-teams-slack/
https://docs.aws.amazon.com/chatbot/latest/adminguide/connect-bedrock-agents.html