Kundenservicemitarbeiter bewerten

Nachdem Sie einen Kundenservicemitarbeiter entwickelt haben, können Sie mit dem Gen AI Evaluation Service die Fähigkeit des Kundenservicemitarbeiters bewerten, Aufgaben und Ziele für einen bestimmten Anwendungsfall zu erledigen.

Bewertungsmesswerte definieren

Beginnen Sie mit einer leeren Liste von Messwerten (z.B. metrics = []) und fügen Sie die relevanten Messwerte hinzu. So fügen Sie weitere Messwerte hinzu:

Endgültige Antwort

Die endgültige Antwortbewertung erfolgt nach demselben Verfahren wie die modellbasierte Bewertung. Weitere Informationen finden Sie unter Bewertungsmesswerte definieren.

Genaue Übereinstimmung

metrics.append("trajectory_exact_match")

Wenn die vorhergesagte Flugbahn mit der Referenzflugbahn identisch ist und die Toolaufrufe in genau derselben Reihenfolge erfolgen, gibt der Messwert trajectory_exact_match die Punktzahl 1 zurück, andernfalls 0.

Eingabeparameter:

  • predicted_trajectory: Die Liste der Toolaufrufe, die der Kundenservicemitarbeiter verwendet hat, um die endgültige Antwort zu erhalten.
  • reference_trajectory: Die erwartete Toolnutzung des Kundenservicemitarbeiters, um die Anfrage zu beantworten.

Sortierte Übereinstimmung

metrics.append("trajectory_in_order_match")

Wenn die vorhergesagte Flugbahn alle Toolaufrufe aus der Referenzflugbahn in derselben Reihenfolge enthält und möglicherweise auch zusätzliche Toolaufrufe enthält, wird für den Messwert trajectory_in_order_match die Bewertung 1 zurückgegeben, andernfalls 0.

Eingabeparameter:

  • predicted_trajectory: Die prognostizierte Flugbahn, die der Bot verwendet, um die endgültige Antwort zu erreichen.
  • reference_trajectory: Die erwartete vorhergesagte Flugbahn des Fahrzeugs, um die Anfrage zu erfüllen.

Übereinstimmung in beliebiger Reihenfolge

metrics.append("trajectory_any_order_match")

Wenn die vorhergesagte Flugbahn alle Toolaufrufe aus der Referenzflugbahn enthält, die Reihenfolge jedoch keine Rolle spielt und zusätzliche Toolaufrufe enthalten kann, wird für den Messwert trajectory_any_order_match die Bewertung 1 zurückgegeben, andernfalls 0.

Eingabeparameter:

  • predicted_trajectory: Die Liste der Toolaufrufe, die der Kundenservicemitarbeiter verwendet hat, um die endgültige Antwort zu erhalten.
  • reference_trajectory: Die erwartete Toolnutzung des Kundenservicemitarbeiters, um die Anfrage zu beantworten.

Precision

metrics.append("trajectory_precision")

Der Messwert trajectory_precision gibt an, wie viele der Toolaufrufe in der prognostizierten Flugbahn gemäß der Referenzflugbahn tatsächlich relevant oder korrekt sind. Es ist ein float-Wert im Bereich von [0, 1]: Je höher der Wert, desto genauer ist die prognostizierte Flugbahn.

Die Genauigkeit wird so berechnet: Zählen Sie, wie viele Aktionen in der vorhergesagten Flugbahn auch in der Referenzflugbahn vorkommen. Teilen Sie diese Anzahl durch die Gesamtzahl der Aktionen in der vorhergesagten Flugbahn.

Eingabeparameter:

  • predicted_trajectory: Die Liste der Toolaufrufe, die der Kundenservicemitarbeiter verwendet hat, um die endgültige Antwort zu erhalten.
  • reference_trajectory: Die erwartete Toolnutzung des Kundenservicemitarbeiters, um die Anfrage zu beantworten.

Recall

metrics.append("trajectory_recall")

Mit dem Messwert trajectory_recall wird gemessen, wie viele der wichtigen Toolaufrufe aus der Referenztrajektorie tatsächlich in der prognostizierten Trajektorie erfasst werden. Es ist ein float-Wert im Bereich von [0, 1]: Je höher die Punktzahl, desto besser ist die Wiedererkennung der prognostizierten Flugbahn.

Der Recall wird so berechnet: Zählen Sie, wie viele Aktionen in der Referenztrajektorie auch in der prognostizierten Trajektorie vorkommen. Teilen Sie diese Anzahl durch die Gesamtzahl der Aktionen in der Referenztrajektorie.

Eingabeparameter:

  • predicted_trajectory: Die Liste der Toolaufrufe, die der Kundenservicemitarbeiter verwendet hat, um die endgültige Antwort zu erhalten.
  • reference_trajectory: Die erwartete Toolnutzung des Kundenservicemitarbeiters, um die Anfrage zu beantworten.

Einzeln verwendetes Tool

from vertexai.preview.evaluation import metrics

metrics.append(metrics.TrajectorySingleToolUse(tool_name='tool_name'))

Mit dem Messwert trajectory_single_tool_use wird geprüft, ob ein bestimmtes Tool, das in der Messwertspezifikation angegeben ist, in der prognostizierten Flugbahn verwendet wird. Es wird nicht geprüft, in welcher Reihenfolge die Toolaufrufe erfolgen oder wie oft das Tool verwendet wird, sondern nur, ob es vorhanden ist oder nicht. Der Wert ist 0, wenn das Tool nicht vorhanden ist, andernfalls 1.

Eingabeparameter:

  • predicted_trajectory: Die Liste der Toolaufrufe, die der Kundenservicemitarbeiter verwendet hat, um die endgültige Antwort zu erhalten.

Benutzerdefiniert

So definieren Sie einen benutzerdefinierten Messwert:

from vertexai.preview.evaluation import metrics

def word_count(instance):
  response = instance["response"]
  score = len(response.split(" "))
  return {"word_count": score}

metrics.append(
  metrics.CustomMetric(name="word_count", metric_function=word_count)
)

Die folgenden beiden Leistungsmesswerte sind immer in den Ergebnissen enthalten. Sie müssen sie in EvalTask nicht angeben:

  • latency (float): Zeit (in Sekunden), die der Kundenservicemitarbeiter für die Beantwortung benötigt hat.
  • failure (bool): 0, wenn die Agent-Aufrufung erfolgreich war, andernfalls 1.

Bewertungs-Dataset vorbereiten

So bereiten Sie Ihr Dataset für die Bewertung der endgültigen Antwort oder des Kurses vor:

Endgültige Antwort

Das Datenschema für die Bewertung der endgültigen Antwort ähnelt dem der Bewertung der Modellantwort.

Genaue Übereinstimmung

Der Bewertungsdatensatz muss die folgenden Eingaben enthalten:

Eingabeparameter:

  • predicted_trajectory: Die Liste der Toolaufrufe, die der Kundenservicemitarbeiter verwendet hat, um die endgültige Antwort zu erhalten.
  • reference_trajectory: Die erwartete Toolnutzung des Kundenservicemitarbeiters, um die Anfrage zu beantworten.

Sortierte Übereinstimmung

Der Bewertungsdatensatz muss die folgenden Eingaben enthalten:

Eingabeparameter:

  • predicted_trajectory: Die prognostizierte Flugbahn, die der Bot verwendet, um die endgültige Antwort zu erreichen.
  • reference_trajectory: Die erwartete vorhergesagte Flugbahn des Fahrzeugs, um die Anfrage zu erfüllen.

Übereinstimmung in beliebiger Reihenfolge

Der Bewertungsdatensatz muss die folgenden Eingaben enthalten:

Eingabeparameter:

  • predicted_trajectory: Die Liste der Toolaufrufe, die der Kundenservicemitarbeiter verwendet hat, um die endgültige Antwort zu erhalten.
  • reference_trajectory: Die erwartete Toolnutzung des Kundenservicemitarbeiters, um die Anfrage zu beantworten.

Precision

Der Bewertungsdatensatz muss die folgenden Eingaben enthalten:

Eingabeparameter:

  • predicted_trajectory: Die Liste der Toolaufrufe, die der Kundenservicemitarbeiter verwendet hat, um die endgültige Antwort zu erhalten.
  • reference_trajectory: Die erwartete Toolnutzung des Kundenservicemitarbeiters, um die Anfrage zu beantworten.

Recall

Der Bewertungsdatensatz muss die folgenden Eingaben enthalten:

Eingabeparameter:

  • predicted_trajectory: Die Liste der Toolaufrufe, die der Kundenservicemitarbeiter verwendet hat, um die endgültige Antwort zu erhalten.
  • reference_trajectory: Die erwartete Toolnutzung des Kundenservicemitarbeiters, um die Anfrage zu beantworten.

Einzelnutzung

Der Bewertungsdatensatz muss die folgenden Eingaben enthalten:

Eingabeparameter:

  • predicted_trajectory: Die Liste der Toolaufrufe, die der Kundenservicemitarbeiter verwendet hat, um die endgültige Antwort zu erhalten.

Im Folgenden finden Sie ein Beispiel für ein Bewertungs-Dataset.

  import pandas as pd

  eval_dataset = pd.DataFrame({
    "predicted_trajectory": [
      [ # example 1
        {
          "tool_name": "set_device_info",
          "tool_input": {"device_id": "device_3", "updates": {"status": "OFF"}}
        },
      ],
      [ # example 2
        {
          "tool_name": "get_user_preferences",
          "tool_input": {"user_id": "user_z"},
        }, {
          "tool_name": "set_temperature",
          "tool_input": {"location": "Living Room", "temperature": 23},
        },
      ]
    ],
    "reference_trajectory": [
      [ # example 1
        {
          "tool_name": "set_device_info",
          "tool_input": {"device_id": "device_2", "updates": {"status": "OFF"}},
        },
      ],
      [ # example 2
        {
          "tool_name": "get_user_preferences",
          "tool_input": {"user_id": "user_y"},
        }, {
          "tool_name": "set_temperature",
          "tool_input": {"location": "Living Room", "temperature": 23},
        },
      ],
    ],
  })

Beispieldatensätze

Die folgenden Beispieldatensätze zeigen, wie Sie Kundenservicemitarbeiter bewerten können:

  • "on-device": Bewertungs-Dataset für einen On-Device-Home Assistant. Der Kundenservicemitarbeiter hilft bei Anfragen wie „Planen Sie die Klimaanlage im Schlafzimmer so, dass sie zwischen 23:00 Uhr und 8:00 Uhr eingeschaltet ist und den Rest der Zeit ausgeschaltet ist.“

  • "customer-support": Bewertungs-Dataset für einen Kundenservicemitarbeiter. Der Kundenservicemitarbeiter hilft bei Fragen wie „Können Sie ausstehende Bestellungen stornieren und offene Support-Tickets eskalieren?“

  • "content-creation": Bewertungsdatensatz für einen Agenten zur Erstellung von Marketinginhalten. Der Kundenservicemitarbeiter hilft bei Anfragen wie „Kampagne X in eine einmalige Kampagne auf der Social-Media-Website Y mit einem um 50% reduzierten Budget umwandeln, nur am 25. Dezember 2024“.

So importieren Sie die Beispiel-Datasets:

  1. Installieren und initialisieren Sie die gcloud-Befehlszeile.

  2. Laden Sie das Bewertungs-Dataset herunter.

    Auf dem Gerät

    gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/on-device/eval_dataset.json .

    Kundensupport

    gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/customer-support/eval_dataset.json .

    Erstellung von Inhalten

    gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/content-creation/eval_dataset.json .
  3. Dataset-Beispiele laden

    import json
    
    eval_dataset = json.loads(open('eval_dataset.json').read())
    

Bewertungsergebnisse generieren

Führen Sie den folgenden Code aus, um Bewertungsergebnisse zu generieren:

from vertexai.preview.evaluation import EvalTask

eval_task = EvalTask(dataset=eval_dataset, metrics=metrics)
eval_result = eval_task.evaluate(runnable=agent)

Ergebnisse ansehen und interpretieren

Die Bewertungsergebnisse werden so angezeigt:

Tabellen für Messwerte zur Bewertung von Kundenservicemitarbeitern

Die Bewertungsergebnisse enthalten die folgenden Informationen:

Messwerte für die endgültige Antwort

Zeilenbasierte Messwerte:

  • response: Die vom Kundenservicemitarbeiter generierte endgültige Antwort.
  • latency_in_seconds: Zeit (in Sekunden), die für die Generierung der Antwort benötigt wurde.
  • failure: Gibt an, ob eine gültige Antwort generiert wurde oder nicht.
  • score: Ein Wert, der für die in der Messwertspezifikation angegebene Antwort berechnet wird.
  • explanation: Die Erklärung für die in der Messwertspezifikation angegebene Bewertung.

Zusammenfassende Messwerte:

  • mean: Durchschnittliche Bewertung für alle Instanzen.
  • standard deviation: Standardabweichung aller Punktzahlen.

Messwerte zur Flugbahn

Zeilenbasierte Messwerte:

  • predicted_trajectory: Sequenz von Toolaufrufen, gefolgt von einem Kundenservicemitarbeiter, um die endgültige Antwort zu erhalten.
  • reference_trajectory: Abfolge der erwarteten Toolaufrufe.
  • score: Ein Wert, der für die vorhergesagte Flugbahn und die in der Messwertspezifikation angegebene Referenzflugbahn berechnet wird.
  • latency_in_seconds: Zeit (in Sekunden), die für die Generierung der Antwort benötigt wurde.
  • failure: Gibt an, ob eine gültige Antwort generiert wurde oder nicht.

Zusammenfassende Messwerte:

  • mean: Durchschnittliche Bewertung für alle Instanzen.
  • standard deviation: Standardabweichung aller Punktzahlen.

Nächste Schritte

Probieren Sie die folgenden Notebooks aus: