🍇

AWS+SlackでノーコードでRAGが構築できるようになっていた

2024/09/26に公開

はじめに

4ヶ月ほど前、Amazon Bedrockのエージェントを使ったらRAGが簡単に構築できたよ。という記事を投稿しました。
https://zenn.dev/ncdc/articles/41bf6e7735ec9f

ですが、BedrockのエージェントはCLIから呼び出せないという欠点があり、Slackと連携しようとするとLambda等のコードを書く必要がありました。
しかし、2024年9月にAWS Chatbotと連携する機能が追加されたことで、Slackとの連携がノーコードでできるようになりました。(通常のCLIからの呼び出しは引き続きできませんが、、、)
https://aws.amazon.com/jp/about-aws/whats-new/2024/09/aws-chatbot-amazon-bedrock-agent-microsoft-teams-slack/

ということで実際に試してみたら、問題なく実行できました!

なお、試してないですがTeamsからも呼べるはずです。

Bedrockのエージェント関連のその他の更新を紹介

エージェントの作り方自体は前回記事を参照いただければと思いますが、折角なのでエージェントやナレッジベース周りのこの数ヶ月での更新をいくつか紹介したいと思います。
「そんなの良いからslackとの連携を早く教えろ」という方はこの章を飛ばしてください。

日本国内でエージェントがまともに使えるようになった

正確には東京リージョンでClaude 3.5 SonnetやClaude 3 Haikuといった最新の生成AIモデルが使用できるようになりました。
前回記事時点でも一応東京リージョンでエージェントを使うことは出来たのですが、利用できるモデルの性能が低く実用的ではありませんでした。なので前回記事はオレゴンリージョン前提で書きました。
しかし、今なら気にせず東京リージョンで利用することができます!

欲を言えば、Opusは?と言いたいところではあります。

エージェントでClaude 3.5 Sonnetが使えるようになった

Claude 3.5 Sonnetがリリースされた当初はエージェントで使うことが出来ませんでいしたが、2週間くらい前に使えるようになりました。

S3以外のデータソースの選択肢が増えた

前回の記事の時点ではデータソースとして選べるのがS3のみでしたが、増えました。Previewではありますが。

個人的に驚いたのはSharepointに対応したことでしょうか。AWSなら絶対にやならそうなのに。

他にも機能追加はありますが、紹介するのはこんなところにしておきます。

Slackからエージェントを呼び出す

それでは、Slackとエージェントを連携させて呼び出す方法を説明します。
公式ドキュメントは以下になります。
https://docs.aws.amazon.com/chatbot/latest/adminguide/connect-bedrock-agents.html

構成

全体像は以下のような構成になります。

前提

前提としてAmazon Bedrockでエージェントを作成し、エイリアスも作成済みの状態とします。
まだの方は前回の記事を参考に作成しておいてください。

AWS Chatbotを用意する

ChatbotのクライアントにSlackを追加する

AWSコンソールでAWS Chatbotの設定画面を開いてください。
Slackとの連携自体がはじめての場合は、右上の「新しいクライアントを設定」からSlackと連携してください。

また、SlackのワークスペースにAWS Chatbotのアプリをインストールしておいてください。
https://ncdctalk.slack.com/marketplace/A6L22LZNH-aws-chatbot

チャンネルを追加する

クライアントを開いたら、右上の「新しいチャンネルを設定」を押下してください。

基本的に画面に従って設定すればOKですが、チャネルガードレールポリシーにbedrock:InvokeAgentを含むポリシーを設定してください。

手っ取り早く設定するならAmazonBedrockFullAccessを設定すればOKです。(が、過剰な権限なので推奨はしません。)

チャンネルに権限を追加する

チャンネルを保存したら、チャネルロールに対してもbedrock:InvokeAgentを付与してあげてください。先程と同様にAmazonBedrockFullAccessをつけるのが手っ取り早いですが、過剰な権限なので非推奨ではあります。

コンソールでのChatbotの設定は以上です。

Chatbotとエージェントを連携する

この設定はSlack上で実行します。

まず、AWSコンソールでBedrockのエージェントの画面を開き必要な情報を集めます。
必要なのはエージェントARNとエイリアスIDです。

そしたら、slackの先ほど連携したチャンネルから以下のコマンドを実行します。

@aws connector add (好きな名前) (エージェントARN) (エイリアスID)

上記のようにConnector successfully added.が表示されたら成功です。

実際にRAGを使う

接続時に表示されたコマンドに従って質問を投げれば、エージェントから回答が返ってきます。

以下は、私が所属するNCDCのホームページをナレッジベースとしたRAGを作ってslackから実行した例です。

@aws ask chat2
NCDCはAWSの知見がありますか?
NCDCはAWSの知見が豊富な企業です。主な特徴は以下の通りです:
- AWS コンサルティングパートナーの認定を取得しており、AWSの活用を支援するコンサルティングやマネージドサービスの提供において、幅広い知識と実績を持っている。
- AWS サービスを活用したサーバーレスアーキテクチャの設計や導入支援を得意としている。
- AWS の各種サービスを組み合わせたクラウドネイティブなシステムの構築に長けている。
- 自社サービスの開発でAWSを始め新しい技術を積極的に取り入れており、その実践的なノウハウをお客様にも提供できる。

それっぽい回答が返ってきていますね。
無事にノーコードでAWSを使ったRAGを構築できました!

NCDCエンジニアブログ

Discussion