スマート リプライ

スマート リプライは、人間のエージェントとエンドユーザー間の会話を追跡し、人間のエージェントに対して推奨されるレスポンスを表示します。候補のレスポンスは、独自の会話データでトレーニングされたカスタムモデルによって計算されます。

このドキュメントでは、API を使用してスマート リプライを実装し、この機能から候補を取得するプロセスについて説明します。必要に応じて、Agent Assist コンソールを使用して、データのアップロード、モデルのトレーニング、設計時のスマート リプライの結果のテストを行うこともできます。実行時にスマート リプライ候補を表示するには、API を直接呼び出す必要があります。モデルをトレーニングし、Agent Assist コンソールを使用してモデルのパフォーマンスをテストする方法については、スマート リプライのチュートリアルをご覧ください。

Agent Assist は、一般公開されている会話データと、事前トレーニング済みモデルと許可リストも提供します。これらのリソースを使用して、スマート リプライの仕組みを確認したり、独自のデータをアップロードする前に統合をテストしたりできます。詳しくは、会話データ形式のドキュメントをご覧ください。

始める前に

このガイドを開始する前に、以下を完了してください。

  1. 独自の音声文字変換データを使用して、会話データセットを作成します。
  2. 会話データセットを使用してスマート リプライ モデルをトレーニングします。

個人を特定できる情報と子供のデータ

この API にデータを送信すると、API はすべての個人情報(PII)を削除しようとします。モデルに個人情報が含まれていないことを確認する必要がある場合は、API に送信する前にデータをサニタイズする必要があります。削除した単語を単に削除するのではなく、「REDACTED_NUMBER」や「REDACTED_NAME」などのプレースホルダに置き換えます。

また、データに子どもから収集した情報が含まれている場合は、API に送信する前に子どものデータを削除する必要があります。

モデルのトレーニングとデプロイ

Agent Assist のスマート リプライ モデルは、会話データセットを使用してトレーニングされます。会話データセットには、ご自身がアップロードした音声文字変換データが含まれます。このセクションでは、会話データセットの作成、会話データのアップロード、モデルのトレーニングとデプロイのプロセスについて説明します。API を直接呼び出したくない場合は、Agent Assist コンソールを使用してこれらの操作を行うこともできます。

会話データセットを作成する

会話の文字起こしのアップロードを開始する前に、まず会話データセットを作成して文字起こしを配置する必要があります。ConversationDataset リソースの create メソッドを呼び出して、会話データセットを作成します。

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

会話の文字起こしを会話データセットにインポートする

チャット会話データを会話データセットにアップロードして、Agent Assist で処理できるようにします。各会話の文字起こしが JSON 形式で、Cloud Storage バケットに保存されていることを確認します。会話データセットには 30,000 件以上の会話が含まれている必要があります。含まれていない場合、モデルのトレーニングは失敗します。一般に、会話の数が多いほど、モデルの品質は高くなります。できるだけ多くのユースケースを十分にカバーできるよう、少なくとも 3 か月間の会話をアップロードすることをおすすめします。会話データセット内のメッセージの最大数は 1,000,000 です。

会話をインポートするには、ConversationDataset リソースの importConversationData メソッドを呼び出します。

必須フィールド:

  • 前に作成した会話データセット ID。
  • inputConfig パスは、Cloud Storage バケット内の会話文字起こしデータにつながります。

レスポンスは長時間実行オペレーションです。ポーリングして完了を確認できます。

会話モデルを作成する

ConversationModel リソースの create メソッドを呼び出して、会話モデルを作成します。このアクションにより、モデルの許可リストも作成されます。

必須フィールド:

  • datasets で、前に作成した会話データセット ID を使用して単一のデータセットを指定します。
  • smartReplyModelMetadata を空のオブジェクトに設定するか、フィールドに値を入力してデフォルトをオーバーライドします。

レスポンスは長時間実行オペレーションです。ポーリングして完了を確認できます。完了すると、モデル ID と許可リスト ID がオペレーションのメタデータに含まれます。

  • モデル ID: name
  • 許可リスト ID: smart_reply_model_metadata.associated_allowlist_info.document

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

ConversationModel リソースで deploy メソッドを呼び出して、会話モデルをデプロイします。

必須項目:

  • conversationModels を使用する: 前に作成した会話モデル ID を入力します。

許可リストを管理する

各モデルには許可リストが関連付けられており、会話モデルの作成時に自動的に作成されます。許可リストには、実行時に人間のエージェントに表示できる、会話データセットから生成されたすべてのレスポンスが含まれます。このセクションでは、許可リストの作成と管理について説明します。API を直接呼び出したくない場合は、Agent Assist コンソールを使用してこれらの操作を行うこともできます。

許可リストの内容を CSV ファイルにエクスポートする

モデルの作成時に、新しいモデルに関連付けられた許可リストが自動的に作成されます。許可リストは、一意の ID を持つドキュメント リソースです。ID は、モデルの作成時に smart_reply_model_metadata.associated_allowlist_info.document で返されます。許可リストのメッセージを確認して変更するには、Cloud Storage バケットにエクスポートする必要があります。

Document リソースで export メソッドを呼び出して、ドキュメントを Cloud Storage バケット内の CSV ファイルにエクスポートします。smart_messaging_partial_update フィールドは省略可能ですが、今後この許可リストを更新する方法に影響します。true に設定すると、エクスポートされた CSV ファイルに、メッセージごとに一意の ID を含む列が含まれます。メッセージ ID を使用すると、ドキュメント全体ではなく、指定したメッセージのみを更新できます。smart_messaging_partial_updatefalse に設定されているか設定されていない場合、余分な列はファイルに表示されません。許可リストを更新するには、ドキュメント全体を更新する必要があります。

必須項目:

  • gcsDestination パスは Cloud Storage バケットに移動します。

レスポンスは長時間実行オペレーションです。ポーリングして完了を確認できます。その後、リクエストで指定した CSV ファイルにレスポンス候補が入力されます。

許可リストを確認する

生成された許可リストには、会話データに基づいてスマート リプライによって自動生成された返信が含まれます。これらの回答は、必要に応じて確認、更新できます。Cloud Storage バケットから CSV ファイルをダウンロードし、ニーズに合わせて編集して、ファイルを Cloud Storage バケットにアップロードします。人間のエージェントに表示できるのは、許可リストに登録されている回答のみです。

回答を編集する場合は、スペルと文法に限定し、メッセージの意味は変更しないことをおすすめします。編集されたテキストがモデルの意味から離れているほど、メッセージが表示される可能性が少なくなります。

必要に応じて、新しいメッセージを作成することもできます。編集されたメッセージと同様に、作成されたメッセージは実行中に表示される可能性が低くなります。

許可リストを更新する

CSV ファイルの更新が完了したら、そのファイルを使用して Document リソースを更新できます。許可リスト全体を更新することも、特定のメッセージのみを更新することもできます。指定したメッセージのみを更新するには、許可リストをエクスポートするときに smart_messaging_partial_updatetrue に設定する必要があります。すでにこの操作を行っている場合は、エクスポートした CSV ファイル内の自動生成された列を使用して、更新するメッセージを指定します。

Document リソースで reload メソッドを呼び出して、許可リストを更新します。指定したメッセージのみを更新するには、ReloadDocumentRequestsmart_messaging_partial_updatetrue に設定します。許可リスト全体を更新するには、smart_messaging_partial_update を未設定のままにするか、false に設定します。

必須フィールド:

  • gcsSource は、CSV ファイルの Cloud Storage パスです。
  • name には、会話モデルを作成したときに生成された許可リスト リソース名を使用します。

リクエストの例:

{
  "name":"projects/project-id/knowledgeBases/knowledge-base-id/documents/allowlist-id",
  "gcsSource" {
      "uri": "gs://revised_smart_reply_allowlist_path"
   }
}

トレーニング済みモデルのパフォーマンスを評価する

モデルをデプロイして許可リストを作成した後、モデルのパフォーマンスをテストできます。また、テストデータセットも指定する必要があります。トレーニング済みのスマート リプライ モデルによって生成されたレスポンスと、それに関連付けられた許可リストが、テスト データセット内の実際のエージェント メッセージと比較されます。テストデータセットは実際の会話データで構成する必要がありますが、モデルのトレーニングに使用した会話データセットのデータは含めないでください。たとえば、1 か月分の会話トラフィックがある場合、3 週間の会話データを使用して会話データセットを作成し、残りの 1 週間のデータを使用してテストデータセットを作成できます。テストデータセットには少なくとも 1, 000 件の会話を含める必要がありますが、一般に、テストデータセットの会話数が多いほど、評価指標の信頼性が高まります。テスト データセットの形式は、会話データセットの形式と同じです。

新しいモデル評価を作成するには、ConversationModel リソースの CreateConversationModelEvaluation メソッドを呼び出します。このメソッドは長時間実行オペレーションを返します。オペレーションをポーリングして状態を確認できます。この場合、INITIALIZINGRUNNINGSUCCEEDEDCANCELLEDFAILED のいずれかが返されます。

必須フィールド:

  • InputDataset: モデルのパフォーマンスをテストするために使用されるテストデータセット。
  • allowlist_document: テストするスマート リプライ モデルに関連付けられた許可リスト。

長時間実行オペレーションが完了すると、ConversationModelEvaluation リソースが返されます。次の 2 つの指標が含まれます。

  • allowlist_coverage: テスト データセット内のエージェント メッセージのうち、許可リストに含まれるメッセージの割合。
  • recall: テストデータセット内のエージェント メッセージのうち、許可リストに含まれ、スマート リプライ モデルによって表示された上位 3 つの候補に含まれるメッセージの割合。

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

会話プロファイルでは、会話中にエージェントに提示される候補を制御する一連のパラメータを構成します。次の手順では、HumanAgentAssistantConfig オブジェクトを使用して ConversationProfile を作成します。API を直接呼び出したくない場合は、Agent Assist コンソールを使用してこれらの操作を行うこともできます。

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

会話プロファイルを作成するには、ConversationProfile リソースの create メソッドを呼び出します。ナレッジベース ID、ドキュメント ID、プロジェクト ID、モデル ID を指定します。

JSON の例を次に示します。
{
  "displayName":"smart_reply_assist",
  "humanAgentAssistantConfig":{
    "humanAgentSuggestionConfig":{
      "featureConfigs":[
        {
          "suggestionFeature": { "type":"SMART_REPLY" },
          "queryConfig": {
            "documentQuerySource":{
              "documents": ["projects/PROJECT_ID/knowledgeBases/KNOWLEDGE_BASE_ID/documents/DOCUMENT_ID"]
              },
                "maxResults": 3
              },
            }
          },
          "conversationModelConfig":{
            "model": "projects/PROJECT_ID/conversationModels/MODEL_ID"
          }
        }
      ]
    }
  }
}

SuggestionFeatureConfig.enable_inline_suggestion 値を設定することをおすすめします。この値が true の場合、後続の AnalyzeContent 呼び出しでは、候補のリストを含むレスポンスが返されます。

レスポンスには、新しい会話プロフィール ID が含まれます。

会話プロファイルを構成する方法、実行時に会話を処理する方法、結果をテストする方法、Agent Assist にフィードバックを送信する方法については、生成 AI によるスマート リプライをご覧ください。