Nachdem Sie ein Bewertungs-Dataset erstellt haben, definieren Sie als Nächstes die Messwerte, mit denen die Modellleistung gemessen wird. Generative KI-Modelle können Anwendungen für eine Vielzahl von Aufgaben erstellen. 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 Rubriken separat generieren, um sie zu überprüfen oder für verschiedene Modelle und Agents 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 natürlicher Sprache guidelines anweisen, sich bei der Erstellung von Bewertungsschemas auf die Kriterien zu konzentrieren, die Ihnen am wichtigsten sind. Der Gen AI Evaluation Service generiert dann Rubriken, 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 für die Zielgruppe
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 Agenten basierend auf der Konfiguration und Toolnutzung des Agenten zu bewerten.hallucination: Bewertet, ob die Textantworten eines Agenten auf der Konfiguration und der Toolnutzung des Agenten 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 ein einzelner, fester Satz von Bewertungsrichtlinien auf jedes Beispiel in Ihrem Dataset angewendet. Dieser scorebasierte 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 Faktualität und Konsistenz anhand eines bereitgestellten Quelltexts (Ground Truth). Dieser Messwert ist für RAG-Systeme von entscheidender Bedeutung.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
Bei rechenbasierten Messwerten wird die Antwort eines Modells anhand deterministischer Algorithmen bewertet, indem sie mit einer Referenzantwort verglichen wird. Sie erfordern eine Ground Truth in Ihrem Dataset und eignen sich ideal für Aufgaben, bei denen eine „richtige“ Antwort klar 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. Sie wird häufig zur Bewertung der Textzusammenfassung 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 faktenbasierte 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
Sie können nicht nur benutzerdefinierte Bewertungslogik lokal ausführen, sondern auch benutzerdefinierte Bewertungslogik implementieren, die sicher in einer Remote-Sandbox-Umgebung ausgeführt wird. Das ist nützlich, wenn Sie die Bewertung in Ihren Workflow zur Modellabstimmung einbinden möchten oder wenn Sie ein nutzerspezifisches Szenario haben, das nicht von den vorhandenen Bewertungsstatistiken abgedeckt wird. Dazu übergeben Sie ein 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 Benotung 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