Menghitung metrik menggunakan data percakapan Agent Assist

Customer Experience Insights memungkinkan Anda mengimpor percakapan dari Agent Assist untuk dianalisis. Dokumen ini akan memandu Anda dalam proses menghitung beberapa metrik percakapan penting pada data Agent Assist yang diimpor.

Prasyarat

  1. Gunakan Agent Assist untuk membuat data percakapan menggunakan fitur smart reply atau ringkasan.

  2. Aktifkan integrasi runtime Dialogflow di Customer Experience Insights.

  3. Ekspor data Anda dari CX Insights ke BigQuery.

Rasio pemicu

Rasio pemicu menjelaskan seberapa sering jenis anotasi muncul dalam percakapan.

Tingkat pemicu tingkat kalimat

Rasio pemicu tingkat kalimat berlaku untuk anotasi yang dapat muncul minimal sekali per kalimat.

Nama Anotasi Jenis Anotasi Kriteria
Saran artikel 'ARTICLE_SUGGESTION' Setidaknya satu permintaan SuggestArticles dikirim untuk setiap pesan dalam percakapan.
Bantuan FAQ 'FAQ' Setidaknya satu permintaan SuggestFaqAnswers atau AnalyzeContent dikirim untuk setiap pesan dalam percakapan.
Smart Reply 'SMART_REPLY' Setidaknya satu permintaan SuggestSmartReplies atau AnalyzeContent dikirim untuk setiap pesan dalam percakapan.

WITH calculation AS
(
  SELECT
    COUNTIF(
      (
        SELECT COUNT(*)
        FROM UNNEST (sen.annotations) AS annotation
        WHERE annotation.type = 'ANNOTATION_TYPE'
      ) > 0
    ) AS numSentencesAtLeastOneAnnotation,
    COUNT(*) AS numSentencesTotal
  FROM BIGQUERY_TABLE,
  UNNEST (sentences) AS sen
)
SELECT
  numSentencesAtLeastOneAnnotation,
  numSentencesTotal,
  numSentencesAtLeastOneAnnotation / numSentencesTotal AS triggerRate
FROM calculation;

Rasio pemicu tingkat percakapan

Rasio pemicu tingkat percakapan berlaku untuk anotasi yang dapat muncul paling banyak satu kali per percakapan.

Nama Anotasi Jenis Anotasi Kriteria

| Bantuan pengetahuan generatif (GKA) | 'KNOWLEDGE_SEARCH' | Setidaknya satu permintaan SearchKnowledge dikirim untuk setiap pesan dalam percakapan. | | Bantuan pengetahuan generatif proaktif | 'KNOWLEDGE_SEARCH' | Setidaknya satu permintaan SearchKnowledge atau AnalyzeContent dikirim untuk setiap pesan dalam percakapan. | | Ringkasan | 'CONVERSATION_SUMMARIZATION' | Setidaknya satu permintaan SuggestConversationSummary dikirim untuk setiap percakapan. |

WITH calculation AS
(
  SELECT
    COUNTIF(
      (
        SELECT COUNT(*)
        FROM
          UNNEST (sentences) AS sen,
          UNNEST (sen.annotations) AS annotation
        WHERE annotation.type = 'ANNOTATION_TYPE'
      ) > 0
    ) AS numConversationsAtLeastOneAnnotation,
    COUNT(*) AS numConversationsTotal
  FROM BIGQUERY_TABLE
) SELECT
  numConversationsAtLeastOneAnnotation,
  numConversationsTotal,
  numConversationsAtLeastOneAnnotation / numConversationsTotal AS triggerRate
FROM calculation;

Rasio klik-tayang

Rasio klik-tayang menjelaskan seberapa sering agen panggilan mengklik anotasi yang disarankan kepada mereka.

Rasio klik-tayang tingkat kalimat

Rasio klik-tayang tingkat kalimat berlaku untuk anotasi yang dapat diklik beberapa kali per kalimat oleh agen panggilan.

Nama Anotasi Jenis Anotasi Kriteria
Saran artikel 'ARTICLE_SUGGESTION' Setidaknya satu permintaan SuggestArticles dikirim untuk setiap pesan dalam percakapan.
Bantuan FAQ 'FAQ' Setidaknya satu permintaan SuggestFaqAnswers atau AnalyzeContent dikirim untuk setiap pesan dalam percakapan.
Smart Reply 'SMART_REPLY' Setidaknya satu permintaan SuggestSmartReplies atau AnalyzeContent dikirim untuk setiap pesan dalam percakapan.

WITH calculation AS
(
  SELECT
    COUNTIF(
      (
        SELECT COUNT(*)
        FROM UNNEST (sen.annotations) AS annotation
        WHERE
          annotation.type = 'ANNOTATION_TYPE' AND
          annotation.displayed = TRUE AND
          annotation.clicked = TRUE
      ) > 0
    ) AS numSentencesAtLeastOneClickedAndDisplayedAnnotation,
    COUNTIF(
      (
        SELECT COUNT(*)
        FROM UNNEST (sen.annotations) AS annotation
        WHERE
          annotation.type = 'ANNOTATION_TYPE' AND
          annotation.displayed = TRUE
      ) > 0
    ) AS numSentencesAtLeastOneDisplayedAnnotation,
  FROM BIGQUERY_TABLE,
  UNNEST (sentences) AS sen
)
SELECT
  numSentencesAtLeastOneClickedAndDisplayedAnnotation,
  numSentencesAtLeastOneDisplayedAnnotation,
  numSentencesAtLeastOneClickedAndDisplayedAnnotation / numSentencesAtLeastOneDisplayedAnnotation AS clickThroughRate
FROM calculation;

Rasio klik-tayang tingkat percakapan

Rasio klik-tayang tingkat Percakapan berlaku untuk anotasi yang dapat diklik beberapa kali oleh agen panggilan per percakapan. Agen panggilan harus secara proaktif mengirim permintaan yang membuat anotasi tingkat percakapan.

Nama Anotasi Jenis Anotasi Kriteria
Bantuan pengetahuan generatif (GKA) 'KNOWLEDGE_SEARCH' Setidaknya satu permintaan SearchKnowledge dikirim untuk setiap pesan dalam percakapan.
Bantuan pengetahuan generatif proaktif 'KNOWLEDGE_SEARCH' Setidaknya satu permintaan SearchKnowledge atau AnalyzeContent dikirim untuk setiap pesan dalam percakapan.

Metrik khusus fitur

Bagian ini mencantumkan metrik yang khusus untuk setiap fitur.

Bantuan pengetahuan generatif

Bantuan pengetahuan generatif (GKA) memberikan jawaban atas pertanyaan agen berdasarkan informasi dalam dokumen yang Anda berikan. Jika agen tidak dapat menemukan jawaban, GKA akan menyarankan pertanyaan serupa untuk diajukan dan memberikan jawabannya. Fitur ini menghasilkan metrik penelusuran pengetahuan berikut:

Nama metrik Definisi Penghitungan
Jumlah hasil Jumlah total jawaban yang diberikan kepada satu agen untuk semua percakapan.
Rasio sumber kueri agen Proporsi pertanyaan agen terhadap jumlah total pertanyaan. Hitung jumlah pertanyaan agen dibagi dengan jumlah total pertanyaan.
Rasio sumber kueri yang disarankan Proporsi pertanyaan yang disarankan terhadap jumlah total pertanyaan. Hitung jumlah saran pertanyaan dibagi dengan jumlah total pertanyaan.
Rasio klik URI Proporsi jawaban dengan setidaknya satu URI yang diklik terhadap jumlah total jawaban. Hitung jumlah jawaban yang URI-nya diklik oleh agen dibagi dengan jumlah total jawaban.
Rasio masukan positif Proporsi masukan positif tentang jawaban terhadap jumlah total jawaban. Hitung jumlah jawaban yang menerima masukan positif dibagi dengan jumlah total jawaban.
Rasio masukan negatif Proporsi masukan negatif tentang jawaban terhadap jumlah total jawaban. Hitung jumlah jawaban yang menerima masukan negatif dibagi dengan jumlah total jawaban.

Bantuan pengetahuan generatif proaktif

Bantuan pengetahuan generatif proaktif menyarankan pertanyaan berdasarkan konteks percakapan saat ini dan memberikan jawaban berdasarkan informasi dalam dokumen yang Anda berikan. Bantuan pengetahuan generatif proaktif tidak memerlukan interaksi agen. Fitur ini menghasilkan metrik bantuan pengetahuan berikut:

Nama metrik Definisi Penghitungan
Jumlah hasil Jumlah total saran yang diberikan kepada satu agen untuk semua percakapan.
Rasio klik URI Proporsi saran dengan setidaknya satu URI yang diklik terhadap total jumlah saran yang diberikan. Hitung jumlah saran yang URI-nya diklik oleh agen dibagi dengan total jumlah saran yang diberikan.
Rasio masukan positif Proporsi masukan positif tentang saran terhadap total jumlah saran. Hitung jumlah saran yang menerima masukan positif dibagi dengan total jumlah saran.
Rasio masukan negatif Proporsi masukan negatif tentang saran terhadap total jumlah saran. Hitung jumlah saran yang menerima masukan negatif dibagi dengan total jumlah saran.

Smart Reply

Bagian ini mencantumkan metrik khusus untuk balasan smart.

Rasio klik-tayang efektif (CTR efektif)

Rasio klik-tayang efektif adalah gambaran yang lebih tepat tentang seberapa sering agen panggilan mengklik anotasi balasan smart dibandingkan dengan metrik rasio klik-tayang reguler. Kueri berikut mengambil setiap respons agen dan anotasi balasan smart yang dibuat hanya untuk respons agen tersebut dan diklik oleh agen. Kemudian, jumlah kemunculan saat agen membuat draf respons menggunakan saran balasan smart dihitung, lalu jumlah ini dibagi dengan jumlah total respons agen.

WITH calculation AS (
  SELECT
    sen.sentence AS agentResponse,
    (
      # Get a list of effective smart replies that map to each agent response.
      SELECT ARRAY_AGG(JSON_QUERY(PARSE_JSON(JSON_VALUE(annotation.annotationRecord)), "$.reply"))
      FROM
        UNNEST (sentences) AS sen2,
        UNNEST (sen2.annotations) AS annotation
      WHERE
        annotation.type='SMART_REPLY' AND
        annotation.clicked=TRUE AND
        annotation.annotationRecord IS NOT NULL AND
        annotation.createTimeNanos >= (
          # Get the timestamp of the agent response that immediately precedes
          # the current agent response. The timestamp of the effective smart
          # reply must be greater than this timestamp.
          SELECT MAX(sen3.createTimeNanos)
          FROM UNNEST(sentences) AS sen3
          WHERE
            sen3.participantRole = 'HUMAN_AGENT' AND
            sen3.createTimeNanos < sen.createTimeNanos
        ) AND
        annotation.createTimeNanos <= sen.createTimeNanos
    ) AS effectiveSmartRepliesPerAgentResponse
  FROM BIGQUERY_TABLE,
  UNNEST (sentences) AS sen
  WHERE sen.participantRole = 'HUMAN_AGENT'
)
SELECT COUNTIF(ARRAY_LENGTH(effectiveSmartRepliesPerAgentResponse) > 0) / COUNT(agentResponse) AS effectiveCTR
FROM calculation;

Edit tarif

Agen dapat memilih untuk menggunakan respons balasan smart yang disarankan secara verbatim, atau mengedit respons sebelum mengirimkannya kepada pelanggan. Menghitung rasio pengeditan respons balasan smart dapat menunjukkan seberapa sering balasan yang disarankan diedit. Kueri berikut mengambil setiap balasan smart yang disarankan dan respons agen yang langsung mengikuti balasan smart tersebut. Kemudian, hitung jumlah kemunculan saat respons agen tidak berisi saran balasan cerdas yang sesuai, lalu bagi jumlah ini dengan total jumlah saran balasan cerdas.

WITH calculation AS
(
  SELECT
    JSON_VALUE(PARSE_JSON(JSON_VALUE(annotation.annotationRecord), wide_number_mode=>'round'), "$.reply") AS smartReply,
    (
      # Get the agent response that immediately follows the smart reply.
      SELECT sen2.sentence
      FROM UNNEST (sentences) AS sen2
      WHERE sen2.createTimeNanos = (
        SELECT MIN(sen3.createTimeNanos)
        FROM UNNEST (sentences) AS sen3
        WHERE
          sen3.createTimeNanos > sen.createTimeNanos AND
          sen3.participantRole = 'HUMAN_AGENT'
      )
    ) AS agentResponseThatFollows,
  FROM BIGQUERY_TABLE,
  UNNEST (sentences) AS sen,
  UNNEST (sen.annotations) AS annotation
  WHERE
    annotation.type='SMART_REPLY' AND
    annotation.clicked=TRUE AND
    annotation.annotationRecord IS NOT NULL
)
SELECT COUNTIF(REGEXP_CONTAINS(agentResponseThatFollows, smartReply)) / COUNT(smartReply) AS editRate
FROM calculation;

Ringkasan

Bagian ini mencantumkan metrik yang khusus untuk peringkasan.

  • Jenis GENERATOR_SUGGESTION_RESULT akan berisi semua hasil generator, termasuk ringkasan.
  • Jenis CONVERSATION_SUMMARIZATION_SUGGESTION akan berisi ringkasan lama.

Ringkasan Generator

Contoh kueri untuk mengakses ringkasan generator dan pengeditan agen pada ringkasan sebagai JSON:

SELECT
IF
  (JSON_VALUE(annotation.annotationRecord) != '', 
   JSON_QUERY(PARSE_JSON(JSON_VALUE(annotation.annotationRecord)), "$.generatorSuggestion.summarySuggestion"),
   NULL) AS generator_summary,
IF
  (JSON_VALUE(annotation.detailedFeedback) != '',
   JSON_QUERY(PARSE_JSON(JSON_VALUE(annotation.detailedFeedback)), "$.summarizationFeedback.summaryText"),
   NULL) AS feedback,
FROM
  BIGQUERY_TABLE AS c,
  UNNEST(c.sentences) AS sentences,
  UNNEST(sentences.annotations) AS annotation
WHERE
  annotation.type = 'GENERATOR_SUGGESTION_RESULT'
  AND JSON_QUERY(PARSE_JSON(JSON_VALUE(annotation.annotationRecord)), "$.generatorSuggestion.summarySuggestion") IS NOT NULL
LIMIT
  10 ;

Jarak pengeditan

Jarak pengeditan ringkasan adalah ukuran seberapa besar perbedaan ringkasan yang diedit agen dengan ringkasan yang disarankan. Metrik ini berkorelasi dengan jumlah waktu yang dihabiskan agen untuk mengedit ringkasan yang disarankan.

  1. Kueri ringkasan dan ringkasan yang direvisi (jika ada).

  2. Karena agen panggilan dapat mengirimkan revisi ringkasan tanpa menetapkan boolean clicked ke true, kueri ringkasan, terlepas dari status clicked-nya. Jika ringkasan agen bernilai null, agen tidak merevisi ringkasan yang disarankan atau ringkasan yang direvisi tidak dikirim ke Agent Assist menggunakan rute masukan pilihan.

  3. Bandingkan ringkasan yang disarankan dengan ringkasan revisi agen menggunakan algoritma jarak pengeditan yang Anda sukai untuk menghitung jarak pengeditan ringkasan. Misalnya, jarak Levenshtein dengan penalti yang sama untuk penyisipan, penghapusan, dan penggantian.

SELECT
  JSON_VALUE(PARSE_JSON(JSON_VALUE(annotation.annotationRecord)), "$.text") AS suggestedSummary,
IF
  (JSON_VALUE(annotation.detailedFeedback) != '', JSON_QUERY(PARSE_JSON(JSON_VALUE(annotation.detailedFeedback)), "$.summarizationFeedback.summaryText"), NULL) AS feedback,
FROM
  BIGQUERY_TABLE,
  UNNEST (sentences) AS sen,
  UNNEST (sen.annotations) as annotation
WHERE
  type='CONVERSATION_SUMMARIZATION_SUGGESTION';

Edit tarif

Anda dapat menghitung rasio pengeditan untuk ringkasan dengan membagi jarak pengeditan dengan panjang string ringkasan yang diedit. Metrik ini mencerminkan seberapa banyak ringkasan yang diedit oleh agen. Tingkat pengeditan ini tidak memiliki batas atas, tetapi jika nilainya sama dengan atau lebih besar dari satu, berarti ringkasan yang dihasilkan buruk dan fitur ini mungkin harus dinonaktifkan.

Edit persentase

Persentase pengeditan adalah ukuran persentase dari jumlah total ringkasan yang disarankan yang diedit oleh agen, bukan digunakan kata demi kata. Metrik ini dihitung sebagai jumlah ringkasan yang diedit agen dibagi dengan jumlah ringkasan yang disarankan. Metrik ini merupakan sinyal yang baik untuk kualitas model jika nilainya mendekati 0. Namun, jika mendekati 1, tidak berarti kualitas model buruk karena pengeditan bisa saja kecil dan tetap dihitung sebagai ringkasan yang disarankan telah diedit.

WITH
  summaryAndEdits AS (
  SELECT
    JSON_VALUE(PARSE_JSON(JSON_VALUE(annotation.annotationRecord)), "$.text") AS suggestedSummary,
  IF
    (JSON_VALUE(annotation.detailedFeedback) != '', JSON_QUERY(PARSE_JSON(JSON_VALUE(annotation.detailedFeedback)), "$.summarizationFeedback.summaryText"), NULL) AS editedSummary,
  FROM
    BIGQUERY_TABLE,
    UNNEST (sentences) AS sen,
    UNNEST (sen.annotations) AS annotation
  WHERE
    type='CONVERSATION_SUMMARIZATION_SUGGESTION' )
SELECT
  countif (suggestedSummary IS NOT NULL) AS totalSummaries,
  countif (editedSummary IS NOT NULL) AS editedSummaries,
  countif (editedSummary IS NOT NULL) / countif (suggestedSummary IS NOT NULL) AS editRate
FROM
  summaryAndEdits;