Amazon Web Services ブログ

Amazon Bedrock と Amazon Connect によるコンタクトセンター向け生成系 AI ソリューションの構築手順

はじめに

アマゾン ウェブ サービス (以下、AWS) は、2023年9月28日に基盤モデルを API 経由で利用できるようにするフルマネージド型のサービスである Amazon Bedrock を一般公開しました。本記事では Amazon Bedrock で提供されるモデルのうち、日本語にも対応した Anthropic 社の Claude を利用し、コンタクトセンター業務を支援するサンプルソリューションである Live Call Analytics with Agent Assist(以下、LCA)を日本語化し、お客様とエージェントの通話に合わせた回答生成、通話内容の自動要約等に活用するための手順をご紹介します。なお、LCA の詳細については、Amazon言語系AIサービスによるコンタクトセンターのライブ通話分析とエージェントアシストをご参照ください。

Amazon Connect 環境の概要

LCA ではコールセンターのソリューションとして、Asterisk、Genesys Cloud、Amazon Chime SDK 等、複数の音声源をサポートしています。今回は Amazon Connect の利用を前提とし、環境の構築を進めます。

アーキテクチャやコードは GitHub で公開されています。

Amazon Connect 環境の構築

LCA ではコールセンターのソリューションとして、Asterisk、Genesys Cloud、Amazon Chime SDK 等、複数の音声源をサポートしています。今回は Amazon Connect の利用を前提とし、環境の構築を進めます。

Amazon Connect で日本の電話番号を使用するためにはAWS サポートへの問い合わせの上、手続きが必要です。以下の手順では日本の電話番号を使用していますが、US 等の電話番号等でも実施可能です。

1. Amazon Connect のコンソールで「インスタンスを追加する」をクリックします。

2. アクセス URL を設定して、「次へ」をクリックします。

3. 管理者を指定して、「次へ」をクリックします。

4. 残りの項目はデフォルトのまま変更せず進み、「インスタンスの作成」をクリックします。

5. 作成した環境の Instance ARN をメモします。

6. 「Log in for emergency access」を選択して、Amazon Connectの管理コンソールにログインします。

7. 上部の地球儀アイコンから、言語設定を変更します。

8. 電話番号を取得するために、「開始」をクリックします。

9. 電話番号を選択して、「次へ」をクリックします。

10. 「Continue」をクリックします。

11. 「ルーティング」メニューの「フロー」を選択します。

12. 「フローを作成」をクリックします。

13. サンプルのフローをこちらからダウンロードします。右上のドロップダウンから「インポート(ベータ)」をクリックします。

14. 前の手順でダウンロードしたファイルを選択して、「インポート」をクリックします。

15. 「記録と分析の動作を設定」ブロックを選択し、言語設定で「日本語(日本)」を選択して「保存」をクリックします。

16. 右上の「保存」をクリックします。「公開」をクリックし、表示されるダイアログで「公開」をクリックします。

17. 「チャンネル」メニューの「電話番号」をクリックします。

18. 電話番号をクリックします。

19. 「問い合わせフロー/IVR」で「LCA-EXAMPLE」を選択して、「保存」をクリックします。

Claude のアクセス申請

Amazon Bedrock が提供する Claude を利用するためにアクセス申請を行います。

ブログ執筆時点で、Amazon Bedrock は東京リージョン(ap-northeast-1)で一部のモデルがリリースされていないため、実際の画面とは異なります。本記事では東京リージョンでリリース済みの Claude Instant を使用します。また、LCA のデプロイ時の制約で Titan Embeddings G1 も有効化が必要となります。

1. Amazon Bedrock のコンソールに移動します。

2. 左側のメニューの「Model access」を選択し、「Edit」をクリックします。

3. Anthropic の横にある「Request」をクリックします。

4. 必要事項を入力して、「Request」をクリックします。

5. しばらくすると Claude の「Access status」が「Available」になるので、チェックボックスにチェックを入れて、「Save changes」をクリックします。

6. 「Access status」が「Access granted」になります。

AWS Cloud9 環境の作成

LCA をデプロイするために必要な構成ファイル等を生成するために、AWS Cloud9(以下、Cloud9) の環境を作成します。

1. Cloud9のコンソールから「環境を作成」をクリックします。
2. 「名前」を入力し、インスタンスタイプで「m5.xlarge」を選択して「作成」をクリックします。
3. 「開く」をクリックします。
4. 環境で使用されている Amazon EBS ボリュームのサイズ変更の手順にしたがってボリュームサイズを 20GB に変更します。

LCA のデプロイ

AWS CloudFormation(以下、CloudFormation)で LCA をデプロイします。ブログ執筆時点の最新である LCA v0.8.8 の使用を前提とします。

1. Github から LCA のコードを Cloneします。

git clone https://github.com/aws-samples/amazon-transcribe-live-call-analytics.git -b v0.8.8
cd amazon-transcribe-live-call-analytics/

2. publish.sh を以下のように実行します。(S3バケット名は日付を入れる等、一意になるように変更する必要があります。)

./publish.sh lca-demo-env-bucket lca-artifacts ap-northeast-1 

各引数の意味は以下のとおりです。

./publish.sh <cfn_bucket_basename> <cfn_prefix> <region> [public]

- <cfn_bucket_basename>: CloudFormation テンプレートやコードを保存する S3バケットを指定します。
- <cfn_prefix>:作成されるコードはこの prefix 下に置かれます。
- <region>: 使用するAWSリージョンをしています。
- public: (optional) "public" を指定するとコード類がパブリックに公開され、他のアカウントでも使用可能となります。

3. 正常に実行が完了すると以下のように結果が出力されるので、Template URLをコピーします。

OUTPUTS
Template URL: https://s3.ap-northeast-1.amazonaws.com/lca-demo-env-bucket-ap-northeast-1/lca-artifacts/lca-main.yaml
CF Launch URL: https://ap-northeast-1.console.thinkwithwp.com/cloudformation/home?region=ap-northeast-1#/stacks/create/review?templateURL=https://s3.ap-northeast-1.amazonaws.com/lca-demo-env-bucket-ap-northeast-1/lca-artifacts/lca-main.yaml&stackName=LCA
CLI Deploy: aws cloudformation deploy --region ap-northeast-1 --template-file /tmp/lca/lca-main.yaml --capabilities CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND --stack-name LCA --parameter-overrides AdminEmail=jdoe@example.com CallAudioSource=Demo Asterisk PBX Server demoSoftphoneAllowedCidr=CIDRBLOCK siprecAllowedCidrList="" S3BucketName=""
Done

4. CloudFormationのコンソールを開き、「スタックの作成」をクリックします。

5. テンプレートの「Amazon S3 URL」に先ほどコピーしたTemplate URLを入力し、「次へ」をクリックします。

6. スタック名、パラメーターを以下のように入力します。(以下に記載以外のパラメーターはデフォルトの値を使用します)

項目 設定値
スタック名 lca-demo-env
パラメーター Web UI Authentication Admin Email Address 自分の E メールアドレス
Telephony Ingestion Options Call Audio Source Amazon Connect Contact Lens
Call Audio Processor Call Transcriber Lambda
Amazon Connect instance ARN (existing) 前の手順で確認した Amazon Connect環境のARN
Agent Assist Options Agent Assist QnABot Bedrock ModelId anthropic.claude-instant-v1(デフォルト)
Amazon Transcribe Configuration Transcribe API mode standard
Language for Transcription ja-JP
Transcript Event Processing Configuration BedrockModelId anthropic.claude-instant-v1(デフォルト)

7. 以降の設定はデフォルトのまま「次へ」をクリックして進みます。

8. 以下のようにチェックボックスを有効にして、「送信」をクリックします。

9. 45分程でデプロイが完了します。

LCA のWeb コンソールにログイン

LCA の Web コンソールにログインします。コンソールはコールセンターのエージェントがお客様との通話中に使用します。

1. スタックの作成が完了すると「Welcome to Live Call Analytics with Agent Assist!」というメールが届くので、メールに記載のURLを開き、メールアドレス、メールに記載のパスワードでログインします。

2. パスワードの変更を求められるので、パスワードを変更します。

3. 「Email」にチェックを入れて、「VERITY」をクリックします。

4. 受信したEメールに記載の Confirmation Code を入力して「SUBMIT」をクリックします。

5. LCAのWebコンソールが開きます。

QnABot Content Designer にログイン

QnABot Content Designer は LCA に含まれる Agent Assist Bot の各種動作を設定することができます。ここでは必要最低限の修正を行います。各項目の説明は QnABot on AWS のドキュメントを参照してください。

1. 「QnABot Signup Verification Code」というメールが届くので、メールに記載のURLを開き、ユーザー名(Admin)、メールに記載のパスワードでログインします。

2. 新しいパスワードを入力して「Send」をクリックします。

3. QnABot Content Desigerが開きます。

4. 左上のメニューを開き、「Settings」を選択します。

5. 以下の項目を変更します。

項目 備考
ALT_SEARCH_KENDRA_FALLBACK_CONFIDENCE_SCORE LOW Kendra の 検索結果でSCOREが低いものも対象にする
LLM_GENERATE_QUERY_PROMPT_TEMPLATE Human: <chatHistory> タグの中にチャット履歴の記載があります:<br><chatHistory><br>{history}<br></chatHistory><br>Human: <followUpMessage> タグの中に Human からの質問があります:<br><followUpMessage><br>{input}<br></followUpMessage><br>Human: 質問の内容を、チャット履歴を読まなくても理解できるような独立した質問として言い換えてください<br><br>Assistant:

6. 「SAVE」をクリックします。

日本語対応

LCA を日本語対応するための設定変更を行います。

Kendra

LCA のデフォルトの構成では Kendra に英語のドキュメントが投入されています。ここでは検索対象を日本語のドキュメントに変更します。

1. Kendraのコンソールで、作成されたインデックスを選択します。

2. データソースを選択し、Action メニューの「Edit」を選択します。

3. Default Languageで「Japanese (ja)」を選択して「Next」をクリックします。

4. 設定済みの Source URL を削除して、以下のURLを追加します。

  • https://ja.wikipedia.org/wiki/損害保険
  • https://ja.wikipedia.org/wiki/自動車損害賠償責任保険

5. 最後まで進み、「Update」をクリックします。

6. データソースを選択して、「Sync now」をクリックします。

Lambda

1. Lambda のコンソールを開きます。
2. 関数名に「FulfillmentLambda」を含む Lambda 関数を開きます。
3. lib/middleware/3_query.js に以下の行を追加して、「Deploy」をクリックします。

req['kendraQueryArgs'] = ['"AttributeFilter" : {"EqualsTo":{"Key":"_language_code","Value":{"StringValue": "ja"}}}']

4. 「エイリアス」タブで「live」をチェックして、「編集」をクリックします。「バージョン」で $LATEST を選択して「保存」をクリックします。

5. AWS Systems Manager のパラメータストアの値を修正します。Systems Manager のコンソールで「パラメータストア」を選択し、「LLMPromptSummaryTemplate」を含むパラメータを開きます。

6. 「編集」をクリックします。

7. 「値」を以下のように設定し、「変更を保存」をクリックします。

{
"Summary":"<br><br>Human: <transcript></transcript>タグに記載された内容に基づいて、<question></question>タグに記載された質問に答えてください。質問に答えられない場合は、「n/a」と答えてください。性別に関係ない代名詞を使用してください。回答する場合は、答えのみを回答してください。<br><br><question>記載された内容の要約は?</question><br><br><transcript><br>{transcript}<br></transcript><br><br>Assistant:",
"Topic":"<br><br>Human: <transcript></transcript>タグに記載された内容に基づいて、<question></question>タグに記載された質問に答えてください。質問に答えられない場合は、「n/a」と答えてください。性別に関係ない代名詞を使用してください。回答する場合は、答えのみを回答してください。<br><br><question>通話のトピックは何ですか?例えば、iphoneの問題、請求の問題、キャンセルなど。トピックだけを答えてください。</question><br><br><transcript><br>{transcript}<br></transcript><br><br>Assistant:",
"Follow-Up Actions":"<br><br>Human: <transcript></transcript>タグに記載された内容に基づいて、<question></question>タグに記載された質問に答えてください。質問に答えられない場合は、「n/a」と答えてください。性別に関係ない代名詞を使用してください。回答する場合は、答えのみを回答してください。<br><br><question>AGENTはこれからどのようなアクションが必要ですか?</question><br><br><transcript><br>{transcript}<br></transcript><br><br>Assistant:"
}

動作確認

ここまでの設定で LCA を日本語対応するための最低限の設定ができましたので、実際に電話をかけて動作を確認します。

1. エージェント(Agent)側で「問い合わせコントロールパネル」を開きます。

2. ステータスを「Available」にします。

3. お客様側(Caller)から電話をかけます(通話料が発生しますのでご注意ください)。

4. Webコンソールにレコードが作成されるので、Call IDをクリックします。

5. 以下のようにLCAの詳細ページが開きます。

「Call Transcript」には通話の文字起こしの結果が表示されます。エージェントとお客様の会話内容に基づき、リアルタイムに関連ドキュメントが提示され、エージェントは適切な回答を即座に行うことができます。「Agent Assist Bot」の画面ではエージェントが質問内容を入力し、関連ドキュメントを検索することが可能です。「Call Summary」には通話終了後に、会話内容の要約、トピック、フォローアップ内容が表示されます。

まとめ

本記事ではコンタクトセンター業務を支援する LCA を Amazon Connect と共に構築し、 Amazon Bedrock の Claude を利用して日本語化する手順をご紹介しました。ご自身のアカウントでも構築可能ですので、ぜひトライしていただき、Amazon Bedrock が提供する生成系 AI の可能性を体感してください。本ソリューションは 生成系 AI を利用したユースケースの一例に過ぎませんので、ご自身の業務での適用できそうなアイディアをふくらませていただき、ビジネスの革新に Amazon Bedrock を活用いただければと思います。

著者について

Chiaki Ishio

千代田 真吾は、アマゾンウェブサービスのソリューションアーキテクトです。現在は、エンタープライズの小売・消費財業界のお客様が AWS を用いてビジネスを拡大するのを支援しています。