Nachdem Sie ein Bewertungs-Dataset erstellt haben, müssen Sie die Messwerte definieren, mit denen die Modellleistung gemessen wird. Mit generativen KI-Modellen können Anwendungen für eine Vielzahl von Aufgaben erstellt werden. Der Gen AI Evaluation Service verwendet ein testgesteuertes Framework, das die Bewertung von subjektiven Bewertungen in objektive, umsetzbare Ergebnisse umwandelt.
Weitere Informationen zu den Messwerttypen finden Sie im Abschnitt Bewertungsmesswerte auf der Übersichtsseite zum Gen AI Evaluation Service.
Allgemeiner Qualitätsmesswert
Sie können über das SDK auf adaptive Rubriken zugreifen. Wir empfehlen, mit GENERAL_QUALITY als Standardeinstellung zu beginnen.
GENERAL_QUALITY generiert je nach Eingabeaufforderung eine Reihe von Rubriken für verschiedene Aufgaben wie das Befolgen von Anweisungen, Formatierung, Ton und Stil. Sie können die Rubrikgenerierung mit der Validierung in der folgenden Codezeile kombinieren:
from vertexai import types
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.RubricMetric.GENERAL_QUALITY,
],
)
Sie können Bewertungsschemas separat generieren, um sie zu überprüfen oder in verschiedenen Modellen und KI-Agenten wiederzuverwenden, bevor Sie sie zum Bewerten von Modellantworten verwenden:
from vertexai import types
# Use GENERAL_QUALITY recipe to generate rubrics, and store them
# as a rubric group named "general_quality_rubrics".
data_with_rubrics = client.evals.generate_rubrics(
src=eval_dataset_df,
rubric_group_name="general_quality_rubrics",
predefined_spec_name=types.RubricMetric.GENERAL_QUALITY,
)
# Specify the group of rubrics to use for the evaluation.
eval_result = client.evals.evaluate(
dataset=data_with_rubrics,
metrics=[types.RubricMetric.GENERAL_QUALITY(
rubric_group_name="general_quality_rubrics",
)],
)
Sie können GENERAL_QUALITY auch mit guidelines in natürlicher Sprache anweisen, die Generierung von Bewertungsschemata auf die für Sie wichtigsten Kriterien zu konzentrieren. Der Gen AI Evaluation Service generiert dann Bewertungsschemata, die sowohl die Standardaufgaben als auch die von Ihnen angegebenen Richtlinien abdecken.
from vertexai import types
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.RubricMetric.GENERAL_QUALITY(
metric_spec_parameters={
"guidelines": "The response must maintain a professional tone and must not provide financial advice."
}
)
],
)
Messwerte zum Targeting
Wenn Sie einen gezielteren Aspekt der Modellqualität bewerten möchten, können Sie Messwerte verwenden, mit denen Rubriken für einen bestimmten Bereich erstellt werden. Beispiel:
from vertexai import types
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.RubricMetric.TEXT_QUALITY,
types.RubricMetric.INSTRUCTION_FOLLOWING,
],
)
Der Gen AI Evaluation Service bietet die folgenden Arten von adaptiven Rubriken:
INSTRUCTION_FOLLOWING: Misst, wie gut die Antwort den spezifischen Einschränkungen und Anweisungen im Prompt entspricht.TEXT_QUALITY: Hier wird speziell die sprachliche Qualität der Antwort bewertet, wobei auf Sprachkompetenz, Kohärenz und Grammatik geachtet wird.
Multi-Turn Conversation
multi_turn_general_quality: Bewertet die allgemeine Konversationsqualität in einem Dialog mit mehreren Runden.multi_turn_text_quality: Bewertet die Textqualität der Antworten in einem Dialog mit mehreren Runden.
KI-Agentenbewertung
final_response_reference_free: Bewertet die Qualität der endgültigen Antwort eines KI-Agenten, ohne dass eine Referenzantwort erforderlich ist.final_response_quality: Verwendet adaptive Bewertungsschemas, um die Qualität der endgültigen Antwort eines KI-Agenten auf Grundlage der Konfiguration und Tool-Nutzung des KI-Agenten zu bewerten.hallucination: Bewertet, ob die Textantworten eines KI-Agents auf der Konfiguration und Toolnutzung des KI-Agents basieren.tool_use_quality: Bewertet die Richtigkeit der Funktionsaufrufe, die vom Agent ausgeführt werden, um auf eine Nutzeranfrage zu reagieren.
Weitere Informationen zu zielgerichteten adaptiven Rubriken finden Sie unter Details zu adaptiven Rubriken.
Statische Bewertungsschemas
Bei einer statischen Rubrik wird für jedes Beispiel in Ihrem Dataset ein einzelner, fester Satz von Bewertungsrichtlinien angewendet. Dieser punktbasierte Ansatz ist nützlich, wenn Sie die Leistung anhand eines einheitlichen Benchmarks für alle Prompts messen müssen.
Im folgenden Beispiel wird die Textqualität anhand einer statischen Rubrik auf einer Skala von 1 bis 5 bewertet:
5: (Very good). Exceptionally clear, coherent, fluent, and concise. Fully adheres to instructions and stays grounded.
4: (Good). Well-written, coherent, and fluent. Mostly adheres to instructions and stays grounded. Minor room for improvement.
3: (Ok). Adequate writing with decent coherence and fluency. Partially fulfills instructions and may contain minor ungrounded information. Could be more concise.
2: (Bad). Poorly written, lacking coherence and fluency. Struggles to adhere to instructions and may include ungrounded information. Issues with conciseness.
1: (Very bad). Very poorly written, incoherent, and non-fluent. Fails to follow instructions and contains substantial ungrounded information. Severely lacking in conciseness.
Der Gen AI Evaluation Service bietet die folgenden statischen Rubrikmesswerte:
GROUNDING: Überprüft die Faktizität und Konsistenz anhand eines bereitgestellten Quelltexts (Ground Truth). Dieser Messwert ist entscheidend für RAG-Systeme.SAFETY: Bewertet die Antwort des Modells auf Verstöße gegen Sicherheitsrichtlinien, z. B. Hassrede oder gefährliche Inhalte.
Sie können auch Vorlagen für Messwert-Prompts wie FLUENCY verwenden.
from vertexai import types
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.RubricMetric.SAFETY,
types.RubricMetric.GROUNDING,
types.RubricMetric.FLUENCY,
],
)
Statische Rubriken anpassen
Für sehr spezielle Anforderungen können Sie ein eigenes statisches Bewertungsschema erstellen. Diese Methode bietet maximale Kontrolle, erfordert jedoch, dass Sie den Bewertungs-Prompt sorgfältig gestalten, um konsistente und zuverlässige Ergebnisse zu erzielen. Wir empfehlen, vor dem Anpassen statischer Rubriken Richtlinien mit GENERAL_QUALITY zu verwenden.
# Define a custom metric to evaluate language simplicity
simplicity_metric = types.LLMMetric(
name='language_simplicity',
prompt_template=types.MetricPromptBuilder(
instruction="Evaluate the story's simplicity for a 5-year-old.",
criteria={
"Vocabulary": "Uses simple words.",
"Sentences": "Uses short sentences.",
},
rating_scores={
"5": "Excellent: Very simple, ideal for a 5-year-old.",
"4": "Good: Mostly simple, with minor complex parts.",
"3": "Fair: Mix of simple and complex; may be challenging for a 5-year-old.",
"2": "Poor: Largely too complex, with difficult words/sentences.",
"1": "Very Poor: Very complex, unsuitable for a 5-year-old."
}
)
)
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
simplicity_metric
],
)
Berechnungsbasierte Messwerte
Berechnungsbasierte Messwerte verwenden deterministische Algorithmen, um die Antwort eines Modells zu bewerten, indem sie mit einer Referenzantwort verglichen wird. Sie erfordern eine Grundwahrheit in Ihrem Dataset und eignen sich ideal für Aufgaben, bei denen eine „richtige“ Antwort genau definiert ist.
Recall-Oriented Understudy for Gisting Evaluation (rouge_l, rouge_1): Misst die Überschneidung von n-Grammen (zusammenhängende Wortfolgen) zwischen der Antwort des Modells und einem Referenztext. Dieser Messwert wird häufig zur Bewertung von Textzusammenfassungen verwendet.
Bilingual Evaluation Understudy (BLEU): Misst, wie ähnlich eine Antwort einem hochwertigen Referenztext ist, indem übereinstimmende N-Gramme gezählt werden. Er ist der Standardmesswert für die Übersetzungsqualität, kann aber auch für andere Aufgaben zur Textgenerierung verwendet werden.
Genau passend (exact_match): Misst den Prozentsatz der Antworten, die mit der Referenzantwort identisch sind. Das ist nützlich für die Beantwortung faktenbasierter Fragen oder Aufgaben, bei denen es nur eine richtige Antwort gibt.
from vertexai import types
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.Metric(name='bleu'),
types.Metric(name='rouge_l'),
types.Metric(name='exact_match')
],
)
Messwert für benutzerdefinierte Funktion
Sie können auch eine benutzerdefinierte Bewertungslogik implementieren, indem Sie eine benutzerdefinierte Python-Funktion an den Parameter custom_function übergeben. Der Gen AI Evaluation Service führt diese Funktion für jede Zeile Ihres Datasets aus.
# Define a custom function to check for the presence of a keyword
def contains_keyword(instance: dict) -> dict:
keyword = "magic"
response_text = instance.get("response", "")
score = 1.0 if keyword in response_text.lower() else 0.0
return {"score": score}
keyword_metric = types.Metric(
name="keyword_check",
custom_function=contains_keyword
)
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[keyword_metric]
)
Messwert für benutzerdefinierte Remote-Funktion
Zusätzlich zur lokalen Ausführung benutzerdefinierter Bewertungslogik können Sie benutzerdefinierte Bewertungslogik implementieren, die sicher in einer Remote-Sandbox-Umgebung ausgeführt wird. Dies ist nützlich, wenn Sie die Bewertung in Ihren Workflow zur Modelloptimierung einbinden möchten oder wenn Sie ein nutzerspezifisches Szenario haben, das nicht von den vorhandenen Bewertungs-Messwerten abgedeckt wird. Dazu übergeben Sie einen Python-Code-Snippet als String an den Parameter remote_custom_function der Klasse Metric. Der Gen AI Evaluation Service führt diese Funktion für jede Zeile Ihres Datasets remote aus.
import pandas as pd
from vertexai import types
code_snippet = """
def evaluate(instance):
if instance['response'] == instance['reference']:
return 1.0
return 0.0
"""
custom_metric = types.Metric(
name="my_custom_code_metric",
remote_custom_function=code_snippet,
)
prompts_df = pd.DataFrame(
{
"prompt": ["What is 2+2?", "What is 3+3?"],
"response": ["4", "5"],
"reference": ["4", "6"],
}
)
eval_dataset = types.EvaluationDataset(
eval_dataset_df=prompts_df,
candidate_name="test_model",
)
evaluation_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[custom_metric],
)
Eingaben für die Bewertungsinstanz
Die Funktion evaluate verwendet ein instance-Dictionary als Argument. instance steht für die Auswertungsinstanz und alle Felder, die in EvaluationInstance ausgefüllt sind, sind für die Funktion als instance[field_name] verfügbar. Verfügbare Felder:
prompt: Der Nutzer-Prompt, der dem Modell gegeben wurde.response: Die vom Modell generierte Ausgabe.reference: Die Grundwahrheit, mit der die Antwort verglichen wird.rubric_groups: Benannte Gruppen von Rubriken, die dem Prompt zugeordnet sind.other_data: Andere Daten, die zum Einfügen von Platzhaltern anhand ihres Schlüssels verwendet werden.agent_eval_data: Daten, die sich auf die Bewertung von KI-Agenten beziehen, z. B. KI-Agentenkonfigurationen und ‑traces.
Technische Einschränkungen
- Ausführungsumgebung:Benutzerdefinierter Code wird in einer Sandbox-Umgebung ohne Netzwerkzugriff ausgeführt.
- Zeitlimit für die Ausführung:Die Ausführung der Bewertung ist auf 1 Minute begrenzt.
- Speicherlimit:Die Gesamtgröße des hochgeladenen Codes in Kombination mit allen während der Ausführung geladenen Daten darf 1,5 GB nicht überschreiten.
Die folgenden Drittanbieterpakete sind zur Ausführungszeit verfügbar:
altair
chess
cv2
deepdiff
editdistance
jsonschema
matplotlib
mpmath
nltk
numpy
pandas
pdfminer
pydantic
rdkit
reportlab
scipy
seaborn
sklearn
sqlparse
statsmodels
striprtf
sympy
tabulate