Sie können das Gen AI Evaluation-Modul des Vertex AI SDK für Python verwenden, um Ihre generativen Sprachmodelle und -anwendungen 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. Beachten Sie, dass Bewertungen im großen Maßstab nur über die REST API verfügbar sind.
Hinweis
Vertex AI SDK installieren
Führen Sie den folgenden Befehl aus, um das Gen AI Evaluation-Modul aus dem Vertex AI SDK für 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 (Application Default Credentials, ADC) in Ihrer lokalen Umgebung ein:
Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:
gcloud initErstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Google-Konto:
gcloud auth application-default loginEin 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 Bewertung messwerte 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 Rapid Evaluation Service Agent zugeordnet sind, sind:
| Rolle | Berechtigungen |
|---|---|
| Vertex AI Rapid Eval Service Agent (roles/aiplatform.rapidevalServiceAgent) | aiplatform.endpoints.predict |
Bewertung ausführen
Verwenden Sie die Klasse EvalTask, um Bewertungen für die folgenden Anwendungsfälle auszuführen:
Bewertungen im großen Maßstab ausführen (Vorschau)
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. Außerdem ist es wichtig, mehrere Messwerte gleichzeitig in einem einzigen Bewertungslauf zu bewerten.
EvalTask lässt sich auch in Vertex AI Experiments einbinden, um Konfigurationen und Ergebnisse für jeden Bewertungslauf zu verfolgen. Vertex AI Experiments unterstützt Sie bei der Verwaltung und Interpretation von Bewertungsergebnissen, damit Sie fundierte Entscheidungen treffen können.
Das folgende Beispiel zeigt, wie Sie die Klasse EvalTask instanziieren und eine Bewertung ausführen:
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
Verwenden Sie für modellbasierte Messwerte die Klassen PointwiseMetric und PairwiseMetric, um Messwerte zu definieren, die auf Ihre spezifischen Kriterien zugeschnitten sind. Führen Sie Bewertungen mit den folgenden Optionen aus:
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 ändern und in die Benutzeroberfläche für die kostenlose Messwertdefinition 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 Bewertungen in einem Colab Enterprise-Notebook ausführen, können Sie direkt in der Google Cloud Console auf Vorlagen für Messwert-Prompts zugreifen.
Klicken Sie auf den Link für das gewünschte Gen AI Evaluation Service-Notebook.
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.
Klicken Sie in der Seitenleiste auf das Symbol Gen AI Evaluation. Der Bereich Vordefinierte Messwertvorlagen wird geöffnet.
Wählen Sie Punktbasierte oder Paarweise Messwerte aus.
Klicken Sie auf den gewünschten Messwert, z. B. Flüssigkeit. Das Codebeispiel für den Messwert wird angezeigt.
Klicken Sie auf Kopieren , um das Codebeispiel zu kopieren. Optional können Sie auf Anpassen klicken, um voreingestellte Felder für den Messwert zu ändern.
Fügen Sie das Codebeispiel in Ihr Notebook ein.
Vertex AI SDK
Das folgende Vertex AI SDK-Beispiel zeigt, 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,
)
Vorlagenschnittstelle für modellbasierte Messwerte verwenden
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 Messwert-Prompts 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 modellbasierte Messwerte im freien Format 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 kostenlose 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 Ihr Übersetzungsmodell bewerten möchten, können Sie bei Verwendung des Vertex AI SDK BLEU, MetricX oder COMET als Bewertungsmesswerte angeben.
#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 Maßstab 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, mit
Schlüsseln, die den benutzerdefinierten Eingabefeldern in der
metric_prompt_template(für modellbasierte Messwerte) oder den erforderlichen Eingabeparametern (für berechnungsbasierte Messwerte) entsprechen. Sie können nur eine JSONL-Datei angeben. Das folgende Beispiel ist eine Zeile für eine punktbasierte 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 Bewertungen im großen Maßstab ausfü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. Beispiel:
"metric_prompt_template" - METRIC_SPEC_FIELD_CONTENT: Der Feldinhalt für die von Ihnen ausgewählte Messwertspezifikation. Für eine punktbasierte Bewertung 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 Bewertungsergebnisse 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 die OPERATION_ID in der Antwort erhaltene verwenden, um den Status der Bewertung anzufordern:
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üssen, z. B. ein anderes Bewertungsmodell für modellbasierte Messwerte auswählen oder einen neuen berechnungsbasierten Messwert definieren, 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 einen modellbasierten Messwert führt zu mehreren zugrunde liegenden Anfragen an die Gemini API in Vertex AI und verbraucht Kontingent für das Bewertungsmodell. 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 (Requests Per Minute, RPM). Durch Erhöhen des Kontingents 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 Bewertung 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 erwarten, dass eine große Anzahl von Nutzern gleichzeitig modellbasierte Bewertungen und Modellinferenzen in Ihrem Projekt anfordert, ist ein höheres RPM-Limit für das Modell entscheidend, um Engpässe zu vermeiden und die Reaktionsfähigkeit aufrechtzuerhalten.
Wenn Sie das Standardbewertungsmodell gemini-2.0-flash oder neuere Modelle verwenden, empfehlen wir Ihnen, den bereitgestellten Durchsatz zu verwenden, um Ihr Kontingent zu verwalten.
Verwenden Sie für Modelle, die älter als gemini-2.0-flash sind, die folgende Anleitung, um das RPM-Kontingent für das Bewertungsmodell zu erhöhen:
Rufen Sie in der Google Cloud Console die Seite Kontingente unter IAM & Verwaltung auf.
Geben Sie im Feld Filter die Dimension (Modell-ID) und den Messwert (Kontingent-ID für Gemini-Modelle) an:
base_model:gemini-2.0-flashundMetric:aiplatform.googleapis.com/generate_content_requests_per_minute_per_project_per_base_model.Klicken Sie für das Kontingent, das Sie erhöhen möchten, auf das Weitere Aktionen-Menü .
Klicken Sie im Drop-down-Menü auf Kontingent bearbeiten. Der Bereich Kontingentänderungen wird geöffnet.
Geben Sie unter Kontingent bearbeiten einen neuen Kontingentwert ein.
Klicken Sie auf Anfrage senden.
Eine Anfrage zur Kontingenterhöhung wird per E-Mail bestätigt und dauert in der Regel zwei Werktage.
Wenn Sie eine Bewertung 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
Vorlage für modellbasierte Messwerte suchen
Probieren Sie ein Bewertungs-Beispielnotebook aus.