AWS

Amazon Lexでチャットボット作成

NEW 2026年9月15日

目次Category


はじめに

今回は、Amazon Lexを利用して、ユーザーとの会話内容を理解して応答するチャットボットを作成します。

Amazon Lexは、テキストや音声による会話を理解し、
チャットボットなどの会話型インターフェースを構築できるAWSのサービスです。

今回のハンズオンでは、簡単な予約受付を例にして、
ユーザーが「予約したい」と入力すると必要な情報を聞き返すチャットボットを作成します。

今回のポイント

Amazon Lexでは、
ユーザーが「何をしたいのか」
インテントとして判断し、
その処理に必要な情報を
スロットとして取得しながら会話を進めます。

今回構築する全体像

今回のハンズオンでは、予約を受け付ける簡単なチャットボットを作成します。

ユーザー
   ↓
「予約したい」
   ↓
Amazon Lex
   ↓
インテントを判定
   ↓
必要な情報を質問
   ↓
「何日に予約しますか?」
   ↓
ユーザー
「9月20日」
   ↓
予約受付完了

Amazon Lexがユーザーの入力から目的を判断し、
予約に必要な情報が不足している場合は質問を行います。

必要な情報が揃ったら、最後に予約を受け付けたことをユーザーへ返します。

Amazon Lexとは

Amazon Lexは、テキストや音声を使った
会話型インターフェースを構築できるAWSのサービスです。

ユーザーが入力した文章から目的を判断し、
必要な情報を質問しながら会話を進めることができます。

AWSマネジメントコンソールからボットを作成できるため、
簡単なものであればプログラムを書かずに会話の流れを作成できます。

さらにAWS Lambdaなどと連携することで、
予約情報の登録やデータ検索などの実際の処理を行うこともできます。

Amazon Lexの主な特徴

  • ユーザーが何をしたいのかをインテントとして判断できる
  • 会話に必要な情報をスロットとして取得できる
  • テキストや音声を利用した会話に対応できる
  • 複数のインテントを作成して目的ごとに処理を分けられる
  • フォールバックインテントで想定外の入力にも対応できる
  • AWS LambdaなどのAWSサービスと連携できる

Amazon Lexの仕組み

Amazon Lexでは、ユーザーの入力から目的を判断し、
その処理に必要な情報を集めながら会話を進めます。

① ユーザーが入力
「予約したい」

        ↓

② インテントを判定
MakeReservation

        ↓

③ 必要な情報を取得
「何日に予約しますか?」

        ↓

④ 処理・応答
「予約を受け付けました」
流れLexの動作今回の例
① 入力ユーザーから入力を受け取る予約したい
② 目的を判断インテントを判定するMakeReservation
③ 情報を取得不足しているスロットを質問する何日に予約しますか?
④ 処理・応答情報が揃ったら処理や応答を行う予約を受け付けました

Amazon Lexの主な用語

用語役割今回の例
ボットユーザーと会話するチャットボット全体予約受付ボット
インテントユーザーが達成したい目的予約したい
サンプル発話インテントを判断するための発言例「予約したい」「予約をお願いします」
スロット処理に必要な情報予約日
フルフィルメント必要な情報が揃った後に行う処理予約受付完了を案内する
フォールバックどのインテントにも該当しない入力への対応内容を理解できなかった場合の応答

覚え方

インテント = 何をしたい?
スロット = そのために何が必要?

料金の仕組み

Amazon Lexは、主にユーザーから送信された
テキストや音声のリクエスト数などに応じて料金が発生します。

実際にシステムへ導入する場合は、
利用ユーザー数や1人あたりの会話回数などから利用量を見積もります。

確認する項目内容
利用者数何人程度がボットを利用するか
会話回数1ユーザーあたり何回やり取りするか
入力方法テキストまたは音声を利用するか
関連サービスLambdaやデータベースなどを使用する場合は、それぞれの料金も確認する

利用できる入力方法

入力方法内容利用例
テキストユーザーが文字を入力して会話するWebチャット・アプリ
音声ユーザーの音声を利用して会話する電話・音声による問い合わせ

Amazon Lexの主な用途

利用例内容
問い合わせ対応ユーザーの問い合わせ内容を判断して回答する
予約受付日付や人数などを会話形式で取得する
商品・サービス案内ユーザーの希望を聞きながら案内する
社内ヘルプデスク社内手続きや問い合わせに回答する
電話対応音声を利用した自動応答を構築する
注文受付商品名や数量などを会話から取得する

構築手順

Step1 Amazon Lexを開く

設定手順
  1. AWSマネジメントコンソールへログインします。
  2. 画面上部の検索欄から「Amazon Lex」を検索します。
  3. Amazon Lexを開きます。
  4. 「ボットを作成」を選択します。

Step2 ボットを作成する

今回は、予約を受け付ける簡単なチャットボットを作成します。

設定例
項目設定内容
ボットの作成方法空のボットを作成
ボット名ReservationBot
IAMアクセス許可基本的なAmazon Lex権限を持つロールを作成
COPPA今回の用途に合わせて選択

設定後、「次へ」を選択して言語の設定へ進みます。

Step3 言語を設定する

ボットが利用する言語を設定します。

項目設定内容
言語日本語(日本)
音声インタラクション今回はテキストで確認するため基本設定のまま進める

設定が完了したらボットを作成します。

Step4 インテントを作成する

次に、ユーザーが何をしたいのかを表すインテントを作成します。

今回は「予約をしたい」という目的を表すインテントを作成します。

項目設定内容
インテント名MakeReservation

インテントとは

ユーザーが達成したい目的を表します。
例えば「予約したい」「商品を注文したい」「営業時間を知りたい」など、
目的ごとにインテントを作成します。

Step5 サンプル発話を設定する

「サンプル発話」には、ユーザーが実際に入力すると考えられる文章を登録します。

今回は次のような文章を登録します。

予約したい
予約をお願いします
予約できますか
予約を取りたい

ユーザーの入力がこれらの発言に近い場合、
Amazon LexはMakeReservationインテントだと判断します。

ポイント

ユーザーは必ずしも登録した文章と完全に同じ言い方をするとは限りません。
そのため、同じ目的でも複数の言い回しをサンプル発話として登録します。

Step6 スロットを作成する

予約を受け付けるためには、予約日などの情報が必要です。

このように、処理を行うためにユーザーから取得する情報をスロットと呼びます。

今回は、予約日を取得するスロットを作成します。

項目設定内容
スロット名ReservationDate
スロットタイプ日付を扱う組み込みスロットタイプ
必須設定有効
スロットプロンプト何日に予約しますか?

スロットを必須に設定すると、
予約日をまだ取得できていない場合にAmazon Lexがユーザーへ質問します。

ユーザー
「予約したい」

      ↓

Amazon Lex
「何日に予約しますか?」

      ↓

ユーザー
「9月20日」

      ↓

予約日
= 9月20日

Step7 フルフィルメントを設定する

必要なスロットの情報がすべて取得できた後に実行する処理を
フルフィルメントと呼びます。

今回はLambdaを使用せず、
予約を受け付けたことを伝えるメッセージを返す構成にします。

予約を受け付けました。

実際のシステムでは

フルフィルメントでLambdaを呼び出すことで、
取得した予約日をデータベースへ登録したり、
予約可能な日時を検索したりする処理を実装できます。

Step8 ボットをビルドする

インテントやスロットなどの設定が完了したら、
画面上部の「ビルド」を選択します。

ビルドが完了すると、
作成した会話設定を利用してボットをテストできるようになります。

Step9 チャットボットをテストする

ビルドが完了したら、画面上部の「テスト」を選択して会話を試します。

ユーザー:
予約したい

Amazon Lex:
何日に予約しますか?

ユーザー:
9月20日

Amazon Lex:
予約を受け付けました。

動作確認

① 登録したサンプル発話を試す

  1. 「予約したい」と入力します。
  2. 予約日を質問されることを確認します。
  3. 日付を入力します。
  4. 予約受付完了のメッセージが表示されることを確認します。

② 異なる言い回しを試す

登録したサンプル発話とは少し異なる文章も入力します。

予約を取りたいです
予約お願いできますか
予約したいんですが

これらの文章が正しくMakeReservationインテントとして判断されるか確認します。

③ 想定外の入力を試す

今日の天気を教えて

予約とは関係のない入力を行い、
フォールバックインテントへ処理されるか確認します。

フォールバックインテントとは

Amazon Lexには、
ユーザーの入力をどのインテントにも判断できなかった場合に利用される
フォールバックインテントがあります。

例えば予約受付ボットに対して、

今日の天気を教えて

と入力された場合、
予約に関するインテントとして判断できなければ、
フォールバックインテントへ処理されます。

例えば次のような応答を設定できます。

申し訳ありません。
内容を理解できませんでした。

実際のシステムではどう使う?

今回のハンズオンでは、Amazon Lexだけで簡単な応答を返しました。

実際の業務システムでは、
Lambdaやデータベースなどと組み合わせることで、
会話した内容に応じて実際の処理を実行できます。

例:予約受付システム

ユーザー
   ↓
Webサイト・アプリ
   ↓
Amazon Lex
   ↓
インテント・スロット
   ↓
AWS Lambda
   ↓
データベース
   ↓
予約情報を登録
   ↓
Amazon Lex
   ↓
ユーザーへ結果を返す

Amazon Lexはユーザーとの会話や情報取得を担当し、
Lambdaが実際の業務処理を担当するように役割を分けることができます。

よく使う関連サービスとの連携

ユーザー
   ↓
Webサイト・アプリ
   ↓
Amazon Lex
(会話・目的を判断)
   ↓
AWS Lambda
(処理を実行)
   ↓
DynamoDB / RDS
(情報の検索・保存)
   ↓
Amazon Lex
   ↓
ユーザーへ回答
サービス主な役割
Amazon Lexユーザーとの会話・目的の判断・情報取得
AWS Lambda予約登録や情報検索などの処理
Amazon DynamoDB予約情報などのデータを保存
Amazon RDSリレーショナルデータを保存・検索
Amazon Connect電話による問い合わせ対応

業務での利用例

問い合わせ対応

ユーザーの問い合わせ内容を判断し、
質問に応じた回答を返すチャットボットを構築できます。

予約受付

日付や人数などをスロットとして取得し、
Lambdaなどを通して予約システムへ登録できます。

社内ヘルプデスク

社員からの「パスワードを変更したい」「申請方法を知りたい」などの問い合わせを判断し、
必要な案内を自動で返す仕組みに利用できます。

商品・サービス案内

ユーザーの希望や条件を会話形式で確認しながら、
適した商品やサービスを案内する仕組みに利用できます。

電話での自動応答

音声による問い合わせ内容を判断し、
適切な案内や後続処理へつなげる仕組みに利用できます。

導入時に考えるポイント

① インテントを適切に分ける

複数の目的を1つのインテントにまとめすぎると、
ユーザーの目的を判断しにくくなります。

「予約」「キャンセル」「営業時間確認」など、
目的ごとにインテントを分けて設計します。

② サンプル発話を複数用意する

ユーザーによって言い方が異なるため、
実際に使われそうな複数の表現を登録します。

③ 必要な情報をスロットとして整理する

処理に必要な情報だけをスロットとして設定し、
ユーザーへの質問が多くなりすぎないようにします。

④ 想定外の入力も考える

フォールバックインテントなどを利用し、
Amazon Lexがユーザーの目的を判断できなかった場合の応答も設計します。

⑤ 実際の処理との連携

Amazon Lexだけでは、
予約情報をデータベースへ保存するなどの業務処理は行いません。

実際に処理を行う場合はLambdaなどと連携し、
取得したスロットの値を利用して後続処理を実装します。

ポイント

  • ユーザーの目的をインテントとして判断できる
  • スロットを使って必要な情報を会話形式で取得できる
  • テキストや音声を利用した会話型インターフェースを構築できる
  • Lambdaなどと連携して実際の業務処理へつなげられる

作成したリソースを削除する

ハンズオン終了後、今回作成したボットが不要な場合は、
Amazon Lexのコンソールから削除します。

また、Amazon Lex用にIAMロールやLambdaなどを別途作成した場合は、
それらについても不要か確認して削除します。

確認ポイント
  • 作成したAmazon Lexボットが不要になっていないか
  • 検証用のIAMロールが残っていないか
  • Lambdaを作成した場合は不要になっていないか
  • データベースなど他のAWSリソースを作成していないか

まとめ

今回は、Amazon Lexを利用して簡単な予約受付チャットボットを作成しました。

今回のハンズオンでは、次の内容を確認しました。

  • Amazon Lexでボットを作成する
  • インテントでユーザーの目的を定義する
  • サンプル発話でユーザーの発言例を登録する
  • スロットを利用して必要な情報を取得する
  • フルフィルメントで会話完了後の処理を設定する
  • フォールバックインテントで想定外の入力に対応する

Amazon Lex単体でも簡単なチャットボットを作成できますが、
Lambdaやデータベースなどと連携することで、
予約受付や問い合わせ対応などの実際の業務処理までつなげることができます。

この記事を書いた人

金山ゆう

yu_kanayama

26卒 AIクラウドセクション