チャットの要約 V1 カスタムモデル

Agent Assist の要約機能のカスタムモデルを使用すると、お客様固有のデータのみでトレーニングされたモデルを活用して、各会話の終了後にエージェントに会話の要約を提供できます。これは、カスタム セクションを使用した要約で詳しく説明されている大規模言語モデルによるカスタマイズとは異なります。エージェントは、この概要を使用して会話メモを作成し、エンドユーザーの通信履歴を把握できます。たとえば、会話の概要の出力は次のようになります。

カスタムの Agent Assist 要約モデルをインポートして、CCAI Insights の会話で使用することもできます。

始める前に

  1. データが必要な形式であることを確認します。サンプル データセットを使用するか、データセットを必要とせずに、サマライズ モデルのデモを使用して機能をテストすることもできます。

API を使用して要約モデルをトレーニングしてデプロイする

会話データセットを作成し、文字起こしをインポートする

ConversationDataset リソースの create メソッドを呼び出して、会話データセットを作成します。文字起こしデータを含む Cloud Storage バケットのパスを指定して、新しい会話データセットにインポートします。

リクエストの例:

{
  "displayName": "CONVERSATION_DATASET_NAME",
  "inputConfig": {
    "gcsSource": {
      "uris": ["gs://PATH_NAME/*"]
    }
  }
}

レスポンスには会話データセット ID が含まれます。レスポンスの例:

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.dialogflow.v2beta1.ConversationDataset",
    "name": "projects/PROJECT_ID/locations/global/conversationDatasets/CONVERSATION_DATASET_ID",
    "displayName": "CONVERSATION_DATASET_NAME",
    "createTime": "2022-06-16T23:13:22.627380457Z"
  }
}

会話モデルを作成する

ConversationModel リソースの create メソッドを呼び出して、要約会話モデルを作成します。各プロジェクトには、トレーニングに毎月最大 120 ノード時間の割り当てがあり、1 つのトレーニング ジョブを同時に実行できます。

必須フィールド:

  • datasets: モデルのトレーニングに使用した文字起こしデータを含む単一のデータセットを指定します。
  • summarizationModelMetadata: 空のオブジェクトに設定するか、フィールドに値を入力してデフォルトをオーバーライドします。

リクエストの例:

{
  "displayName": "CONVERSATION_DATASET_NAME",
  "datasets": [{
    "dataset": "projects/PROJECT_ID/locations/global/conversationDatasets/CONVERSATION_DATASET_ID"
  }],
  "summarizationModelMetadata": {
    "trainingModelType": "SUMMARIZATION_MODEL"
  },
  "languageCode": "en-US"
}

レスポンスは長時間実行オペレーションです。GetOperation API を使用してポーリングして完了を確認できます。トレーニングには数時間かかることがあります。レスポンスには、ステータスとモデル ID が返されます。

レスポンスの例:

{
  "name": "projects/PROJECT_ID/locations/global/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.dialogflow.v2beta1.CreateConversationModelOperationMetadata",
    "conversationModel": "projects/PROJECT_ID/locations/global/conversationModels/MODEL_ID",
    "state": "TRAINING",
    "createTime": "2022-06-16T23:27:50Z"
  }
}

会話モデルを評価する

モデルのトレーニングが完了したら、ListConversationModelEvaluations API を呼び出してモデルの品質を確認します。

ListConversationModelEvaluationsRequest で、確認するモデルの名前を指定します。

{
  "parent": "projects/cloud-contact-center-quality/locations/global/conversationModels/d3f2ca9f3e2c571a"
}

ListConversationModelEvaluationsResponse には、自動要約を評価するための Rouge-L スコアが含まれています。

{
  "conversationModelEvaluations": [{
    "name": "projects/cloud-contact-center-quality/locations/global/conversationModels/d3f2ca9f3e2c571a/evaluations/c10ac25411a23fe1",
    "displayName": "Training Auto Generated Evaluation",
    "createTime": "2022-06-04T03:38:35.151096Z",
    "evaluationConfig": {
    },
    "summarizationMetrics": {
      "rougel": 0.4474459
    }
  }]
}

会話モデルをデプロイする

モデルのトレーニングが完了したら、DeployConversationModel API を使用してモデルをデプロイできます。

DeployConversationModelRequest で、デプロイするモデルの name を指定します。レスポンスは長時間実行オペレーションです。GetOperation API を使用してポーリングして完了を確認できます。

会話プロファイルを構成する

会話プロファイルでは、会話中にエージェントに提示される候補を制御する一連のパラメータを構成します。次の手順では、HumanAgentAssistantConfig オブジェクトを使用して ConversationProfile を作成します。

会話プロファイルを作成する

会話プロファイルを作成するには、ConversationProfile リソースの create メソッドを呼び出します。新しい会話プロファイルの名前、 Google Cloudプロジェクト ID、モデル ID を指定します。CreateConversationProfileRequest で、使用する会話モデルと候補機能を CONVERSATION_SUMMARIZATION に指定します。

JSON の例を次に示します。

{
  "displayName": "CONVERSATION_PROFILE_NAME",
  "humanAgentAssistantConfig": {
    "humanAgentSuggestionConfig": {
      "featureConfigs": [{
        "suggestionFeature": {
          "type": "CONVERSATION_SUMMARIZATION"
        },
        "conversationModelConfig": {
          "model": "projects/PROJECT_ID/locations/global/conversationModels/MODEL_ID",
        }
      }]
    }
  },
  "languageCode": "en-US"
}

レスポンスは、会話プロファイル name を含む ConversationProfile オブジェクトです。

{
  "name": "projects/PROJECT_ID/locations/global/conversationProfiles/CONVERSATION_PROFILE_ID",
  "displayName": "CONVERSATION_PROFILE_NAME",
  "automatedAgentConfig": {
  },
  "humanAgentAssistantConfig": {
    "notificationConfig": {
    },
    "humanAgentSuggestionConfig": {
      "featureConfigs": [{
        "suggestionFeature": {
          "type": "CONVERSATION_SUMMARIZATION"
        },
        "conversationModelConfig": {
        }
      }]
    },
    "messageAnalysisConfig": {
    }
  },
  "languageCode": "en-US",
  "createTime": "2022-06-06T21:06:46.841816Z",
  "updateTime": "2022-06-06T21:06:46.841816Z",
  "projectNumber": "344549229138"
}

ランタイムに会話を処理する

エンドユーザーと人間のエージェントとの会話が開始されると、会話が作成されます。以下のセクションでは、このプロセスについて詳しく説明します。

会話を作成する

会話を作成するには、Conversation リソースの create メソッドを呼び出します。

レスポンスには、新しい会話 ID が含まれます。

エンドユーザーの参加者を作成する

エンドユーザーの参加者を作成するには、Participant リソースの create メソッドを呼び出します。role フィールドに会話 ID と END_USER を指定します。

participants の後のパスセグメントには、新しいエンドユーザー参加者 ID が含まれます。

人間のエージェントの参加者を作成する

人間のエージェントの参加者を作成するには、Participant リソースの create メソッドを呼び出します。role フィールドに会話 ID と HUMAN_AGENT を指定します。

participants の後のパスセグメントには、新しい人間のエージェントの参加者 ID が含まれます。

メッセージを分析する

オプション 1: 会話中

会話に人間のエージェントのメッセージを追加して分析するには、Participant リソースの analyzeContent メソッドを呼び出します。会話 ID と人間のエージェントの参加者 ID を指定します。

エンドユーザー メッセージを会話に追加して分析するには、Participant リソースの analyzeContent メソッドを呼び出します。会話 ID とエンドユーザー参加者 ID を指定します。

他の Dialogflow 機能で呼び出されている analyzeContent メソッドを重複して呼び出さないでください。

オプション 2: 会話後

このオプションは、会話中に analyzeContent メソッドを使用しない場合に使用できます。代わりに、messages リソースの batchCreate メソッドを使用して、会話の過去のメッセージを取り込むことができます。

候補を取得する

どちらの参加者からの最新のメッセージも、いつでも候補として表示されます。

オプション 1. suggestConversationSummary

conversations.suggestions リソースで suggestConversationSummary メソッドを呼び出します。会話 ID といずれかの参加者の最新のメッセージ ID を指定します。

オプション 2. generateStatelessSummary

generateStatelessSummary メソッドを呼び出します。会話の Messages と、いずれかの参加者の最新のメッセージ ID を指定します。

generateStatelessSummary の JSON リクエストの例を次に示します。

{
  "statelessConversation": {
    "messages": [{
      "content": "Hello, how can I help you today?",
      "languageCode": "en-US",
      "participantRole": "HUMAN_AGENT"
    }, {
      "content": "I would like to cancel my plan.",
      "languageCode": "en-US",
      "participantRole": "END_USER"
    }, {
      "content": "Okay, I have canceled your plan. Is there anything else that I can do to help you?",
      "languageCode": "en-US",
      "participantRole": "HUMAN_AGENT"
    }, {
      "content": "No, thank you.",
      "languageCode": "en-US",
      "participantRole": "END_USER"
    }, {
      "content": "Okay, have a great day!",
      "languageCode": "en-US",
      "participantRole": "HUMAN_AGENT"
    }],
    "parent": "projects/PROJECT_ID/locations/global"
  },
  "conversationProfile": {
    "humanAgentAssistantConfig": {
      "humanAgentSuggestionConfig": {
        "featureConfigs": [{
          "suggestionFeature": {
            "type": "CONVERSATION_SUMMARIZATION"
          },
          "conversationModelConfig": {
            "model": "projects/PROJECT_ID/locations/global/conversationModels/MODEL_ID"
          }
        }]
      }
    },
    "languageCode": "en-US"
  }
}

レスポンスには Summarization の候補が含まれます。

会話を完了する

会話を完了するには、conversations リソースの complete メソッドを呼び出します。会話 ID を指定します。