チェックポイント
Build an Agent
/ 20
Create your first intent
/ 30
Create custom intent
/ 20
Use slot-filling
/ 30
エージェント向けの会話フローの設計
GSP791
概要
Contact Center AI を使用すると、電話の転送率を改善し、処理時間を短縮できるため、顧客満足度と業務効率が向上します。また、全体的な運用をより迅速かつ効果的にできます。
このラボでは、Dialogflow を使用して会話インターフェースを作成し、次の操作方法について学習します。
- エンドユーザーのインテントを設計する
- オンライン旅行代理店向けの会話エージェントを作成する
- オンライン旅行代理店のユースケースに対応するインテントを定義し、顧客からの一般的なクエリに対応できるようにする
ラボのシナリオ
ネット プロモーター スコアと顧客満足度を向上させるための計画を作成するように依頼されました。Contact Center AI は、電話の応答率の向上、複雑なメニュー システムの廃止、処理時間の短縮に役立ちます。Contact Center AI の中核となるのはその会話力です。人間と同じような対応ができるので、AI を活用した会話の可能性が広がります。
Dialogflow は Contact Center AI の主要なコンポーネントの 1 つです。顧客の意図を把握し、顧客に伝えるべきことと次にすべきことを判断します。電話の応答率の向上と処理時間の短縮に役立つため、ネット プロモーター スコアと顧客満足度の向上につながります。
Dialogflow のコンポーネント
エージェント
Dialogflow エージェントは、エンドユーザーと会話を行う仮想エージェントであり、人間が使う言語のニュアンスを理解する自然言語理解モジュールです。Dialogflow はエンドユーザーの会話におけるテキストや音声を、アプリまたはサービスが理解できる構造化データに変換します。このラボでは、システムに求められている会話を処理するように Dialogflow エージェントを設計して作成します。
Dialogflow エージェントは、コールセンターの担当者と似ています。コールセンターの担当者の研修と同じように、予想される会話のシナリオに対処できるように Dialogflow エージェントのトレーニングを行いますが、完璧にする必要はありません。
インテント
インテントは、1 回の会話ターンにおけるエンドユーザーの意図を分類します。各エージェントで多数のインテントを定義し、複数のインテントを組み合わせて会話全体を処理します。エンドユーザーが書いたテキストや会話音声を「エンドユーザー表現」と呼び、Dialogflow はエンドユーザー表現をエージェント内の最適なインテントにマッチングさせます。インテントのマッチングは「インテント分類」とも呼ばれます。
たとえば、天気に関するエンドユーザーの質問を認識して回答する天気エージェントを作成するとします。この場合、天気予報の質問に対応するインテントを定義します。エンドユーザーが「今日の天気は?」と聞くと、Dialogflow はエンドユーザー表現を天気予報のインテントにマッチングさせます。また、インテントを定義してエンドユーザー表現から有用な情報(天気予報の時刻や場所など)を抽出することもできます。この抽出したデータは、エンドユーザーからの天気に関するクエリにシステムが回答するうえで重要です。
基本的なインテントには次のものが含まれます。
- トレーニング フレーズ: エンドユーザーの会話に含まれる可能性があるフレーズのサンプルです。エンドユーザー表現がこれらのフレーズのいずれかと似ている場合、Dialogflow はインテントにマッチングします。Dialogflow に組み込まれている ML は他の類似のフレーズまで拡大して解釈するため、すべての例を定義する必要はありません。
- アクション: 各インテントに対するアクションを定義します。インテントが一致すると、Dialogflow はシステムにアクションを提供します。ユーザーはそれを使用して、システムで定義済みの特定のアクションをトリガーできます。
- パラメータ: 実行時にインテントが一致すると、Dialogflow はエンドユーザー表現から抽出した値をパラメータとして渡します。各パラメータには「エンティティ タイプ」というタイプがあります。エンティティ タイプは、抽出するデータの種類を定義するものです。未加工のエンドユーザー入力とは異なり、パラメータは構造化データです。ロジックを実行する際やレスポンスを生成する際に、パラメータを簡単に使用することができます。
- レスポンス: エンドユーザーに返すテキストまたは音声によるレスポンス、あるいは視覚的なレスポンスを定義します。エンドユーザーに回答したり、詳細を質問したり、会話を終了したりすることができます。
次の図は、インテントのマッチングとエンドユーザーへのレスポンスの基本的なフローを示しています。
エンティティ
インテントの各パラメータには「エンティティ タイプ」と呼ばれるタイプがあります。エンティティ タイプは、エンドユーザーから抽出するデータの種類を定義するものです。
Dialogflow には、多数の一般的なデータタイプに対応する事前に定義されたシステム エンティティが用意されています。たとえば、日付、時刻、色、メールアドレスなどをマッチングするためのシステム エンティティがあります。カスタムデータに対応する独自のカスタム エンティティを作成することもできます。
コンテキスト
Dialogflow のコンテキストは、自然言語のコンテキストと似ています。たとえば、誰かが「それはオレンジです」と言った場合、「それ」が何を指しているのかを理解するためにコンテキストが必要になります。これと同じように、Dialogflow がそのようなエンドユーザー表現を適切なインテントにマッチングさせて処理するためには、コンテキストが必要になります。
コンテキストを使用すると、会話のフローを制御できます。入力コンテキストと出力コンテキストを指定することで、インテントのコンテキストを設定できます(入力コンテキストと出力コンテキストは文字列形式の名前で指定します)。インテントが一致すると、そのインテント用に設定済みの出力コンテキストがアクティブになります。コンテキストが有効な場合、Dialogflow はその時点でアクティブなコンテキストに対応する入力コンテキストを使用して、構成済みのインテントに適切にマッチングできるようになります。
フォローアップ インテント
フォローアップ インテントを使用すると、インテントのコンテキストのペアが自動的に設定されます。フォローアップ インテントは、関連する親インテントの子です。フォローアップ インテントを作成すると、出力コンテキストが自動的に親インテントに追加され、同じ名前の入力コンテキストがフォローアップ インテントに追加されます。前の会話ターンで親のインテントが一致した場合にのみフォローアップ インテントが一致します。複数階層のネスト構造でフォローアップ インテントを作成することもできます。
Dialogflow には、「はい」、「いいえ」、「キャンセル」などの一般的なエンドユーザーの応答に対応する、事前に定義されたフォローアップ インテントが数多くあります。カスタムの応答を処理する独自のフォローアップ インテントを作成することもできます。
統合のためのフルフィルメント
デフォルトでは、エージェントは一致したインテントに静的レスポンスで応答します。いずれかの統合オプションを使用している場合は、フルフィルメントを使用して動的にレスポンスを返すことができます。インテントのフルフィルメントを有効にすると、Dialogflow は定義済みのサービスを呼び出してインテントに応答します。たとえば、エンドユーザーが金曜日にヘアカットの予定を入れる場合、サービスはデータベースをチェックし、金曜日の空き状況をエンドユーザーに返します。
各インテントには、フルフィルメントを有効にするための設定があります。システムによるアクションや動的レスポンスを必要とするインテントの場合は、そのインテントでフルフィルメントを有効にします。フルフィルメントが有効になっていないインテントに一致した場合、Dialogflow はそのインテントで定義されている静的レスポンスを使用します。
フルフィルメントが有効になっているインテントに一致した場合、Dialogflow はそのインテントに関する情報とともに Webhook サービスにリクエストを送信します。システムは必要なアクションを実行し、以降の処理方法に関する情報を Dialogflow に返します。次の図は、フルフィルメントの処理フローを示しています。
インテントの設計
5 分間時間をとって、ラボのユースケース用のインテントを書き出してください。ここで重要なのは、インテントに関連するトレーニング フレーズです。このユースケースでエンドユーザーが言う可能性のあるフレーズの例を次に示します。
インテント: 予約の名前を変更する
トレーニング フレーズ:
- 旅行プランの名前を変更したい
- 予約の名前を変更してください
- 名前を変更してください
- ホテルの予約の名前を変更したい
他に考えられるフレーズを書き出してください。ここで重要なのは、電話の応答率の向上、複雑なメニュー システムの廃止、処理時間の短縮を実現することです。Contact Center AI にこれらのインテントに対応させることで、この目的を達成できます。
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。 -
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}} [ラボの詳細] パネルでも [ユーザー名] を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}} [ラボの詳細] パネルでも [パスワード] を確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。 -
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
タスク 1. API を有効にする
-
コンソールのナビゲーション メニューから [API とサービス] に移動します。
-
[API とサービスの有効化] をクリックします。
-
Dialogflow を検索します。
-
[Dialogflow API] をクリックし、API が有効でない場合は、[有効にする] をクリックします。
タスク 2. Dialogflow エージェントを作成する
エージェントに「pigeon-travel」という名前を付けます。
-
Dialogflow コンソールを開きます。
-
必要に応じて、まず Google でログインするボタンをクリックし、このラボにログインしたときの認証情報を選択します。[Allow](許可)をクリックします。
-
利用規約に同意します。
-
[Create Agent](エージェントを作成)をクリックします。
-
エージェントの情報を追加します。
- Agent Name(エージェント名):
pigeon-travel
- Default Time Zone(デフォルトのタイムゾーン):
America/Denver
- Google Project(Google プロジェクト): ラボのプロジェクト ID を使用
- [Create(作成)] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Dialogflow コンソール メニュー
Dialogflow コンソールを確認します。左側にはメニュー パネルがあります。小さな画面で作業していてメニューが表示されていない場合は、左上にあるナビゲーション メニュー ボタン()をクリックします。設定ボタンをクリックすると、現在のエージェントの設定が表示されます。
ページの中央には、エージェントのインテントのリストが表示されます。Dialogflow エージェントにはデフォルトで 2 つのインテントがあります。エンドユーザーが言っていることがわからないときに、エージェントは Default Fallback Intent(デフォルトのフォールバックインテント)にマッチングさせます。Default Welcome Intent(デフォルトのウェルカム インテント)は、ユーザーに挨拶をします。これらのインテントは、変更を加えてカスタマイズすることができます。
右側は Dialogflow のシミュレータです。メッセージを音声または文字で入力して、エージェントをテストすることができます。
エージェントに問い合わせる
エージェントは NLU(自然言語理解)モジュールと言えます。エージェントをアプリ、プロダクト、またはサービスに組み込んで、ユーザーからの自然言語でのリクエストを実用的なデータに変換することができます。
エージェントをテストする
- 右側のシミュレータで、[Try it now](今すぐ試す)に「こんにちは
」と入力して Enter キーを押します。
これで Dialogflow エージェントに向かって話したことになります。Default Welcome Intent(デフォルトのウェルカム インテント)は、基本的な挨拶を理解できるように事前に構成されており、一般的なレスポンスを返します。
ここで、一般的な挨拶のレスポンスを自己紹介に変更します。
- [Default Welcome Intent(デフォルトのウェルカム インテント)] の [Responses(レスポンス)] で、事前に定義されているレスポンス(「こんにちは」や「どうも」など)をすべて削除し、次のレスポンスを追加します。
こんにちは。こちらは Pigeon Travel です。予約や予約の変更をお手伝いします。どのようなご用件でしょうか。
こんにちは。予約や予約の変更をお手伝いします。ご用件をお聞かせください。
-
[Save](保存)をクリックします。
-
エージェントのシミュレータに「こんにちは」または「やあ」と入力してレスポンスを確認します。
同じように、Default Fallback Intent(デフォルトのフォールバック インテント)のレスポンスもカスタマイズできます。
デフォルトのインテントのほかに、このユースケースの特定のクエリに対応するためのカスタム インテントが必要になります。次は、独自のインテントを作成します。
タスク 3. インテントを作成する
Dialogflow はインテントを使用してユーザーの意図を分類します。インテントではトレーニング フレーズを定義します。トレーニング フレーズとは、ユーザーがエージェントに話しかける可能性のあるフレーズのサンプルです。たとえば、予約の名前の変更を希望するユーザーの場合は「旅行プランの名前を変更したい」、「予約の名前を変更する必要がある」、「予約の名前を変更できますか」などと話しかける可能性があります。これらのクエリはすべて異なりますが、「予約の名前を変更したい」という意図は同じです。
このクエリに対応するために、name.reservation
インテントを作成します。
-
左側のメニューで [Intents](インテント)の横にある ➕ をクリックします。
-
[Intent name(インテント名)] に名前「name.reservation」を入力します。
-
[Training Phrases(トレーニング フレーズ)] で [Add Training Phrases(トレーニング フレーズを追加)] をクリックし、次の各フレーズを入力して毎回 Enter キーを押します。
- 旅行プランの名前を変更したいです
- 予約の名前を変更できますか
- 予約の名前を変更する必要があります
- ホテルの予約の名前を変更したいです
-
[Responses](レスポンス)の [Text Responses](レスポンスのテキスト)の下にあるテキスト フィールドに「承知いたしました。予約の名前の変更をお手伝いします。
」というレスポンスを入力します。
-
[Save(保存)] をクリックします。 画面の右下に「Agent Training started」や「Agent Training completed」というメッセージが表示されることがあります。これは、追加したフレーズに基づいて Dialogflow がエージェント モデルを再トレーニングしていることを示しています。
-
トレーニングが完了したら、画面右側のシミュレータで「予約の名前を変更できる?」とクエリを入力してテストします。
クエリに対してエージェントが適切なレスポンスを返します。トレーニング フレーズと少し異なるクエリでも、適切なインテントにマッチングされているのがわかります(この場合はシミュレータの出力に表示されているように name.reservation インテントにマッチング)。
Dialogflow はトレーニング フレーズを ML モデルのサンプルとして使用して、ユーザーからのクエリを適切なインテントにマッチングさせます。ML モデルは、エージェント内のすべてのインテントに対してクエリを確認し、それぞれのインテントにスコアを付けます。スコアが最も高いインテントが、一致するインテントとなります。スコアが最も高いインテントでも、スコアが非常に低い場合は、フォールバック インテントが一致するインテントとなります。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 4. エンティティを使用してデータを抽出する
ここでは、ユーザーのクエリからデータを抽出して予約の名前を変更する方法について学習します。この例では、エージェントはユーザーの名前だけでなく、予約番号と変更後の名前も知る必要があります。
インテントにパラメータを追加する
パラメータはユーザーのクエリから抽出する言葉やフレーズのことで、エージェントが適切なレスポンスを返すうえで重要な情報です。
-
左側のメニューで [Intents(インテント)] をクリックします。
-
[name.reservation] をクリックします。
-
[Responses(レスポンス)] の [Text Response(レスポンスのテキスト)] でメッセージを次のように変更します。「
承知いたしました。予約の名前の変更をお手伝いします。お客様のお名前(姓)を教えてください。
」 -
[SAVE(保存)] をクリックします。
-
左側のメニューで [Intents(インテント)] をクリックします。
-
[name.reservation] インテントにカーソルを合わせて [Add follow-up intent](フォローアップ インテントを追加)をクリックし、[custom](カスタム)を選択します。
-
新しく作成したフォローアップ インテント [name.reservation - custom] をクリックします。
-
インテント ページの上部で、インテント名を「name.reservation-getname」に変更します。
-
次のようになります。
- 次のトレーニング フレーズを追加します。
- 佐藤
- 吉田
- 安部
-
[Action and parameters](アクションとパラメータ)で、[Entity](エンティティ)を「
@sys.given-name
」に変更します。 -
[Save](保存)をクリックします。
-
パラメータの値は、レスポンスで使用できます。この場合は、レスポンスで
last-name
を使用できます。last-name はエージェントへのクエリでエンドユーザーが回答した名前に置き換えられます。 -
[Responses(レスポンス)] にレスポンス「
$last-name様、ご利用ありがとうございます。
」を追加し、[Save(保存)] をクリックします。 -
エージェントのトレーニングが完了したら、左側のメニューで [Intents(インテント)] をクリックします。
-
[name.reservation] インテントのプルダウンをクリックします。
-
次のようになります。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
パラメータのデータを使用する
テストする
- 右側のシミュレータ パネルでエージェントへのクエリとして「予約の名前を変更したい
」と入力します。
シミュレータで名前を聞かれます。
- クエリで姓を入力すると、ユーザーに合わせてカスタマイズされたメッセージが表示されます。
名や予約番号などの他のパラメータの値も同様の方法で抽出する必要があります。
タスク 5. スロット充填を使用する
姓のパラメータを含めるようにレスポンスを更新しましたが、すべての情報をユーザーから確実に取得するには、「スロット充填」を使用します。ユーザーから情報が提供されていない場合、エージェントはユーザーに情報を求める必要があります。
-
左側のメニューで [Intents(インテント)] をクリックします。
-
[name.reservation] インテントでプルダウンを展開します。
-
インテント [name.reservation-getname] をクリックします。
-
[Actions and parameters](アクションとパラメータ)で次のパラメータを入力します。
- Required(必須): オン
- Parameter name(パラメータ名): reservationnumber
- Entity(エンティティ): @sys.number
- Value(値): $reservationnumber
- is list(リスト): オフ
- prompts(プロンプト): 予約番号を教えてください
続いて、次のパラメータを追加します。
- Required(必須): オン
- Parameter name(パラメータ名): newname
- Entity(エンティティ): @sys.person
- Value(値): $newname
- is list(リスト): オフ
- Prompts(プロンプト): 予約の新しい名前を教えてください
-
完了すると、次のようになります。
-
[Responses](レスポンス)で次のようにレスポンスのテキストを変更し、[Save](保存)をクリックします。「$last-name様、ご利用ありがとうございます。
予約番号 $reservationnumber の名前を$newname様に変更いたしました。
」 -
シミュレータで「予約の名前を変更したい
」と入力し、その後もエージェントの質問に答えて動作を確認します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 6. エージェントをエクスポートする
ここでは、エージェントを zip 形式のファイルにエクスポートし、次のラボを開始するときにインポートできるようにします。エクスポートしてインポートすることで、構成したインテントとエンティティを再利用することができます。
-
左側のメニューでエージェント名の横にある設定(歯車)アイコン ⚙ をクリックします
-
設定ページが開いたら、[Export and Import](エクスポートとインポート)タブに移動します。
-
[EXPORT AS ZIP](ZIP 形式でエクスポート)をクリックします。エージェントがローカル zip ファイルとしてダウンロードされます。
お疲れさまでした
Dialogflow を使用して会話インターフェースを作成し、エンドユーザーのインテントを設計する方法について学習しました。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2023 年 10 月 27 日
ラボの最終テスト日: 2023 年 10 月 30 日
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。