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:
Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:
gcloud init
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:
Bewertungen im großen Maßstab ausführen (Vorabversion)
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.
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 Bewertung der generativen KI. Der Bereich Vordefinierte Messwertvorlagen wird geöffnet.
Wählen Sie Punktweise- 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 die voreingestellten Felder für den Messwert zu ändern.
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:
Rufen Sie in der Google Cloud Console die Seite Kontingente von 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-flash
undMetric: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 Menü Weitere Aktionen
.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 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
Suchen Sie nach einer Vorlage für modellbasierte Messwerte.
Probieren Sie ein Bewertungs-Beispielnotebook aus.