会話モデルを構築する

会話モデルでは、ユーザーがアクションに対して何を言うことができるかと、アクションがユーザーにどのように応答するかを定義します。会話モデルの主な構成要素は、インテントタイプシーンプロンプトです。アクションの 1 つが呼び出されると、Google アシスタントがそのアクションにユーザーを引き継ぎ、このアクションは、会話モデルに基づいてユーザーとの会話を開始します。これは、次の要素で構成されます。

  • 有効なユーザー リクエスト - アクションに対してユーザーが発話できる内容を定義するには、アシスタント NLU を拡張するインテントのコレクションを作成し、アクションに固有のリクエストを理解できるようにします。各インテントでは、インテントに一致するユーザーの発話を説明するトレーニング フレーズを定義します。アシスタント NLU は、これらのトレーニング フレーズを拡張して類似したフレーズを含めます。これらのフレーズの集計は、インテントの言語モデルに反映されます。

  • アクション ロジックとレスポンス - インテントを処理し、必要なロジックを実行して、ユーザーに返すプロンプトを生成します。

図 1. 会話モデルは、ユーザー エクスペリエンスを定義するインテント、タイプ、シーン、プロンプトで構成されます。呼び出し可能なインテントは、会話内のマッチングでも有効です。

有効なユーザー リクエストを定義する

ユーザーがアクションに話しかけることができる内容を定義するには、インテントとタイプを組み合わせて使用します。ユーザー インテントとユーザータイプを使用すると、独自の言語モデルでアシスタント NLU を拡張できます。システム インテントとシステム タイプを使用すると、組み込みの言語モデルとイベント検出を利用できます。たとえば、ユーザーがアクションを終了させたい場合や、アシスタントが入力をまったく検出しない場合などです。

ユーザー インテントを作成する

ユーザー インテントを使用すると、ユーザーがアクションに話しかける可能性のあるフレーズを、独自のトレーニング フレーズとして定義できます。アシスタント NLU はこれらのフレーズを使用して、ユーザーが発話する内容を理解するようにトレーニングします。ユーザーのインテントの言語モデルと一致する言葉が発話があると、アシスタントはインテントを照合してアクションに通知します。これにより、ロジックを実行してユーザーに応答できます。

システム インテントを作成する

システム インテントを使用すると、ユーザーがアクションを終了したいときや、ユーザー入力がタイムアウトしたときなどの一般的なイベントに対して、事前定義済みの言語モデルでインテントを利用できます。システム インテントを作成するには:

カスタムタイプを作成する

カスタム型を使用すると、独自の型仕様を作成して、単一のキーにマッピングする必要がある一連の値を理解するように NLU をトレーニングできます。

カスタムタイプを作成するには:

アクション ロジックとレスポンスを作成する

アシスタント NLU は、ユーザー リクエストをインテントと照合して、アクションがシーンで処理できるようにします。シーンは、会話中にイベントを処理できる強力なロジック エグゼキュータです。

シーンを作成する

以下のセクションでは、シーンを作成し、各シーンのライフサイクル ステージの機能を定義する方法について説明します。

シーンを作成するには:

1 回限りの設定を定義する

シーンが初めてアクティブになったときは、開始時のステージで 1 回限りのタスクを実行できます。On Enter ステージは 1 回だけ実行され、シーンの実行ループ内で実行されない唯一のステージです。

条件を確認する

条件を使用すると、スロットフィル、セッション ストレージ、ユーザー ストレージ、ホーム ストレージのパラメータを確認して、シーン実行フローを制御できます。

スロットフィルを定義する

スロットを使用すると、ユーザー入力から型付きパラメータを抽出できます。

スロット値のマッピング

多くの場合、以前のインテントの一致には、対応するシーンのスロット値を部分的または完全に埋めるパラメータが含まれることがあります。この場合、スロット名がインテント パラメータ名と一致する場合、インテント パラメータによって埋められたすべてのスロットがシーンのスロットフィルにマッピングされます。

たとえば、ユーザーが「ラージ バニラ コーヒーを注文したい」と話しかけて飲み物を注文するインテントに一致した場合、シーンが同じスロットを定義していれば、サイズ、フレーバー、飲料タイプの既存のスロットが、対応するシーンに埋まっていると見なされます。

入力を処理する

この段階では、アシスタント NLU にユーザー入力とインテントをマッチングさせることができます。目的のインテントをシーンに追加することで、インテント マッチングのスコープを特定のシーンに設定できます。これにより、特定のシーンがアクティブなときに特定のインテントを一致させるようにアシスタントに指示することで、会話フローを制御できます。