Alexa Conversationsとは



Alexa Conversationsとは

Alexa Conversationsは、ダイアログ管理に対するディープラーニングベースのアプローチであり、Alexaで人間のように自然な音声エクスペリエンスを作成できます。スキルはAlexa Conversationsによって幅広いフレーズや予期しない会話フローに応答できるようになり、Alexaとユーザーの間で行われる長い双方向の対話を維持するための会話メモリがスキルに提供されます。

Alexa Conversationsを使用してスキルのエクスペリエンス全体を管理するスキルを作成することや、Alexa Conversationsで既存のスキルを拡張することもできます。たとえば、スキルで既存のコードを使用して単純な対話を処理することができるほか、スキルではユーザーとの双方向の会話を多く含むタスクについて、ダイアログ管理をAlexa Conversationsにデリゲートできます。

Alexa Conversationsを使用する理由

Alexa Conversationsによって、ユーザーはAlexaとの自然な会話を体験できるようになります。Alexa ConversationsではAIを利用して、手動で構築できるエクスペリエンスと幅広い潜在的会話の範囲との間のギャップを埋めます。開発者は、予想される対話を示すサンプルダイアログを提供し、必要なAPIを呼び出すためのテンプレートを提供します。AlexaのAIは、さまざまなフレーズのバリエーションとダイアログパスを推定します。AlexaのAIは、ユーザーがスキルを使用する場合に考えられるすべて方法を識別してコーディングするのではなく、順列を作成して、ダイアログの状態管理、コンテキストのキャリーオーバー、修正を自動的に処理します。

Alexa Conversationsは、映画の選択、食べ物の注文、予約をする場合のように、ユーザーがスキルに自然に話しかけたときに、会話が予期しない方向に向かう可能性があるユースケースで特に便利です。たとえば、ピザを注文する場合、ユーザーは次のように行動します。

  • 一度に複数の質問に答える(「Mサイズ、トッピングは2つ」
  • 質問する際に、以前に提供した情報をAlexaがトラッキングしていることを期待する(「それは何人分ですか?」
  • 値をリストする(「ペパロニとピーマン」
  • 修正する(「Lサイズにしてください」

Alexa Conversationsは、機械学習を通じてこのような類の複雑で幅広いバリエーションの会話を処理できます。開発者はハードコーディングされた会話パスを設定するのではなく、理想的なユーザーエクスペリエンスをダイアログとして指定します。AlexaのAIは追加の会話パスを推定し、さまざまな予期しないダイアログ、異なるパス、および非線形ユーザーフローの処理について学習します。Alexa Conversationsはダイアログのコンテキストをモニタリングし、スキルでタスクを完了するために必要な情報を収集する自然な会話エクスペリエンスを生み出します。Alexa Conversationsは、必要な情報が収集された場合のみにスキルコードを呼び出します。不足しているギャップを埋めるか、新しい入力を処理するようにモデルを再トレーニングして、スキルの再認定を受けることができます。

ワークフローの設計、ダイアログの記述、ユーザーの期待値の設定に役立つベストプラクティスについては、Alexa Conversationsを使用したデザインを参照してください。

Alexa Conversationsの機能

Alexa Conversationsは、スキルを対象に以下の機能を実行します。

  • 状態管理 - Alexa音声プロンプトを選択してレンダリングし、ユーザーを次の状態に誘導します。
  • ダイアログのバリエーション - 不足している情報を収集するためにユーザーにフォローアップの質問をします。
  • ユーザー主導の修正 - ユーザーによる選択の変更を処理します。
  • コンテキストのキャリーオーバー - ユーザーが他のオプションを繰り返さなくても、オプションを更新します。

Alexa Conversationsがこれらの機能を実行するしくみの詳細については、Alexa Conversationsのしくみを参照してください。

Alexa Conversationsを使用してスキルをビルドする必要があるかどうか

以下の場合は、Alexa Conversationsの使用を検討してください。

  • Alexa Conversationsは、Node.jsまたはPythonの使用経験があり、人工知能と機械学習の基本的な構成概念を理解している、音声サービスの開発者に最適です。
  • スキルが目的ベースの機能を提供する場合。交通機関の予約、チケットの購入、おすすめの提案、食品の注文など。
  • スキルにユーザーとの自由な形式の双方向の対話が含まれており、ユーザーの目的を達成するためにいくつかの複雑なデータポイントを収集する必要がある場合。
  • ユーザーにとって柔軟で自然なエクスペリエンスを実現するにあたり、スキルコード内ではすべての潜在的なユーザー対話と状態を管理できない場合。
  • すべてのユーザー対話の状態を管理するためのコードを記述する手間を省きたい場合。

また、インテントベースのダイアログ管理を使用してスキルを構築することもできます。詳細については、スキルの対話モデルの作成と、必要な情報を収集、確認するためにダイアログを定義するを参照してください。以下の場合は、インテントベースのダイアログ管理を使用してください。

  • 事前に決定されたダイアログパスと、ユーザーが従うべき特定のワークフローがスキルに必要な場合。
  • スキルコード内でターンごとの状態管理を完全に制御したい場合。

Alexa Conversationsを使用してスキルを作成する方法

Alexa Conversationsスキルを作成および操作するには、次の2つの方法のいずれかを使用します。

Alexa Conversationsからスキルへのリクエスト

Alexa Conversationsは、ランタイムに人工知能を活用し、ダイアログ管理モデルに基づいてユーザーとの会話を管理します。Alexaがスキルエンドポイントを呼び出すのは、APIがリクエストを実行するために必要なすべての情報をユーザーが指定した場合のみです。スキルエンドポイントは、AWS Lambdaまたはウェブサーバーでホストできます。Alexaがスキルを呼び出す場合、JSONリクエストと応答は、カスタムスキルのJSONインターフェースのリファレンスで説明されている形式と似たものになります。

スキルへのリクエストはインテントリクエストと似ていますが、Dialog.API.Invoked型です。スキルからの応答には、ステータスと戻り値が含まれます。これらの値には、Alexa Conversationsが応答テンプレートを選択してデータ入力し、後続のダイアログターンとAPI呼び出しに通知するためのデータが含まれています。Alexa Conversationsのリクエストと応答の形式の詳細については、Alexa Conversationsのリクエストと応答のリファレンスを参照してください。スキルがAlexa Conversationsからの呼び出しを処理する方法の詳細については、Alexa ConversationsのAPI呼び出しの処理を参照してください。

既存のスキルにAlexa Conversationsを追加する

既存のスキルのダイアログ管理の一部または全部をAlexa Conversationsで処理することができます。インテントベースのダイアログ管理からAlexa Conversations(またはその逆)に切り替えるには、スキルコードからDialog.DelegateRequestディレクティブを送信します。スキルが明示的に別のDialog.DelegateRequestディレクティブを送信すると、デリゲートが再び切り替わります。デリゲートを引き渡すときには、ダイアログの状態などのセッションアトリビュートを保存できます。詳細については、既存のスキルにAlexa Conversationsを追加する手順およびAlexa Conversationsとの間でのダイアログ管理の引き渡しを参照してください。