Nachdem Sie ein Bewertungs-Dataset erstellt haben, müssen Sie die Messwerte definieren, mit denen die Modellleistung gemessen wird. Mit generativen KI-Modellen lassen sich 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.
Im Folgenden finden Sie die wichtigsten Konzepte im Zusammenhang mit Bewertungsmetriken:
Rubriken: Die Kriterien für die Bewertung der Antwort eines LLM-Modells oder einer Anwendung.
Messwerte: Eine Punktzahl, mit der die Modellausgabe anhand der Bewertungskriterien gemessen wird.
Der Gen AI Evaluation Service bietet die folgenden Kategorien von Messwerten:
Rubrikbasierte Messwerte: LLMs in Bewertungs-Workflows einbinden.
Adaptive Rubrics (empfohlen): Rubrics werden dynamisch für jeden Prompt generiert. Antworten werden anhand von detailliertem, nachvollziehbarem Feedback (bestanden oder nicht bestanden) bewertet, das sich auf den jeweiligen Prompt bezieht.
Statische Rubriken: Rubriken werden explizit definiert und dieselbe Rubrik wird auf alle Prompts angewendet. Antworten werden mit denselben numerischen Bewertungsmodellen bewertet. Eine einzelne numerische Bewertung (z. B. 1–5) pro Prompt. Wenn eine Bewertung für eine sehr spezifische Dimension erforderlich ist oder wenn für alle Prompts genau dieselbe Rubrik verwendet werden muss.
Berechnungsbasierte Messwerte: Antworten werden mit deterministischen Algorithmen bewertet, in der Regel anhand von Ground Truth. Eine numerische Punktzahl (z.B.0,0–1,0) pro Prompt. Wenn eine Ground Truth verfügbar ist und mit einer deterministischen Methode abgeglichen werden kann.
Messwerte für benutzerdefinierte Funktionen: Sie können einen eigenen Messwert über eine Python-Funktion definieren.
Rubrikbasierte Messwerte
Rubrikbasierte Messwerte beziehen Large Language Models in Workflows ein, um die Qualität von Modellantworten zu bewerten. Rubrikbasierte Bewertungen eignen sich für eine Vielzahl von Aufgaben, insbesondere für die Bewertung von Schreibqualität, Sicherheit und Befolgung von Anweisungen, die oft schwer mit deterministischen Algorithmen zu bewerten sind.
Adaptive Rubriken
Adaptive Rubriken funktionieren wie Einheitentests für Ihre Modelle. Bei adaptiven Rubriken wird für jeden einzelnen Prompt in Ihrem Datensatz dynamisch eine eindeutige Reihe von Tests zum Bestehen oder Nichtbestehen generiert. Die Bewertungsschemas sorgen dafür, dass die Bewertung für die angeforderte Aufgabe relevant ist, und zielen darauf ab, objektive, nachvollziehbare und konsistente Ergebnisse zu liefern.
Im folgenden Beispiel wird gezeigt, wie adaptive Rubriken für eine Reihe von Prompts generiert werden können:
Prompt | Adaptive Rubriken |
---|---|
„Fasse den folgenden Artikel über die Vorteile von Solarenergie in weniger als 100 Wörtern zusammen…“ |
|
„Schreibe eine kurze, freundliche E‑Mail, in der du Mitarbeiter zum jährlichen Picknick des Unternehmens einlädst. Erwähne, dass das Datum der 15. September ist und dass vegetarische Optionen verfügbar sein werden…“ |
|
Sie können über das SDK auf adaptive Rubriken zugreifen. Wir empfehlen, mit GENERAL_QUALITY
als Standardeinstellung zu beginnen.
Allgemeiner Qualitätsmesswert
GENERAL_QUALITY
generiert je nach Eingabeaufforderung eine Reihe von Rubriken für verschiedene Aufgaben wie 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 prüfen oder in verschiedenen Modellen 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 Rubriken auf die Kriterien zu konzentrieren, die für Sie 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 die spezifischen Einschränkungen und Anweisungen im Prompt berücksichtigt.TEXT_QUALITY
: Hier wird speziell auf die sprachliche Qualität der Antwort geachtet, wobei die Flüssigkeit, Kohärenz und Grammatik bewertet werden.
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 Turns.
Agent-Bewertung
final_response_reference_free
: Bewertet die Qualität der endgültigen Antwort eines Kundenservicemitarbeiters, ohne dass eine Referenzantwort erforderlich ist.
Weitere Informationen zu gezielten 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 aller Prompts anhand eines einheitlichen Benchmarks 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 eine eigene statische Rubrik erstellen. Diese Methode bietet maximale Kontrolle, erfordert aber, 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 berechnungsbasierten 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 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. Es 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.
Genaue Übereinstimmung (exact_match): Misst den Prozentsatz der Antworten, die mit der Referenzantwort identisch sind. Das ist nützlich für die Beantwortung von faktenbasierten 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]
)