Amazon Lex による「チャットボット」をブラウザから試す

## はじめに

AWS は様々な AI サービスを提供しています

そして、それらのサービスはブラウザから簡単に試せるようになっています

https://aws.amazon.com/jp/free/machine-learning/

| サービス    | 機能                     | お試し記事     | Elixir 実装例 |
|:------------|:-------------------------|:----------------| :-----|
| Transcribe  |音声の文字起こし（音声認識）| [参照](https://qiita.com/RyoWakabayashi/private/396e2047d377e258950f)  | [参照](https://qiita.com/RyoWakabayashi/items/1fc64587c9fa352935c6) |
| Polly       |文書の読み上げ（音声合成）  | [参照](https://qiita.com/RyoWakabayashi/private/2aad1952f63b4e76b652) | [参照](https://qiita.com/RyoWakabayashi/items/93adae047ccb4fee8d78) |
| Lex         |チャットボット             | [参照](https://qiita.com/RyoWakabayashi/private/6c7e7a248e192f3a8afc) | Coming Soon... |
| Translate   |翻訳                      | [参照](https://qiita.com/RyoWakabayashi/private/688418e52cde44871c1e) | [参照](https://qiita.com/RyoWakabayashi/items/5f262ba0d1e11219edec) |
| Rekognition |画像認識<br/>顔認識        | [参照](https://qiita.com/RyoWakabayashi/private/d8c7f57a71e83d9140d5)<br/>[参照](https://qiita.com/RyoWakabayashi/private/10f93c3417041b005c31)  | [参照](https://qiita.com/RyoWakabayashi/items/2219e84642ff2d05481c) |
| Textract    |画像からの表データ読込     | [参照](https://qiita.com/RyoWakabayashi/private/b7bd7079d20326d9e4be) | [参照](https://qiita.com/RyoWakabayashi/items/7c26d0dda7d566adc694) |
| Bedrock     |生成AIによるチャット、画像生成| [参照](https://qiita.com/RyoWakabayashi/private/5680a4bac246a1a0c532) | [参照](https://qiita.com/RyoWakabayashi/private/bb85dd2286420205e2da) |

本記事では AWS のチャットボット作成サービス Lex をブラウザから試してみます

## Amazon Lex とは

Amazon Lex　は AI モデルによって文章を理解し、予め設定した流れに沿った会話を行います

https://aws.amazon.com/jp/lex/

### Amazon Lex の使い途（ユースケース）

Amazon Lex は 2023年11月現在、 13 の言語・国に対応しており、日本語も利用可能です

https://docs.aws.amazon.com/lex/latest/dg/how-it-works-language.html

Amazon Lex は以下のような用途に使用可能です

- ホテルの予約用チャットボット
- お問い合わせ用 LINE ボット
- Polly と組み合わせて電話自動応答

生成 AI によるチャットボットはより汎用的な用途に使えますが、 Lex は一定の質問と回答を定型的に行う用途に向いています

### Amazon Lex の料金

https://aws.amazon.com/jp/lex/pricing/

AWS の料金は基本的に従量課金制です

また、リージョン（サービス提供するサーバーが存在する地域）によって料金が異なります

Lex は入力としてテキストと音声を使用できます

Amazon Lex を東京リージョンで使う場合、以下のように課金されます

- テキスト: $0.00075 / リクエスト
- 音声: $0.004 / リクエスト

ただし、 AWS のサービスの多くには無料利用枠が存在します

> Amazon Lex は無料で試用できます。Amazon Lex の使用を開始した日から最初の 1 年間は、1 か月あたり最大で 10,000 回のテキストリクエストと 5,000 回の音声リクエストまたは音声間隔を処理することができます。 また、最初の 2 か月間は、1 か月あたり 2 時間のトレーニング時間として、自動チャットボットデザイナーを利用することができます。

無料利用期間中の場合、 テキストなら 10,000 回、音声なら 5,000 回までなら無料になるため、本記事で実行する程度の処理であれば無料範囲内に収まります

## アカウント作成

Amazon Lex を使うためには、 AWS のアカウント作成が必要です

以下の公式手順に従って、アカウントを作成してください

:::note warn
クレジットカードと電話番号が必要になります

予めご用意ください
:::

https://aws.amazon.com/jp/register-flow/

## ブラウザからのチャットボット実行

### Amazon Lex への移動

AWS のマネジメントコンソールにログインすると、以下のような画面が表示されます

https://ap-northeast-1.console.aws.amazon.com/console/home?region=ap-northeast-1#

![スクリーンショット 2023-11-26 9.59.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/ccb18a17-4e2e-e5e6-098f-e779c8f69eef.png)

この画面から最近使ったサービスなどにアクセスできるようになっています

上メニューにある検索ボックスに `lex` と入力してみましょう

![スクリーンショット 2023-11-27 16.04.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/10f785a2-d7ee-878c-12af-df90214eccb3.png)

サービスの候補として Amazon Lex が表示されます

Amazon Lex をクリックして、サービスページに移動しましょう

以下のような画面が表示されます

https://ap-northeast-1.console.aws.amazon.com/lexv2/home?region=ap-northeast-1#bots

![スクリーンショット 2023-11-27 16.05.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/2b95807f-661b-43f7-2060-e33af146a97e.png)

### チャットボット作成

右上の「ボットを作成」ボタンをクリックしましょう

「ボット設定を構成」という画面に遷移します

「作成方法」は「例から開始」を選択してください

![スクリーンショット 2023-11-27 23.48.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/e7435945-8f14-d0aa-c3ad-c2bc7d01a50b.png)

下にスクロールして、以下のように入力します

- ボット名: 適当な名前
- IAM アクセス許可: 基本的な Amazon Lex 権限を持つロールを作成します
- 自動オンラインプライバシー保護法(COPPA): はい

入力したら右下オレンジ色の「次へ」をクリックしてください

![スクリーンショット 2023-11-27 23.50.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/ff667ef1-8a31-f854-800d-e37f5b1ce315.png)

言語に「日本語(JP)」を選択し、「完了」をクリックしてください

![スクリーンショット 2023-11-27 23.53.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/4e00a944-0724-3eeb-a145-b56168a0ebe5.png)

続いて「インテント」 = 「目的」の設定画面に遷移します

この画面では、具体的にどのような会話をして、どういう情報を相手から聞き出すのか（=目的のための会話）を設定していきます

![スクリーンショット 2023-11-27 23.55.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/60330255-1768-ed0c-b71e-9282e2afe6a1.png)

下の方にスクロールすると、会話の設定があります

![スクリーンショット 2023-11-27 23.59.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/0a0e22ec-8f3d-016d-9270-7cd9d5494ab2.png)

チャットボットはここで設定した質問をユーザーに投げかけ、その回答を記録してくれます

編集する場合、各プロンプト（「場所などの回答を促すための質問」）をクリックして開きます

![スクリーンショット 2023-11-28 0.02.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/91ff7b7d-7d1f-eb7b-2fda-ae60ad1d7076.png)

右上「スロットを追加」をクリックして、質問を追加してみましょう

以下のようなモーダルが表示されます

![スクリーンショット 2023-11-28 0.04.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/c6713ac0-fd47-d872-79e8-0392f54c139b.png)

以下のように入力して、「追加」をクリックします

- 名前: CheckInTime
- スロットタイプ: AMAZON.Time
- プロンプト: 何時にチェックインなさいますか

モーダルが閉じたら右下「インデントを保存」をクリックしてください

その状態で右上「Build」をクリックします

![スクリーンショット 2023-11-28 0.12.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/7d162da8-80d7-f19d-27f5-cf3d4eb364a1.png)

これによってチャットボットの作成が開始されます

![スクリーンショット 2023-11-28 0.14.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/8c92513f-e3ba-62fd-6c7d-e1633cf8939f.png)

しばらくするとチャットボットの作成が完了するので、「Test」をクリックします

![スクリーンショット 2023-11-28 0.14.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/97c25e00-3ee0-bb07-0cd0-a72bcd112387.png)

画面右端にチャット用の枠が表示されました

![スクリーンショット 2023-11-28 0.15.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/5f8a9ec0-da5c-92c8-121b-bc05194cc0dc.png)

最下部のメッセージ欄に「ホテルを予約したい」のような文言を入力すると、チャットbotとの会話が開始されます

![hotel.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/317cb12b-6ffb-fca5-800b-c90d9c2fd265.gif)

会話終了後、上部の「検査」をクリックすると、チャットの左側にボットが読み取った結果が表示されます

![スクリーンショット 2023-11-28 0.28.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/2161b16e-fed1-3381-9bdc-1a2d1022851e.png)

会話の内容が正しく日付、時刻、数値などに変換されて取得できていることが分かります

## チャネル統合

本記事では実行しませんが、チャネル統合を利用すると Facebook や Slack 、 Twillio と連携することが可能です

![スクリーンショット 2023-11-28 0.25.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/10dd71f7-bf6b-ab6d-7372-e66aaa02cd63.png)

## まとめ

Lex によるチャットボットについて、ブラウザからデモを実行できました

日付など、表現に揺らぎがあるような値でも正しく取得できており、定型業務の自動化に役立ちそうです