Messwerte mit Agent Assist-Unterhaltungsdaten berechnen

Mit Customer Experience Insights können Sie Unterhaltungen aus Agent Assist importieren, um sie zu analysieren. In diesem Dokument wird beschrieben, wie Sie mehrere wichtige Konversationsmesswerte für importierte Agent Assist-Daten berechnen.

Vorbereitung

  1. Verwenden Sie Agent Assist, um Unterhaltungsdaten mit den Funktionen Smart Reply oder Zusammenfassung zu generieren.

  2. Aktivieren Sie die Dialogflow-Laufzeitintegration in Customer Experience Insights.

  3. Exportieren Sie Ihre Daten aus CX Insights nach BigQuery.

Trigger rate

Die Triggerrate gibt an, wie oft ein Annotationstyp in einem Gespräch vorkommt.

Triggerrate auf Satzebene

Für Anmerkungen, die mindestens einmal pro Satz angezeigt werden können, gilt eine Triggerrate auf Satzebene.

Annotationsname Annotationstyp Kriterium
Artikelvorschlag 'ARTICLE_SUGGESTION' Für jede Nachricht in der Konversation wird mindestens eine SuggestArticles-Anfrage gesendet.
FAQ-Assistenz 'FAQ' Für jede Nachricht in der Konversation wird mindestens eine SuggestFaqAnswers- oder AnalyzeContent-Anfrage gesendet.
Intelligente Antwort 'SMART_REPLY' Für jede Nachricht in der Konversation wird mindestens eine SuggestSmartReplies- oder AnalyzeContent-Anfrage gesendet.

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;

Triggerrate auf Konversationsebene

Eine Triggerrate auf Unterhaltungsebene gilt für Anmerkungen, die höchstens einmal pro Unterhaltung angezeigt werden können.

Annotationsname Annotationstyp Kriterium

| Generative Wissensunterstützung (Generative Knowledge Assist, GKA) | 'KNOWLEDGE_SEARCH' | Für jede Nachricht im Gespräch wird mindestens eine SearchKnowledge-Anfrage gesendet. | | Proaktive Unterstützung durch generative KI | 'KNOWLEDGE_SEARCH' | Für jede Nachricht in der Konversation wird mindestens eine SearchKnowledge- oder AnalyzeContent-Anfrage gesendet. | | Zusammenfassung | 'CONVERSATION_SUMMARIZATION' | Für jede Unterhaltung wird mindestens eine SuggestConversationSummary-Anfrage gesendet. |

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;

Klickrate (Click-through-Rate, CTR)

Die Klickrate gibt an, wie oft Kundenservicemitarbeiter auf die vorgeschlagenen Anmerkungen klicken.

Klickrate auf Satzebene

Die Klickrate auf Satzebene gilt für Anmerkungen, auf die Kundenservicemitarbeiter mehrmals pro Satz klicken können.

Annotationsname Annotationstyp Kriterium
Artikelvorschlag 'ARTICLE_SUGGESTION' Für jede Nachricht in der Konversation wird mindestens eine SuggestArticles-Anfrage gesendet.
FAQ-Assistenz 'FAQ' Für jede Nachricht in der Konversation wird mindestens eine SuggestFaqAnswers- oder AnalyzeContent-Anfrage gesendet.
Intelligente Antwort 'SMART_REPLY' Für jede Nachricht in der Konversation wird mindestens eine SuggestSmartReplies- oder AnalyzeContent-Anfrage gesendet.

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;

Klickrate auf Konversationsebene

Die Klickrate auf Unterhaltungsebene gilt für Anmerkungen, auf die Kundenservicemitarbeiter mehrmals pro Unterhaltung klicken können. Kundenservicemitarbeiter müssen proaktiv eine Anfrage senden, mit der eine Anmerkung auf Unterhaltungsebene erstellt wird.

Annotationsname Annotationstyp Kriterium
Generative Knowledge Assist (GKA) 'KNOWLEDGE_SEARCH' Für jede Nachricht in der Konversation wird mindestens eine SearchKnowledge-Anfrage gesendet.
Proaktive Unterstützung durch generative KI 'KNOWLEDGE_SEARCH' Für jede Nachricht in der Konversation wird mindestens eine SearchKnowledge- oder AnalyzeContent-Anfrage gesendet.

Funktionsspezifische Messwerte

In diesem Abschnitt werden Messwerte aufgeführt, die für die einzelnen Funktionen spezifisch sind.

Generative Knowledge Assist

Generative Knowledge Assist (GKA) liefert Antworten auf die Fragen eines Kundenservicemitarbeiters basierend auf Informationen in von Ihnen bereitgestellten Dokumenten. Wenn der Kundenservicemitarbeiter keine Antwort findet, schlägt GKA eine ähnliche Frage vor und liefert die Antwort. Mit dieser Funktion werden die folgenden Messwerte für die Wissenssuche generiert:

Messwertname Definition Berechnung
Anzahl der Ergebnisse Gesamtzahl der Antworten, die für alle Unterhaltungen für einen einzelnen Agenten bereitgestellt wurden.
Verhältnis der Quellen für KI-Agentenabfragen Anteil der Agent-Fragen an der Gesamtzahl der Fragen. Berechnen Sie die Anzahl der Fragen des Kundenservicemitarbeiters geteilt durch die Gesamtzahl der Fragen.
Vorgeschlagenes Verhältnis von Quellen für Abfragen Anteil der vorgeschlagenen Fragen an der Gesamtzahl der Fragen. Berechnen Sie die Anzahl der vorgeschlagenen Fragen geteilt durch die Gesamtzahl der Fragen.
URI-Klickrate Anteil der Antworten, bei denen mindestens einmal auf eine URI geklickt wurde, an der Gesamtzahl der Antworten. Berechnen Sie die Anzahl der Antworten, für die ein Kundenservicemitarbeiter auf den URI geklickt hat, geteilt durch die Gesamtzahl der Antworten.
Verhältnis von positivem Feedback Anteil des positiven Feedbacks zu Antworten an der Gesamtzahl der Antworten. Berechnen Sie die Anzahl der Antworten, die positives Feedback erhalten haben, geteilt durch die Gesamtzahl der Antworten.
Verhältnis von negativem Feedback Anteil des negativen Feedbacks zu Antworten an der Gesamtzahl der Antworten. Berechnen Sie die Anzahl der Antworten, die negatives Feedback erhalten haben, geteilt durch die Gesamtzahl der Antworten.

Proaktive generative Knowledge Assist-Funktion

Proaktive Unterstützung durch generative KI schlägt Fragen basierend auf dem aktuellen Gesprächskontext vor und liefert Antworten basierend auf Informationen in den von Ihnen bereitgestellten Dokumenten. Für die proaktive generative Wissensunterstützung ist keine Interaktion mit einem Kundenservicemitarbeiter erforderlich. Mit dieser Funktion werden die folgenden Messwerte für die Wissensunterstützung generiert:

Messwertname Definition Berechnung
Anzahl der Ergebnisse Die Gesamtzahl der Vorschläge, die einem einzelnen Agenten für alle Unterhaltungen bereitgestellt wurden.
URI-Klickrate Anteil der Vorschläge, bei denen mindestens ein URI angeklickt wurde, an der Gesamtzahl der bereitgestellten Vorschläge. Berechnen Sie die Anzahl der Vorschläge, für die ein Kundenservicemitarbeiter auf den URI geklickt hat, geteilt durch die Gesamtzahl der Vorschläge.
Verhältnis von positivem Feedback Anteil des positiven Feedbacks zu Vorschlägen an der Gesamtzahl der Vorschläge. Berechnen Sie die Anzahl der Vorschläge, die positives Feedback erhalten haben, geteilt durch die Gesamtzahl der Vorschläge.
Verhältnis von negativem Feedback Anteil des negativen Feedbacks zu Vorschlägen an der Gesamtzahl der Vorschläge. Berechnen Sie die Anzahl der Vorschläge, die negatives Feedback erhalten haben, geteilt durch die Gesamtzahl der Vorschläge.

Intelligente Antwort

In diesem Abschnitt werden Messwerte aufgeführt, die speziell für intelligente Antworten gelten.

Effektive Klickrate (effektive CTR)

Die effektive Klickrate gibt genauer an, wie oft Kundenservicemitarbeiter auf Smart Reply-Anmerkungen klicken, als der reguläre Messwert für die Klickrate. Mit der folgenden Abfrage werden die Antworten der einzelnen Kundenservicemitarbeiter und die Smart Reply-Anmerkungen abgerufen, die speziell für die Antwort des jeweiligen Kundenservicemitarbeiters erstellt und von diesem angeklickt wurden. Anschließend wird die Anzahl der Fälle gezählt, in denen der Kundenservicemitarbeiter seine Antwort mithilfe von Vorschlägen für intelligente Antworten verfasst hat. Diese Zahl wird dann durch die Gesamtzahl der Antworten des Kundenservicemitarbeiters geteilt.

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;

Rate bearbeiten

Kundenservicemitarbeiter können die vorgeschlagenen Smart Reply-Antworten entweder unverändert verwenden oder vor dem Senden an Kunden bearbeiten. Wenn Sie die Bearbeitungsrate von Smart Reply-Antworten berechnen, können Sie sehen, wie oft die vorgeschlagenen Antworten bearbeitet werden. Mit der folgenden Abfrage werden alle vorgeschlagenen intelligenten Antworten und die Antwort des Kundenservicemitarbeiters abgerufen, die unmittelbar auf die intelligente Antwort folgt. Anschließend wird die Anzahl der Fälle gezählt, in denen die Antwort des Kundenservicemitarbeiters nicht die entsprechende intelligente Antwort enthält. Dieser Wert wird dann durch die Gesamtzahl der intelligenten Antworten geteilt.

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;

Zusammenfassung

In diesem Abschnitt werden Messwerte aufgeführt, die speziell für die Zusammenfassung gelten.

  • Der Typ GENERATOR_SUGGESTION_RESULT enthält alle Generatorergebnisse, einschließlich Zusammenfassungen.
  • Der Typ CONVERSATION_SUMMARIZATION_SUGGESTION enthält alte Zusammenfassungen.

Zusammenfassung des Generators

Beispielabfrage für den Zugriff auf die Zusammenfassung des Generators und die Bearbeitungen des KI-Agents an der Zusammenfassung als 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 ;

Bearbeitungsdistanz

Die Bearbeitungsdistanz der Zusammenfassung ist ein Maß dafür, wie stark sich die vom Agenten bearbeiteten Zusammenfassungen von den vorgeschlagenen Zusammenfassungen unterscheiden. Dieser Messwert entspricht der Zeit, die der Agent mit dem Bearbeiten der vorgeschlagenen Zusammenfassungen verbracht hat.

  1. Fragen Sie die Zusammenfassungen und die überarbeiteten Zusammenfassungen (falls vorhanden) ab.

  2. Da Kundenservicemitarbeiter Zusammenfassungsüberarbeitungen einreichen können, ohne den booleschen Wert clicked auf true zu setzen, werden Zusammenfassungen von Anfragen unabhängig von ihrem clicked-Status abgefragt. Wenn die Zusammenfassung des Agents null ist, hat der Agent die vorgeschlagene Zusammenfassung nicht überarbeitet oder die überarbeitete Zusammenfassung wurde nicht über den bevorzugten Feedbackweg an Agent Assist gesendet.

  3. Vergleichen Sie die vorgeschlagenen Zusammenfassungen mit den überarbeiteten Zusammenfassungen der Kundenservicemitarbeiter. Verwenden Sie dazu Ihre bevorzugten Algorithmen für die Bearbeitungsdistanz, um die Bearbeitungsdistanz der Zusammenfassung zu berechnen. Beispiel: Levenshtein-Distanz mit gleicher Strafe für Einfügung, Löschung und Ersetzung.

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';

Rate bearbeiten

Sie können die Bearbeitungsrate für die Zusammenfassung berechnen, indem Sie die Bearbeitungsdistanz durch die Stringlänge der bearbeiteten Zusammenfassung dividieren. Dieser Messwert gibt an, wie viel von der Zusammenfassung vom Agent bearbeitet wurde. Für diese Bearbeitungsrate gibt es keine Obergrenze. Wenn der Wert jedoch gleich oder größer als 1 ist, sind die generierten Zusammenfassungen schlecht und die Funktion sollte wahrscheinlich deaktiviert werden.

Prozentsatz bearbeiten

Der Bearbeitungsprozentsatz gibt an, wie viel Prozent der Gesamtzahl der vorgeschlagenen Zusammenfassungen von Kundenservicemitarbeitern bearbeitet wurden, anstatt unverändert verwendet zu werden. Sie wird berechnet, indem die Anzahl der von Kundenservicemitarbeitern bearbeiteten Zusammenfassungen durch die Anzahl der vorgeschlagenen Zusammenfassungen geteilt wird. Dieser Messwert ist ein guter Indikator für die Modellqualität, wenn der Wert nahe 0 liegt. Wenn der Wert nahe 1 liegt, bedeutet das nicht unbedingt, dass die Modellqualität schlecht ist, da die Bearbeitung geringfügig sein kann und trotzdem als Bearbeitung der vorgeschlagenen Zusammenfassung gezählt wird.

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;