Amazon Lex で構築する会話型チャットボット - インテント設計と Lambda 統合

自然言語理解 (NLU) エンジンでインテントとスロットを定義し、Lambda 連携でバックエンド処理を実行する対話型ボットを構築する。多言語対応とストリーミング会話 API の活用法を解説します。

Lex の概要

Amazon Lex は自然言語理解 (NLU) と自動音声認識 (ASR) を組み合わせた対話型インターフェースの構築サービスです。Alexa と同じ深層学習技術を基盤としており、テキストと音声の両方で対話型ボットを構築できます。現行の Lex V2 は V1 から大幅に機能が強化され、複数言語のサポート、ストリーミング会話 API、改善されたスロット解決ロジックを提供します。チャットボット、IVR (自動音声応答)、カスタマーサポートの自動化など、ユーザーとの自然言語による対話が必要なあらゆるユースケースに適用できます。

インテントとスロットの設計

Lex のボットはインテント (ユーザーの意図) とスロット (パラメータ) で構成されます。たとえば「ホテル予約ボット」では、BookHotel インテントに CheckInDate、Nights、RoomType のスロットを定義します。各インテントにはサンプル発話 (「来週の金曜日から 2 泊で予約したい」「シングルルームを予約」) を登録し、NLU エンジンがユーザーの入力をインテントにマッピングします。スロットタイプは組み込み型 (AMAZON.Date、AMAZON.Number、AMAZON.City) とカスタム型を使い分けます。確認プロンプトでスロット値をユーザーに確認し、フルフィルメントで Lambda 関数を呼び出してバックエンド処理 (予約 API の呼び出し、DB への書き込み) を実行します。会話フローのデバッグにはテストウィンドウを使用し、インテントの認識精度とスロットの解決状況をリアルタイムで確認します。

Lambda 連携と外部統合

Lex はダイアログコードフックと フルフィルメントコードフックの 2 種類の Lambda 連携を提供します。ダイアログコードフックは各ターンで呼び出され、スロット値のバリデーションや動的なプロンプト生成に使用します。フルフィルメントコードフックはすべてのスロットが埋まった後に呼び出され、実際のビジネスロジック (予約処理、注文確定) を実行します。Amazon Connect との統合で、コンタクトセンターの IVR に Lex ボットを組み込み、電話での自動応答を実現します。Twilio や Facebook Messenger などの外部チャネルとの統合も API 経由で可能です。Kendra との統合で、FAQ ドキュメントから自動的に回答を検索する機能も提供されます。 対話型 AI の設計パターンについてはAmazon の関連書籍も参考になります。

Lex の料金

Lex V2 の料金はリクエスト数に基づく従量課金です。テキストリクエストは 1,000 件あたり約 0.75 ドル、音声リクエストは 1,000 件あたり約 4.00 ドルです。ストリーミング会話 API は音声の秒数に応じた課金で、1 秒あたり約 0.0002 ドルです。無料利用枠として、最初の 12 か月間はテキストリクエスト 10,000 件/月、音声リクエスト 5,000 件/月が無料です。Connect との統合で使用する場合、Lex の料金に加えて Connect の通話料金が別途発生します。

まとめ

Amazon Lex は Alexa と同じ NLU/ASR 技術を基盤とした対話型ボット構築サービスです。インテントとスロットの設計で会話フローを定義し、Lambda 連携でバックエンド処理を実行します。Connect 統合による音声ボット、Kendra 統合による FAQ 自動応答など、多様なチャネルとサービスとの連携で対話型インターフェースを構築します。