Amazon ConnectからAmazon Lexの会話型AIチャットボットを作成してみた

## はじめに
2024年の re:Invent 前後のAmazon Connectの機能リリースにより、Amazon Lexの会話型AIチャットボットをAmazon Connectのコンソール上で作成・編集できるようになりました。
これにより、IVRのボタン操作だけでなく、自然言語による問い合わせが可能になり、顧客体験の向上が期待されます。

今までは、AWSマネジメントコンソール上で作成した Lex ボットを Amazon Connect コンタクトフロー上で利用していたのですが、今回のアップデートを受けて、Amazon Connectのコンソール上で会話型AIチャットボットを作成してみました。

https://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/connect-conversational-ai-bots.html

## 作成前の準備
こちらの記事は以下の設定が済んでいることが前提となります。
- Amazon Connectのインスタンスが作成されていること
- Amazon ConnectのインスタンスでのAmaozon Lex ボットの設定
    - こちらは以下の記事を参考に設定しました

https://qiita.com/oho-kiyotaka/items/ef5798c5dd71dadb5610

## 本記事での構築内容
作成イメージです
顧客から保険などの契約がしたいとの要望を受けて、要望を確認するプロンプトを返します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843904/97899a48-81b5-4e1e-8fb3-0d54190b7d29.png)
## ボット構築手順（保険会社の問い合わせを想定）
1. Amazon Connectインスタンスにログイン
1. 管理者ワークスペース → ルーティング → フローに遷移し、ボットタブを選択
1. ボット作成（COPPAは無効化）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843904/e5777adc-9420-4f73-a09d-3a29c7111175.png)

    1. 空のインテントを追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843904/62c8ff60-3e63-40aa-b9a0-8333e2ebb5ab.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843904/eeb3d73a-bd3d-49e9-8227-9644a3ae7dd3.png)

1. 「高度な設定」を押下（スロットタイプを作成するため）

    1. 空のスロットタイプを追加
        - スロット値は設定してもすぐに保存できないため、別タブで編集するか、スロット追加後に設定する必要があります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843904/26c729fa-c178-4413-b943-0aa3dd74eb4a.png)

1. スロットを追加
    - スロット名（任意の文字列）
    - スロットタイプ（上記で作成したスロットタイプを選択）
    - スロットプロンプト（今回はユーザーの詳細な要件を促すことはしないので何も発話させないようにドット（.）を入れています。）

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843904/e589e2b4-638c-467f-a976-32632bbd1f22.png)

1. スロットタイプの設定
    1. スロット値の設定（今回は「値を展開」で設定）
    -  値を展開（既定）
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843904/d0212bd3-0072-4867-8cac-c1a79054d2bd.png)
    - スロット値に制限
        - スロット値に制限では、ユーザーの発話と完全一致するもののみ認識します
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843904/5b7d58e6-04de-42db-9abf-ae9318ebaa17.png)

1. 発話の設定
    - 今回は「契約すること」に類似した発話を検知することでインテントを起動させるように発話にはスロット名を入れました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843904/09a4e570-799c-45af-b897-10fe7911b440.png)

1. プロンプトの設定
    - 初期応答メッセージ
    - 確認プロンプト（こちらにスロット名を加えることでユーザーの発話した内容を変数として格納可能です。）
    - クローズレスポンス
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843904/c1d256e5-92fa-467c-bf01-010f236dab27.png)

1. ビジュアルビルダーで確認
    - ここまでの設定を視覚的に確認できます
    - コードフックでLambdaが呼び出されているが、これまで一度もLambdaの設定をしていなくても設定されている。Lambdaを定義していないため、コードフックの設定を削除する必要があります
    - 「高度な設定」→ 作成しているインテント → 「ビジュアルビルダー」を選択
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843904/384f8b68-497c-4994-93b7-7a412f2e6121.png)

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843904/25e059d8-c611-40fc-8889-45e70542fabc.png)

1. ビジュアルビルダーで修正
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843904/c2acd8aa-028f-43cd-bdd1-95fabdcb4266.png)

1. 構築してテスト
    - 正常系
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843904/d275cba4-03af-4dfa-8ef2-f628da4695c5.png)

    - 異常系
    ![スクリーンショット 2025-03-10 14.48.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3843904/ea022ed9-4116-43d1-9a0d-1b843bb5be1a.png)


### 比較

| できることの比較表 | Amazon Connect | Amazon Lex | 備考 |
|:---------------:|:------------:|:------------:|:------------:|
| Botの作成 | ✅ | ✅ |  |
| スロットの作成 | ✅ | ✅ |  |
| 発話の作成 | ✅ | ✅ |  |
| 初期応答の作成 | ✅ | ✅ |  |
| 確認プロンプトの作成 | ✅ | ✅ |  |
| クローズレスポンスの作成 | ✅ | ✅ |  |
| エイリアスの作成 | ✅ | ✅ |  |
| 分析のダッシュボード | ✅ | ✅ | こちらは、表示するためのアクセス許可を持つアカウントを使用する必要があります |
| バージョンの作成 | ✅ | ✅ |  |
| スロットタイプの作成 | ✅ | ✅ | Amazon Connectは「詳細な設定」から行う必要があります |
| タグの作成 | ✅ | ✅ | エイリアスのタブの中から作成可能です（Amazon Connectは「詳細な設定」から行う必要があります） |
| 会話ログの設定 | - | ✅ | こちらは「詳細な設定」からでも設定できないので、Lexのコンソール上で設定する必要があります |
| テストワークベンチ | - | ✅ | テストワークベンチとはBotのパフォーマンスを測定し、ボットの開発を迅速に行うためのテストセットのことです |

:::note 
※2025年3月時点での比較になります。
:::

### 参考記事

- [Amazon Connect 管理ウェブサイトを使用してボットを作成する](https://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/work-bot-building-experience.html)
- [会話ログの有効化](https://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/conversation-logs-configure.html)
- [テストワークベンチの発表](https://aws.amazon.com/jp/about-aws/whats-new/2023/06/amazon-lex-test-workbench/)
- [Amazon Connect で会話型 AI ボットのパフォーマンスを評価する](https://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/lex-bot-analytics.html)

## 感想・まとめ
Bot編集の初期画面ではスロットタイプを作成できないため、「高度な設定」から作成する必要があります。
また、新規で会話型AIチャットボットを作成する場合は、「高度な設定」またはAmazon Lexのコンソール画面からスロットタイプを設定するのが良いと思います。

また、ビジュアルビルダーは直感的に操作できるため、非常に便利だと感じました。
特に、Botの作成後にすべてのブロックが正しく接続されているかを事前に確認することで、ビルド時のエラーを減らせると思います。

次回の記事では、Amazon ConnectのIVRと組み合わせて、自然言語での問い合わせを実装してみたいと思います。