Bewertung ausführen

Sie können das Gen AI Evaluation-Modul des Vertex AI SDK for Python verwenden, um Ihre Sprachmodelle und Anwendungen basierend auf generativer KI programmatisch mit der Gen AI Evaluation Service API zu bewerten. Auf dieser Seite erfahren Sie, wie Sie Bewertungen mit dem Vertex AI SDK ausführen. Hinweis: Bewertungen im großen Maßstab sind nur über die REST API verfügbar.

Hinweise

Vertex AI SDK installieren

Führen Sie den folgenden Befehl aus, um das Gen AI Evaluation-Modul aus dem Vertex AI SDK for Python zu installieren:

!pip install -q google-cloud-aiplatform[evaluation]

Weitere Informationen finden Sie unter Vertex AI SDK für Python installieren.

Vertex AI SDK authentifizieren

Nachdem Sie das Vertex AI SDK für Python installiert haben, müssen Sie sich authentifizieren. In den folgenden Themen wird erläutert, wie Sie sich mit dem Vertex AI SDK authentifizieren, wenn Sie lokal und in Colaboratory arbeiten:

  • Wenn Sie lokal entwickeln, richten Sie Standardanmeldedaten für Anwendungen in Ihrer lokalen Umgebung ein:

    1. Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init
      
    2. Erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Google-Konto:

      gcloud auth application-default login
      

      Ein Anmeldebildschirm wird angezeigt. Nach der Anmeldung werden Ihre Anmeldedaten in der lokalen Anmeldedatendatei für ADC gespeichert. Weitere Informationen finden Sie unter ADC für eine lokale Entwicklungsumgebung einrichten.

  • Wenn Sie in Colaboratory arbeiten, führen Sie den folgenden Befehl in einer Colab-Zelle zur Authentifizierung aus:

    from google.colab import auth
    auth.authenticate_user()
    

    Mit diesem Befehl wird ein Fenster geöffnet, in dem Sie die Authentifizierung abschließen können.

Details zu Dienstkonten

Das Dienstkonto wird vom Gen AI Evaluation Service verwendet, um Vorhersagen von der Gemini API in Vertex AI für modellbasierte Bewertungsmesswerte abzurufen. Dieses Dienstkonto wird dem Gen AI Evaluation Service bei der ersten Anfrage automatisch bereitgestellt.

Name Beschreibung E-Mail-Adresse Rolle
Vertex AI Rapid Eval Service Agent Das Dienstkonto, das zum Abrufen von Vorhersagen für die modellbasierte Bewertung verwendet wird. service-PROJECT_NUMBER@gcp-sa-vertex-eval.iam.gserviceaccount.com roles/aiplatform.rapidevalServiceAgent

Die Berechtigungen, die dem Dienst-Agent für die schnelle Bewertung zugeordnet sind, sind:

Rolle Berechtigungen
Vertex AI Rapid Eval Service Agent (roles/aiplatform.rapidevalServiceAgent) aiplatform.endpoints.predict

Bewertung ausführen

Mit der Klasse EvalTask können Sie Auswertungen für die folgenden Anwendungsfälle durchführen:

Klasse EvalTask

Mit der Klasse EvalTask können Sie Modelle und Anwendungen anhand bestimmter Aufgaben bewerten. Um faire Vergleiche zwischen generativen Modellen zu ermöglichen, müssen Sie in der Regel verschiedene Modelle und Prompt-Vorlagen wiederholt im Vergleich zu einem festen Bewertungs-Dataset bewerten, anhand bestimmter Messwerte. Es ist auch wichtig, mehrere Messwerte gleichzeitig in einem einzigen Bewertungsdurchlauf zu analysieren.

EvalTask lässt sich auch in Vertex AI Experiments einbinden, damit Sie Konfigurationen und Ergebnisse für jeden Bewertungslauf nachverfolgen können. Vertex AI Experiments hilft Ihnen bei der Verwaltung und Interpretation von Bewertungsergebnissen, damit Sie fundierte Entscheidungen treffen können.

Das folgende Beispiel zeigt, wie die Klasse EvalTask instanziiert und eine Auswertung ausgeführt wird:

from vertexai.evaluation import (
    EvalTask,
    PairwiseMetric,
    PairwiseMetricPromptTemplate,
    PointwiseMetric,
    PointwiseMetricPromptTemplate,
    MetricPromptTemplateExamples
)

eval_task = EvalTask(
    dataset=DATASET,
    metrics=[METRIC_1, METRIC_2, METRIC_3],
    experiment=EXPERIMENT_NAME,
)

eval_result = eval_task.evaluate(
    model=MODEL,
    prompt_template=PROMPT_TEMPLATE,
    experiment_run=EXPERIMENT_RUN,
)

Bewertung mit modellbasierten Messwerten ausführen

Für modellbasierte Messwerte verwenden Sie die Klassen PointwiseMetric und PairwiseMetric, um Messwerte zu definieren, die auf Ihre spezifischen Kriterien zugeschnitten sind. Sie haben folgende Möglichkeiten, um Auswertungen auszuführen:

Beispiele für modellbasierte Messwerte verwenden

Sie können die integrierte Konstante Metric Prompt Template Examples direkt im Vertex AI SDK verwenden. Alternativ können Sie sie auch in der Benutzeroberfläche für die Definition von Messwerten im freien Format ändern und einfügen.

Eine vollständige Liste der Beispiele für Vorlagen für Messwert-Prompts, die die meisten wichtigen Anwendungsfälle abdecken, finden Sie unter Vorlagen für Messwert-Prompts.

Console

Wenn Sie Auswertungen in einem Colab Enterprise-Notebook ausführen, können Sie direkt in der Google Cloud auf Vorlagen für Messwert-Prompts zugreifen.

  1. Klicken Sie auf den Link für das gewünschte Gen AI Evaluation Service-Notebook.

  2. Das Notebook wird in GitHub geöffnet. Klicken Sie auf In Colab Enterprise öffnen. Wenn Sie in einem Dialogfeld aufgefordert werden, APIs zu aktivieren, klicken Sie auf Aktivieren.

  3. Klicken Sie in der Seitenleiste auf das Symbol Bewertung der generativen KI. Der Bereich Vordefinierte Messwertvorlagen wird geöffnet.

  4. Wählen Sie Punktweise- oder Paarweise-Messwerte aus.

  5. Klicken Sie auf den gewünschten Messwert, z. B. Flüssigkeit. Das Codebeispiel für den Messwert wird angezeigt.

  6. Klicken Sie auf Kopieren, um das Codebeispiel zu kopieren. Optional können Sie auf Anpassen klicken, um die voreingestellten Felder für den Messwert zu ändern.

  7. Fügen Sie das Codebeispiel in Ihr Notebook ein.

Vertex AI SDK

Im folgenden Beispiel für das Vertex AI SDK wird gezeigt, wie Sie die Klasse MetricPromptTemplateExamples verwenden, um Ihre Messwerte zu definieren:

# View all the available examples of model-based metrics
MetricPromptTemplateExamples.list_example_metric_names()

# Display the metric prompt template of a specific example metric
print(MetricPromptTemplateExamples.get_prompt_template('fluency'))

# Use the pre-defined model-based metrics directly
eval_task = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[MetricPromptTemplateExamples.Pointwise.FLUENCY],
)

eval_result = eval_task.evaluate(
    model=MODEL,
)

Verwenden Sie eine vorlagenbasierte Oberfläche für modellbasierte Messwerte.

Passen Sie Ihre Messwerte an, indem Sie Felder wie Criteria und Rating Rubrics mit den Klassen PointwiseMetricPromptTemplate und PairwiseMetricPromptTemplate im Vertex AI SDK ausfüllen. Bestimmten Feldern wie Instruction wird ein Standardwert zugewiesen, wenn Sie keine Eingabe machen.

Optional können Sie input_variables angeben. Das ist eine Liste von Eingabefeldern, die von der Vorlage für den Messwert-Prompt verwendet werden, um modellbasierte Bewertungsergebnisse zu generieren. Für Punktbasierte Messwerte ist standardmäßig die Spalte response des Modells enthalten. Für paarweise Messwerte sind sowohl die Spalten response als auch baseline_model_response des Kandidatenmodells enthalten.

Weitere Informationen finden Sie im Abschnitt „Vorlage für Messwert-Prompts strukturieren“ unter Vorlagen für Messwert-Prompts.

# Define a pointwise metric with two custom criteria
custom_text_quality = PointwiseMetric(
    metric="custom_text_quality",
    metric_prompt_template=PointwiseMetricPromptTemplate(
        criteria={
          "fluency": "Sentences flow smoothly and are easy to read, avoiding awkward phrasing or run-on sentences. Ideas and sentences connect logically, using transitions effectively where needed.",
          "entertaining": "Short, amusing text that incorporates emojis, exclamations and questions to convey quick and spontaneous communication and diversion.",
        },
        rating_rubric={
          "1": "The response performs well on both criteria.",
          "0": "The response is somewhat aligned with both criteria",
          "-1": "The response falls short on both criteria",
        },
        input_variables=["prompt"],
    ),
)

# Display the serialized metric prompt template
print(custom_text_quality.metric_prompt_template)

# Run evaluation using the custom_text_quality metric
eval_task = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[custom_text_quality],
)
eval_result = eval_task.evaluate(
    model=MODEL,
)

SDK-Schnittstelle für freie Form für modellbasierte Messwerte verwenden

Für mehr Flexibilität bei der Anpassung der Vorlage für Messwert-Prompts können Sie einen Messwert direkt über die Benutzeroberfläche für das freie Format definieren, die eine direkte Stringeingabe akzeptiert.

# Define a pointwise multi-turn chat quality metric
pointwise_chat_quality_metric_prompt = """Evaluate the AI's contribution to a meaningful conversation, considering coherence, fluency, groundedness, and conciseness.
 Review the chat history for context. Rate the response on a 1-5 scale, with explanations for each criterion and its overall impact.

# Conversation History
{history}

# Current User Prompt
{prompt}

# AI-generated Response
{response}
"""

freeform_multi_turn_chat_quality_metric = PointwiseMetric(
    metric="multi_turn_chat_quality_metric",
    metric_prompt_template=pointwise_chat_quality_metric_prompt,
)

# Run evaluation using the freeform_multi_turn_chat_quality_metric metric
eval_task = EvalTask(
    dataset=EVAL_DATASET,
    metrics=[freeform_multi_turn_chat_quality_metric],
)
eval_result = eval_task.evaluate(
    model=MODEL,
)

Übersetzungsmodell bewerten

Wenn Sie das Vertex AI SDK verwenden, können Sie BLEU, MetricX oder COMET als Bewertungsmesswerte angeben, um Ihr Übersetzungsmodell zu bewerten.

#Prepare the dataset for evaluation.
sources = [
    "Dem Feuer konnte Einhalt geboten werden",
    "Schulen und Kindergärten wurden eröffnet.",
]

responses = [
    "The fire could be stopped",
    "Schools and kindergartens were open",
]

references = [
    "They were able to control the fire.",
    "Schools and kindergartens opened",
]

eval_dataset = pd.DataFrame({
    "source": sources,
    "response": responses,
    "reference": references,
})

# Set the metrics.

metrics = [
    "bleu",
    pointwise_metric.Comet(),
    pointwise_metric.MetricX(),
]

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

Bewertung mit berechnungsbasierten Messwerten ausführen

Sie können berechnungsbasierte Messwerte eigenständig oder zusammen mit modellbasierten Messwerten verwenden.

# Combine computation-based metrics "ROUGE" and "BLEU" with model-based metrics
eval_task = EvalTask(
    dataset=EVAL_DATASET,
    metrics=["rouge_l_sum", "bleu", custom_text_quality],
)
eval_result = eval_task.evaluate(
    model=MODEL,
)

Bewertungen im großen Stil ausführen

Wenn Sie große Bewertungs-Datasets haben oder regelmäßig Bewertungen in einer Produktionsumgebung ausführen, können Sie die EvaluateDataset API im Gen AI Evaluation Service verwenden, um Bewertungen im großen Maßstab auszuführen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_NUMBER: Ihre Projektnummer.
  • DATASET_URI: Der Cloud Storage-Pfad zu einer JSONL-Datei, die Bewertungsinstanzen enthält. Jede Zeile in der Datei sollte eine einzelne Instanz darstellen. Die Schlüssel entsprechen den nutzerdefinierten Eingabefeldern in metric_prompt_template (für modellbasierte Messwerte) oder den erforderlichen Eingabeparametern (für berechnungsbasierte Messwerte). Sie können nur eine JSONL-Datei angeben. Das folgende Beispiel zeigt eine Zeile für eine punktweise Bewertungsinstanz:
    {"response": "The Roman Senate was filled with exuberance due to Pompey's defeat in Asia."}
  • METRIC_SPEC: Eine oder mehrere Messwertspezifikationen, die Sie für die Bewertung verwenden. Sie können die folgenden Messwertspezifikationen verwenden, wenn Sie Auswertungen im großen Maßstab durchführen: "pointwise_metric_spec", "pairwise_metric_spec", "exact_match_spec", "bleu_spec" und "rouge_spec".
  • METRIC_SPEC_FIELD_NAME: Die erforderlichen Felder für die von Ihnen ausgewählte Messwertspezifikation, z. B. "metric_prompt_template".
  • METRIC_SPEC_FIELD_CONTENT: Der Feldinhalt für die ausgewählte Messwertspezifikation. Für eine punktweise Auswertung können Sie beispielsweise den folgenden Feldinhalt verwenden: "Evaluate the fluency of this sentence: {response}. Give score from 0 to 1. 0 - not fluent at all. 1 - very fluent."
  • OUTPUT_BUCKET: Der Name des Cloud Storage-Bucket, in dem Sie die Auswertungsergebnisse speichern möchten.

HTTP-Methode und URL:

POST https://us-central1-aiplatform.googleapis.com/v1beta1/projects/PROJECT_NUMBER/locations/us-central1/evaluateDataset

JSON-Text der Anfrage:

{
  "dataset": {
    "gcs_source": {
      "uris": "DATASET_URI"
    }
  },
  "metrics": [
    {
      METRIC_SPEC: {
        METRIC_SPEC_FIELD_NAME: METRIC_SPEC_FIELD_CONTENT
      }
    }
  ],
  "output_config": {
    "gcs_destination": {
      "output_uri_prefix": "OUTPUT_BUCKET"
    }
  }
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://us-central1-aiplatform.googleapis.com/v1beta1/projects/PROJECT_NUMBER/locations/us-central1/evaluateDataset"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://us-central1-aiplatform.googleapis.com/v1beta1/projects/PROJECT_NUMBER/locations/us-central1/evaluateDataset" | Select-Object -Expand Content

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Sie können OPERATION_ID in der Antwort verwenden, um den Status der Bewertung abzurufen:

curl -X GET \
  -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
  -H "Content-Type: application/json; charset=utf-8" \
  "https://us-central1-aiplatform.googleapis.com/v1beta1/projects/PROJECT_NUMBER/locations/us-central1/operations/OPERATION_ID"

Zusätzliche Anpassung von Messwerten

Wenn Sie Ihre Messwerte weiter anpassen möchten, z. B. ein anderes Judge-Modell für modellbasierte Messwerte auswählen oder einen neuen berechnungsbasierten Messwert definieren möchten, können Sie die Klasse CustomMetric im Vertex AI SDK verwenden. Hier finden Sie weitere Informationen:

Modellbasierte Bewertung mit erhöhten Ratenlimits und Kontingenten ausführen

Eine einzelne Bewertungsanfrage für eine modellbasierte Messwert führt zu mehreren zugrunde liegenden Anfragen an die Gemini API in Vertex AI und verbraucht Kontingent für das Judge-Modell. In den folgenden Fällen sollten Sie ein höheres Ratenlimit für den Bewertungsdienst festlegen:

  • Erhöhtes Datenvolumen:Wenn Sie mit den modellbasierten Messwerten deutlich mehr Daten verarbeiten, erreichen Sie möglicherweise das Standardkontingent für Anfragen pro Minute (RPM). Wenn Sie das Kontingent erhöhen, können Sie das größere Volumen ohne Leistungseinbußen oder Unterbrechungen verarbeiten.

  • Schnellere Bewertung:Wenn für Ihre Anwendung eine kürzere Bearbeitungszeit für Bewertungen erforderlich ist, benötigen Sie möglicherweise ein höheres RPM-Kontingent. Das ist besonders wichtig für zeitkritische Anwendungen oder solche mit Echtzeitinteraktionen, bei denen Verzögerungen bei der Auswertung die Nutzerfreundlichkeit beeinträchtigen können.

  • Komplexe Bewertungsaufgaben:Ein höheres RPM-Kontingent sorgt dafür, dass Sie genügend Kapazität haben, um ressourcenintensive Bewertungen für komplexe Aufgaben oder große Textmengen zu verarbeiten.

  • Hohe Nutzergleichzeitigkeit:Wenn Sie davon ausgehen, dass eine große Anzahl von Nutzern gleichzeitig modellbasierte Auswertungen und Modellinferenz in Ihrem Projekt anfordert, ist ein höheres Modell-RPM-Limit entscheidend, um Engpässe zu vermeiden und die Reaktionsfähigkeit aufrechtzuerhalten.

Wenn Sie das Standardmodell gemini-2.0-flash oder neuere Modelle verwenden, empfehlen wir, Ihr Kontingent mit Provisioned Throughput zu verwalten.

Bei Modellen, die älter als gemini-2.0-flash sind, gehen Sie so vor, um das RPM-Kontingent für das Bewertungsmodell zu erhöhen:

  1. Rufen Sie in der Google Cloud Console die Seite Kontingente von IAM & Verwaltung auf.

    Kontingente in der Console ansehen

  2. Geben Sie im Feld Filter die Dimension (Modell-ID) und den Messwert (Kontingent-ID für Gemini-Modelle) an: base_model:gemini-2.0-flash und Metric:aiplatform.googleapis.com/generate_content_requests_per_minute_per_project_per_base_model.

  3. Klicken Sie für das Kontingent, das Sie erhöhen möchten, auf das Menü Weitere Aktionen .

  4. Klicken Sie im Drop-down-Menü auf Kontingent bearbeiten. Der Bereich Kontingentänderungen wird geöffnet.

  5. Geben Sie unter Kontingent bearbeiten einen neuen Kontingentwert ein.

  6. Klicken Sie auf Anfrage senden.

  7. Eine Anfrage zur Kontingenterhöhung wird per E‑Mail bestätigt und dauert in der Regel zwei Arbeitstage.

Wenn Sie eine Auswertung mit einem neuen Kontingent ausführen möchten, legen Sie den Parameter evaluation_service_qps so fest:

from vertexai.evaluation import EvalTask

# GEMINI_RPM is the requests per minute (RPM) quota for gemini-2.0-flash-001 in your region
# Evaluation Service QPS limit is equal to (gemini-2.0-flash-001 RPM / 60 sec / default number of samples)
CUSTOM_EVAL_SERVICE_QPS_LIMIT = GEMINI_RPM / 60 / 4

eval_task = EvalTask(
    dataset=DATASET,
    metrics=[METRIC_1, METRIC_2, METRIC_3],
)

eval_result = eval_task.evaluate(
    evaluation_service_qps=CUSTOM_EVAL_SERVICE_QPS_LIMIT,
    # Specify a retry_timeout limit for a more responsive evaluation run
    # the default value is 600 (in seconds, or 10 minutes)
    retry_timeout=RETRY_TIMEOUT,
)

Weitere Informationen zu Kontingenten und Limits finden Sie unter Kontingente für den Gen AI Evaluation Service und Gen AI Evaluation Service API.

Nächste Schritte