Kundenservicemitarbeiter bewerten

Nachdem Sie einen Agent entwickelt haben, können Sie mit dem Bewertungsdienst basierend auf generativer KI die Fähigkeit des Agents bewerten, Aufgaben und Ziele für einen bestimmten Anwendungsfall zu erfüllen.

Bewertungsmesswerte definieren

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

Endgültige Antwort

Die endgültige Reaktionsbewertung folgt demselben Prozess wie die modellbasierte Bewertung. Weitere Informationen finden Sie unter Bewertungsmesswerte definieren.

Genaue Übereinstimmung

metrics.append("trajectory_exact_match")

Wenn die vorhergesagte Trajektorie mit der Referenz-Trajektorie identisch ist und die Tool-Aufrufe in derselben Reihenfolge erfolgen, gibt der Messwert trajectory_exact_match den Wert 1 zurück, andernfalls 0.

Eingabeparameter:

  • predicted_trajectory: Die Liste der Tool-Aufrufe, die vom Agent verwendet wurden, um die endgültige Antwort zu erhalten.
  • reference_trajectory: Die erwartete Verwendung des Tools durch den Agent, um die Anfrage zu erfüllen.

Übereinstimmung in der richtigen Reihenfolge

metrics.append("trajectory_in_order_match")

Wenn der vorhergesagte Pfad alle Tool-Aufrufe aus dem Referenzpfad in derselben Reihenfolge enthält und möglicherweise zusätzliche Tool-Aufrufe vorhanden sind, wird für den trajectory_in_order_match-Messwert der Wert 1 zurückgegeben, andernfalls 0.

Eingabeparameter:

  • predicted_trajectory: Die vom Agent verwendete vorhergesagte Entwicklung, um die endgültige Antwort zu erreichen.
  • reference_trajectory: Die erwartete vorhergesagte Trajektorie für den Agenten, um die Anfrage zu erfüllen.

Übereinstimmung in beliebiger Reihenfolge

metrics.append("trajectory_any_order_match")

Wenn der vorhergesagte Pfad alle Tool-Aufrufe aus dem Referenzpfad enthält, die Reihenfolge jedoch keine Rolle spielt und zusätzliche Tool-Aufrufe enthalten sein können, gibt die Messwert trajectory_any_order_match den Wert 1 zurück, andernfalls 0.

Eingabeparameter:

  • predicted_trajectory: Die Liste der Tool-Aufrufe, die vom Agent verwendet wurden, um die endgültige Antwort zu erhalten.
  • reference_trajectory: Die erwartete Verwendung des Tools durch den Agent, um die Anfrage zu erfüllen.

Precision

metrics.append("trajectory_precision")

Der Messwert trajectory_precision gibt an, wie viele der Tool-Aufrufe im vorhergesagten Pfad gemäß dem Referenzpfad tatsächlich relevant oder korrekt sind. Es handelt sich um einen float-Wert im Bereich von [0, 1]. Je höher der Wert, desto genauer ist die vorhergesagte Entwicklung.

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

Eingabeparameter:

  • predicted_trajectory: Die Liste der Tool-Aufrufe, die vom Agent verwendet wurden, um die endgültige Antwort zu erhalten.
  • reference_trajectory: Die erwartete Verwendung des Tools durch den Agent, um die Anfrage zu erfüllen.

Recall

metrics.append("trajectory_recall")

Der Messwert trajectory_recall gibt an, wie viele der wichtigen Tool-Aufrufe aus dem Referenzpfad tatsächlich im vorhergesagten Pfad erfasst werden. Es handelt sich um einen float-Wert im Bereich von [0, 1]. Je höher der Wert, desto besser der Recall der vorhergesagten Flugbahn.

Der Recall wird so berechnet: Zählen Sie, wie viele Aktionen im Referenz-Trajekt auch im vorhergesagten Trajekt vorkommen. Teilen Sie diese Anzahl durch die Gesamtzahl der Aktionen im Referenzpfad.

Eingabeparameter:

  • predicted_trajectory: Die Liste der Tool-Aufrufe, die vom Agent verwendet wurden, um die endgültige Antwort zu erhalten.
  • reference_trajectory: Die erwartete Verwendung des Tools durch den Agent, um die Anfrage zu erfüllen.

Verwendung eines einzelnen Tools

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, im vorhergesagten Verlauf verwendet wird. Es wird nicht geprüft, in welcher Reihenfolge die Tool-Aufrufe erfolgen oder wie oft das Tool verwendet wird, sondern nur, ob es vorhanden ist. Der Wert ist 0, wenn das Tool nicht vorhanden ist, andernfalls 1.

Eingabeparameter:

  • predicted_trajectory: Die Liste der Tool-Aufrufe, die vom Agent verwendet wurden, 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 nicht in EvalTask angeben:

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

Bewertungs-Dataset vorbereiten

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

Endgültige Antwort

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

Genaue Übereinstimmung

Das Bewertungs-Dataset muss die folgenden Eingaben enthalten:

Eingabeparameter:

  • predicted_trajectory: Die Liste der Tool-Aufrufe, die vom Agent verwendet wurden, um die endgültige Antwort zu erhalten.
  • reference_trajectory: Die erwartete Verwendung des Tools durch den Agent, um die Anfrage zu erfüllen.

Übereinstimmung in der richtigen Reihenfolge

Das Bewertungs-Dataset muss die folgenden Eingaben enthalten:

Eingabeparameter:

  • predicted_trajectory: Die vom Agent verwendete vorhergesagte Entwicklung, um die endgültige Antwort zu erreichen.
  • reference_trajectory: Die erwartete vorhergesagte Trajektorie für den Agenten, um die Anfrage zu erfüllen.

Übereinstimmung in beliebiger Reihenfolge

Das Bewertungs-Dataset muss die folgenden Eingaben enthalten:

Eingabeparameter:

  • predicted_trajectory: Die Liste der Tool-Aufrufe, die vom Agent verwendet wurden, um die endgültige Antwort zu erhalten.
  • reference_trajectory: Die erwartete Verwendung des Tools durch den Agent, um die Anfrage zu erfüllen.

Precision

Das Bewertungs-Dataset muss die folgenden Eingaben enthalten:

Eingabeparameter:

  • predicted_trajectory: Die Liste der Tool-Aufrufe, die vom Agent verwendet wurden, um die endgültige Antwort zu erhalten.
  • reference_trajectory: Die erwartete Verwendung des Tools durch den Agent, um die Anfrage zu erfüllen.

Recall

Das Bewertungs-Dataset muss die folgenden Eingaben enthalten:

Eingabeparameter:

  • predicted_trajectory: Die Liste der Tool-Aufrufe, die vom Agent verwendet wurden, um die endgültige Antwort zu erhalten.
  • reference_trajectory: Die erwartete Verwendung des Tools durch den Agent, um die Anfrage zu erfüllen.

Verwendung eines einzelnen Tools

Das Bewertungs-Dataset muss die folgenden Eingaben enthalten:

Eingabeparameter:

  • predicted_trajectory: Die Liste der Tool-Aufrufe, die vom Agent verwendet wurden, 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},
        },
      ],
    ],
  })

Beispieldatasets

Wir haben die folgenden Beispieldatasets bereitgestellt, um zu zeigen, wie Sie Agents bewerten können:

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

  • "customer-support": Bewertungs-Dataset für einen Kundensupport-Agent. Der Kundenservicemitarbeiter hilft bei Anfragen wie „Kannst du alle ausstehenden Bestellungen stornieren und alle offenen Support-Tickets eskalieren?“

  • "content-creation": Evaluierungsdataset für einen Agenten zur Erstellung von Marketinginhalten. Der Agent hilft bei Anfragen wie „Verschiebe Kampagne X auf den 25. Dezember 2024 und richte sie als einmalige Kampagne auf der Social-Media-Website Y mit einem um 50% reduzierten Budget ein.“

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 die 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 Agent-Bewertung

Die Auswertungsergebnisse enthalten die folgenden Informationen:

Messwerte für die endgültige Antwort

Messwerte auf Zeilenebene:

  • response: Die endgültige Antwort, die vom Agent generiert wurde.
  • latency_in_seconds: Die Zeit, die zum Generieren der Antwort benötigt wurde (in Sekunden).
  • 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 den in der Messwertspezifikation angegebenen Wert.

Zusammenfassende Messwerte:

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

Messwerte für den Verlauf

Messwerte auf Zeilenebene:

  • predicted_trajectory: Sequenz von Tool-Aufrufen, gefolgt vom Agent, um die endgültige Antwort zu erhalten.
  • reference_trajectory: Sequenz der erwarteten Tool-Aufrufe.
  • score: Ein Wert, der für die in der Messwertspezifikation angegebene vorhergesagte und Referenztrajektorie berechnet wird.
  • latency_in_seconds: Die Zeit, die zum Generieren der Antwort benötigt wurde (in Sekunden).
  • failure: Gibt an, ob eine gültige Antwort generiert wurde oder nicht.

Zusammenfassende Messwerte:

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

Nächste Schritte

Probieren Sie die folgenden Notebooks aus: