概要

Amazon Q Businessアプリのデータソースに社内Slack情報を読み込ませて、社内イベントについて質問してみました。個人情報を回答しないようにガードレールも試してみました。

手順

公式ドキュメントの手順を追って実行しています(2024/08/27現在は英語のみで日本語訳されていません)。全体の流れは以下の通りです。

  1. Slackトークンの初期設定
  2. Amazon Qでのアプリケーション作成と初期設定

手順1. Slackトークンの初期設定

  1. Slackボットトークンまたはユーザートークンの作成
  2. 必要なスコープの設定
  3. SlackワークスペースのチームIDの確認

Slack App Directory

今回はユーザートークンを作成し、以下のスコープを設定しました。

channels:history – パブリックチャンネルのメッセージやその他のコンテンツを表示
channels:read – ワークスペース内のパブリックチャンネルの基本情報を表示
emoji:read – ワークスペース内のカスタム絵文字を表示
files:read – ユーザーがアクセスできるチャンネルや会話で共有されたファイルを表示
groups:history – プライベートチャンネルのメッセージやその他のコンテンツを表示
groups:read – プライベートチャンネルの基本情報を表示
im:history – ダイレクトメッセージのメッセージやその他のコンテンツを表示
im:read – ダイレクトメッセージの基本情報を表示
mpim:history – グループダイレクトメッセージのメッセージやその他のコンテンツを表示
mpim:read – グループダイレクトメッセージの基本情報を表示
team:read – ワークスペースの名前、メールドメイン、アイコンを表示
users.profile:read – ワークスペース内のユーザーのプロフィール詳細を表示
users:read.email – ワークスペース内のユーザーのメールアドレスを表示
users:read – ワークスペース内のユーザーを表示

参考:Setting up Slack for connecting to Amazon Q

ボットトークンとユーザートークンの違いは以下の通りです。

ボットトークン

  • DMとプライベートグループメッセージをインデックスできない
  • インデックスするチャンネルごとにボットを追加する必要がある

ユーザートークン

  • ユーザーのアイデンティティに基づき、DMとグループメッセージをインデックス可能

スコープとは、Slackアプリがユーザーやチャンネルに対して行う操作の範囲やアクセス権限を定義するものです。

手順2. Amazon Qでのアプリケーション作成と初期設定

事前準備

IAM Identity Centerインスタンスをバージニア北部(us-east-1)に作成し、Amazon Q Businessアプリも同じリージョンで作成します。

Amazon Qアプリケーションの作成

AWS Management Consoleにログインし、Amazon Qコンソールを開きます。「Create Application」をクリックして、アプリケーションを作成します。

アプリケーション名を入力し、「Create」をクリックします。

RetrieverとIndex Provisioningの選択

Retrieverは「Use native retriever」を選択します。
Index Provisioningでは、開発やテスト環境に適した「Starter」を選び、Number of unitsはデフォルトの1のままにします。

データソースの追加

「Add data source」をクリックし、一覧から「Slack」を選択します。

Slack情報の入力

Nameにはデータソースの名前を入力します(スペースは使用不可、ハイフンは使用可能です)。
SourceにはSlackワークスペースのチームIDを入力します。

Authenticationでは「Create and add new secret」を選択し、Secret nameとSlack tokenを入力します。

IAM Roleの設定

「Create a new service role (Recommended)」を選択します。

Slack コンテンツからクロールする内容を指定

同期範囲の設定

同期するチャンネルの種類を選択し、チャンネルIDまたはチャンネル名を入力します。今回は社内イベント情報をお知らせするパブリックチャンネルを同期します。

  • パブリックチャンネル: ワークスペース内の誰でも自由に閲覧・参加が可能
  • プライベートチャンネル: 招待されたメンバーのみが閲覧・参加可能
  • グループメッセージ: 3人以上のユーザー間でのダイレクトメッセージ
  • プライベートメッセージ: 2人のユーザー間でのダイレクトメッセージ
クロール開始日

同期開始日を選択します。

最大ファイルサイズ

デフォルトの50MBに設定します。

追加設定(オプション)
  • メッセージの同期範囲を選択(ボットメッセージやアーカイブメッセージを含めるかどうかなど)
  • 正規表現パターンを追加し、ファイル名やファイルタイプを含めたり除外したりすることが可能

同期モード

完全同期または増分同期(新規・変更・削除されたコンテンツの同期)を選択します。今回は増分同期を選択します。

実行スケジュール

Amazon Qがデータソースと同期する頻度を設定します。今回は「Run on demand」を選択します。

フィールドマッピングの設定

Slackから取得した情報(属性やメタデータ)を、Amazon Q Business内で利用するためにインデックスフィールドに対応付けます。デフォルトの設定のままにします。

アクセス件の割り当て

IAM Identity Centerのユーザーまたはグループにアプリへのアクセス権限を割り当てます。

データソースの同期

設定が完了したら、作成したアプリを開いて「Sync now」を選択し、Slackからのデータを同期します。

ガードレールの設定

作成したアプリを開き、左側の「Admin controls and guardrails」を選択し、「Create topic specific control」をクリックします。
ここでは禁止したいトピックを設定し、ユーザーがそのトピックに関する質問をした場合に、回答をブロックするか、データソース内から回答を引き出すように設定できます。
今回は「個人情報」を禁止トピックとして設定し、回答をブロックするように設定します。

作成したアプリを使ってみる

IAM Identity Centerのコンソールに割り当てたユーザーでログインするか、Amazon Q BusinessのDeployed URLリンクをブラウザで開き、ログインします。

以下のように質問してみました。

質問1: 9月7日に開催されるイベントを教えてください。日本語で回答してください。

正確な回答が返ってきました。回答の根拠となるソース(投稿者名とチャンネル名)も確認できます。日本語で質問することが可能ですが、回答は英語になるので「日本語で回答してください」と付け加えました。

質問2: 個人情報を教えてください。

ガードレールで禁止したトピックに関する質問をすると、設定したメッセージが返ってきました。

質問3: 明日の大阪の天気を教えてください。

データソースに関連しない質問をすると、データソースに情報が見つからないと返ってきました。

使ってみた感想

このアプリを使うだけならLiteプラン(月額3ドル)で十分ですが、1ユーザーあたりの課金なので、会社全体で使用するには不向きかもしれません。

補足

2024/8/20時点では「image/png」形式のドキュメントはサポートされていません。
Amazon Q BusinessがSlackから「image/png」形式のドキュメントをインデックス化しようとした際に発生するエラーメッセージ

ErrorMessage: Failed to process the document. The document type (image/png) is not supported, please save the document in a supported format and try again
訳: ドキュメントの処理に失敗しました。このドキュメントタイプ(image/png)はサポートされていません。サポートされている形式で再保存して再試行してください。

参考:サポートされているドキュメントの種類