メガ エージェント

サブエージェントと呼ばれる複数の Dialogflow エージェントをメガ エージェントと呼ばれる 1 つのエージェントに結合できます。メガ エージェントに対してインテント検出リクエストを実行すると、すべてのサブエージェントが検出され、サブエージェントからの最適なレスポンスが返されます。

メガ エージェントを使用する理由はさまざまです。

  • 管理性の向上: 複数のチームで 1 つのエージェントを構築している場合は、チームごとにサブエージェントを 1 つずつ担当させることで、変更の競合が少な簡素化されます。
  • インテントの増加: エージェントのインテント数が多い場合は、インテント数の制限に近づくことがあります。この場合、複数のサブエージェントと 1 つのメガ エージェントを作成できます。

制限事項

メガ エージェントには次の制限が適用されます。

  • すべてのエージェントと同様に、作成できるエージェントは GCP プロジェクトごとに 1 つのみであるため、サブエージェントとメガ エージェントはそれぞれの GCP プロジェクトに関連付けられます。
  • メガ エージェントには最大 10 個のサブエージェントを設定できます。
  • Small Talk はメガ エージェントでは機能しません。
  • サブ エージェントのインテントの優先度は、メガ エージェントにリクエストを送信するときのインテント照合には影響しません。
  • パートナー組み込みのテレフォニー統合(AudioCodesAvayaGenesysSignalWireVoximplant)はサポートされていません。

サブエージェントの作成

サブエージェントは他のエージェントと同様に作成します。エージェントのビルドに必要なインテント、コンテキスト、エンティティなどを追加します。

メガ エージェントの作成または更新

Dialogflow コンソールを使用して、メガ エージェントを作成し、サブエージェントにリンクできます。

Dialogflow は、メガ エージェントのほとんどのエージェント設定を考慮し、メガ エージェントにデータを記録します。例:

ウェブ UI

1. メガ エージェントの作成

  1. Dialogflow コンソールに移動します。
  2. 左側のサイドバー メニューで [Create Agent] をクリックします(すでに他のエージェントをお持ちの場合は、エージェント名をクリックし、一番下までスクロールして [Create new agent] をクリックします)。
  3. エージェントの名前、デフォルトの言語、デフォルトのタイムゾーン、GCP プロジェクトを入力します。
  4. [Agent Type] を [Mega Agent] に設定します。
  5. [Create] ボタンをクリックします。

2. サブエージェントの追加と管理

  1. 左側のサイドバー メニューで [Sub Agents] をクリックします。
  2. メガ エージェントに追加するサブエージェントを選択します。
  3. サブエージェントの [Environment] はデフォルトで [Draft] に設定されていますが、必要に応じて更新できます。
  4. サブエージェントに関連付けられた [Knowledge Base] を使用する場合は、フィールドを [Excluded] から [Included] に変更します。
  5. [保存] をクリックします。

ロールの設定

メガ エージェントの使用計画に応じて、サブ エージェント プロジェクトで特定のロールを持つメンバーを設定する必要があります。これにより、メガ エージェントはサブ エージェントを呼び出す権限を持つことができます。これらのロールを設定するには、次の手順に従います。

  1. 通常どおりにメガ エージェントとサブエージェントの GCP プロジェクトを作成し、それぞれに対して「Dialogflow API」が有効になっていることを確認します。
  2. API を使用してメガ エージェントとやり取りする場合は、メガ エージェント API 呼び出しに使用するサービス アカウントを各サブ エージェント プロジェクトのメンバーとして追加する必要があります。また、適用されるロールには、インテント呼び出しを検出する権限が必要です。このアクセス権は、プロジェクト所有者、プロジェクト編集者、Dialogflow API 管理者、Dialogflow API クライアントのロールに含まれています。このサービス アカウントのメールアドレスを取得するには:
    1. [IAM サービス アカウント] ページにアクセスします。
    2. メガ エージェントのプロジェクトを選択します。
    3. API 呼び出し用に作成したサービス アカウントを選択するか、目的のロールを持つ新しいサービス アカウントを追加します。設定手順に従って新しいサービス アカウントを作成し、秘密鍵をダウンロードします。
    4. 選択したサービス アカウントのメールアドレスをメモします。これは以下で必要になります。
  3. Dialogflow シミュレータを使用してメガ エージェントとやり取りする場合、メガ エージェント プロジェクト用に自動的に作成された dialogflow-alphanum@project-id.iam.gserviceaccount.com サービス アカウントは、すべてのサブ エージェント プロジェクトのメンバーである必要があり、適用されるロールには、インテント呼び出しを検出する権限が必要です。このアクセス権は、プロジェクト所有者、プロジェクト編集者、Dialogflow API 管理者、Dialogflow API クライアントのロールに含まれています。このサービス アカウントのメールアドレスを取得するには:
    1. Dialogflow コンソールにアクセスします。
    2. メガ エージェントを選択します。
    3. エージェント名の横にある設定 ボタンをクリックします。
    4. [General] タブの [Service Account] をご覧ください。サービス アカウントのメールアドレスをメモします。 これは以下で必要になります。
  4. メガ エージェントの統合を使用する場合、メガ エージェント プロジェクト用に自動的に作成された service-project-num@gcp-sa-dialogflow.iam.gserviceaccount.com サービス アカウントは、すべてのサブ エージェント プロジェクトのメンバーである必要があり、適用されるロールには、インテント呼び出しを検出する権限が必要です。このアクセス権は、プロジェクト所有者、プロジェクト編集者、Dialogflow API 管理者、Dialogflow API クライアントのロールに含まれています。このサービス アカウントのメールアドレスを取得するには:

    1. [IAM サービス アカウント] ページにアクセスします。
    2. メガ エージェントのプロジェクトを選択します。
    3. 以下のパターンに一致するサービス アカウントを見つけます。
      service-project-num@gcp-sa-dialogflow.iam.gserviceaccount.com
    4. 選択したサービス アカウントのメールアドレスをメモします。これは以下で必要になります。
  5. サブ エージェント プロジェクトごとに、上記で収集したメガ エージェント サービス アカウントをサブ エージェント プロジェクトのメンバーとして追加します。

    1. IAM メインページにアクセスします。
    2. サブエージェントのプロジェクトを選択します。
    3. メガ エージェントのサービス アカウントのメールアドレスをプロジェクトのメンバーとして追加し、目的のロールを付与します。

インテントの検出

インテントを検出するには、他のインテント検出リクエストと同様にリクエストを呼び出し、メガ エージェントのプロジェクト ID を使用します。Dialogflow はすべてのサブエージェントを考慮し、サブエージェントから最適なレスポンスが返されます。

たとえば、次のサブエージェントについて考えてみます。

サブエージェント インテント トレーニング フレーズ
注文 書籍 「書籍を購入したい」
「カートに書籍を追加する」
帽子 「帽子を買いたい」
「帽子が欲しい」
口座 残高 「残高は?」
「口座の残高は?」
住所 「住所を変更したい」
「引っ越しした」

エンドユーザーが「帽子を買いたい」と言うと、メガ エージェントに送信されたインテント検出リクエストの結果は、Orders エージェントの Hats インテントと一致します。

インテント検出リクエストに 1 つ以上のサブエージェントを指定するには、QueryParameterssubAgents フィールドを設定します。たとえば、このリクエストの REST JSON は次のようになります。

{
  "queryInput": {
    "text": {
      "text": "reserve a meeting room for six people",
      "languageCode": "en-US"
    }
  },
  "queryParams": {
    "subAgents": [
       {"project": "projects/sub-agent-1-project-id"},
       {"project": "projects/sub-agent-2-project-id"}
    ]
  }
}

イベントの呼び出し

Webhook サービスからイベントを呼び出すには、トリガーするインテントのサブエージェントを指定します。次のイベント名の形式を使用します。

sub-agent-project-id.event-name

たとえば、サブエージェントのプロジェクト ID が 123、目的のインテントのイベント名が alarm の場合、イベント名に 123.alarm を使用します。

イベントにサブエージェントを指定しない場合、イベントは以前一致したインテントを含むサブエージェントに返されます。

出力コンテキストの設定

Webhook サービスから出力コンテキストを設定するには、コンテキストが属するサブエージェントを指定します。形式は次のようにします。

projects/mega_agent_project_id/agent/sessions/session_id/contexts/sub_agent_project_id.context_name

たとえば、セッションが projects/mega_agent_project_id/agent/sessions/session_id で、プロジェクト ID sub_project_1 のサブエージェントに music_context という名前のコンテキストを設定する場合、次の名前の出力コンテキストを設定できます。

projects/mega_agent_project_id/agent/sessions/session_id/contexts/sub_project_1.music_context

コンテキスト名にサブエージェント接頭辞を指定しない場合、システムはそれをメガ エージェントのコンテキストとみなします。