Sie können das Vertex AI SDK für Python verwenden, um Sprachmodelle basierend auf generativer KI programmatisch zu bewerten.
Vertex AI SDK installieren
Führen Sie den folgenden Befehl aus, um eine schnelle Bewertung aus dem Vertex AI SDK für Python zu installieren:
pip install --upgrade google-cloud-aiplatform[rapid_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 zum Arbeiten mit ADC in einer lokalen Umgebung finden Sie unter Lokale Entwicklungsumgebung.
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.
Weitere Informationen zum Rapid Evaluation SDK finden Sie in der Referenz zum Rapid Evaluation SDK.
Bewertungsaufgabe erstellen
Da die Bewertung hauptsächlich mit den Modellen der generativen KI gesteuert wird, führt die Onlinebewertung die Abstraktion von Bewertungsaufgaben ein, um die Bewertung von Anwendungsfällen zu erleichtern. Um faire Vergleiche für Modelle der generativen KI zu erhalten, können Sie in der Regel Bewertungen für Modelle und Prompt-Vorlagen für ein Bewertungs-Dataset und die zugehörigen Messwerte wiederholt ausführen. Die Klasse EvalTask
wurde entwickelt, um dieses neue Bewertungsparadigma zu unterstützen. Darüber hinaus können Sie mit EvalTask
nahtlos Vertex AI Experiments nutzen, um die Einstellungen und Ergebnisse für jeden Bewertungslauf zu verfolgen.
Mit Vertex AI Experiments können Sie Bewertungsergebnisse verwalten und interpretieren, sodass Sie in kürzerer Zeit Maßnahmen ergreifen können. Das folgende Beispiel zeigt, wie Sie eine Instanz der Klasse EvalTask
erstellen und eine Bewertung ausführen:
from vertexai.preview.evaluation import EvalTask
eval_task = EvalTask(
dataset=DATASET,
metrics=["bleu", "rouge_l_sum"],
experiment=EXPERIMENT_NAME
)
Der Parameter metrics
akzeptiert eine Liste von Messwerten, sodass mehrere Messwerte in einem einzigen Bewertungsaufruf gleichzeitig bewertet werden können.
Vorbereitung von Bewertungs-Datasets
Datasets werden als Pandas-DataFrame an eine EvalTask
-Instanz übergeben, wobei jede Zeile ein separates Bewertungsbeispiel (eine sogenannte Instanz) und jede Spalte einen Messwerteingabeparameter darstellt. Unter Messwerte finden Sie die von den einzelnen Messwerten erwarteten Eingaben. Wir bieten mehrere Beispiele für das Erstellen des Bewertungs-Datasets für verschiedene Bewertungsaufgaben.
Bewertung der Zusammenfassung
Erstellen Sie ein Dataset für die punktweise Zusammenfassung mit den folgenden Messwerten:
summarization_quality
groundedness
fulfillment
summarization_helpfulness
summarization_verbosity
Unter Berücksichtigung der erforderlichen Messwerteingabeparameter müssen Sie die folgenden Spalten in unser Bewertungs-Dataset aufnehmen:
instruction
context
response
In diesem Beispiel haben wir zwei Zusammenfassungsinstanzen. Erstellen Sie die Felder instruction
und context
als Eingaben, die für die Bewertung von Zusammenfassungsaufgaben erforderlich sind:
instructions = [
# example 1
"Summarize the text in one sentence.",
# example 2
"Summarize the text such that a five-year-old can understand.",
]
contexts = [
# example 1
"""As part of a comprehensive initiative to tackle urban congestion and foster
sustainable urban living, a major city has revealed ambitious plans for an
extensive overhaul of its public transportation system. The project aims not
only to improve the efficiency and reliability of public transit but also to
reduce the city\'s carbon footprint and promote eco-friendly commuting options.
City officials anticipate that this strategic investment will enhance
accessibility for residents and visitors alike, ushering in a new era of
efficient, environmentally conscious urban transportation.""",
# example 2
"""A team of archaeologists has unearthed ancient artifacts shedding light on a
previously unknown civilization. The findings challenge existing historical
narratives and provide valuable insights into human history.""",
]
Wenn Sie über die LLM-Antwort (die Zusammenfassung) verfügen und eine BYOP-Bewertung (Bring Your Own Prediction) ausführen möchten, können Sie Ihre Antworteingabe so erstellen:
responses = [
# example 1
"A major city is revamping its public transportation system to fight congestion, reduce emissions, and make getting around greener and easier.",
# example 2
"Some people who dig for old things found some very special tools and objects that tell us about people who lived a long, long time ago! What they found is like a new puzzle piece that helps us understand how people used to live.",
]
Mit diesen Eingaben sind wir in der Lage, das Bewertungs-Dataset und EvalTask
zu erstellen.
eval_dataset = pd.DataFrame(
{
"instruction": instructions,
"context": contexts,
"response": responses,
}
)
eval_task = EvalTask(
dataset=eval_dataset,
metrics=[
'summarization_quality',
'groundedness',
'fulfillment',
'summarization_helpfulness',
'summarization_verbosity'
],
experiment=EXPERIMENT_NAME
)
Bewertung der allgemeinen Textgenerierung
Einige modellbasierte Messwerte wie coherence
, fluency
und safety
benötigen nur die Modellantwort, um die Qualität zu bewerten:
eval_dataset = pd.DataFrame({
"response": ["""The old lighthouse, perched precariously on the windswept cliff,
had borne witness to countless storms. Its once-bright beam, now dimmed by time
and the relentless sea spray, still flickered with stubborn defiance."""]
})
eval_task = EvalTask(
dataset=eval_dataset,
metrics=["coherence", "fluency", "safety"],
experiment=EXPERIMENT_NAME
)
Berechnungsbasierte Auswertung
Berechnungsbasierte Messwerte wie "genaue Übereinstimmung", "Bleu" und "Rouge" vergleichen eine Antwort mit einer Referenz und benötigen dementsprechend sowohl Antwort- als auch Referenzfelder im Bewertungs-Dataset:
eval_dataset = pd.DataFrame({
"response": ["The Roman Senate was filled with exuberance due to Pompey's defeat in Asia."],
"reference": ["The Roman Senate was filled with exuberance due to successes against Catiline."],
})
eval_task = EvalTask(
dataset=eval_dataset,
metrics=["exact_match", "bleu", "rouge"],
experiment=EXPERIMENT_NAME
)
Bewertung der Toolnutzung (Funktionsaufrufe)
Zum bewerten von Tool- bzw. Funktionsaufrufen müssen Sie nur die Antwort und die Referenz in das Bewertungs-Dataset aufnehmen.
eval_dataset = pd.DataFrame({
"response": ["""{
"content": "",
"tool_calls":[{
"name":"get_movie_info",
"arguments": {"movie":"Mission Impossible", "time": "today 7:30PM"}
}]
}"""],
"reference": ["""{
"content": "",
"tool_calls":[{
"name":"book_tickets",
"arguments":{"movie":"Mission Impossible", "time": "today 7:30PM"}
}]
}"""],
})
eval_task = EvalTask(
dataset=eval_dataset,
metrics=["tool_call_valid", "tool_name_match", "tool_parameter_key_match",
"tool_parameter_kv_match"],
experiment=EXPERIMENT_NAME
)
Messwert-Bundles
Messwert-Bundles kombinieren häufig verknüpfte Messwerte, um den Bewertungsprozess zu vereinfachen. Die Messwerte sind in diese vier Gruppen unterteilt:
- Bewertungsaufgaben: Zusammenfassung, Question Answering und Textgenerierung
- Bewertungsperspektiven: Ähnlichkeit, Sicherheit und Qualität
- Eingabekonsistenz: Alle Messwerte im selben Bundle verwenden dieselben Dataset-Eingaben.
- Bewertungsparadigma: Punktweise im Vergleich zu paarweise
Sie können diese Messwert-Bundles im Online-Evaluierungsdienst verwenden, um Ihren benutzerdefinierten Bewertungsworkflow zu optimieren.
Diese Tabelle listet Details zu den verfügbaren Messwert-Bundles auf:
Name des Messwert-Bundles | Messwertname | Nutzereingabe |
---|---|---|
text_generation_similarity |
exact_match bleu rouge |
Vorhersage Referenz |
tool_call_quality |
tool_call_valid tool_name_match tool_parameter_key_match tool_parameter_kv_match |
Vorhersage Referenz |
text_generation_quality |
coherence fluency |
Vorhersage |
text_generation_instruction_following |
fulfillment |
Vorhersage Referenz |
text_generation_safety |
safety |
Vorhersage |
text_generation_factuality |
groundedness |
Vorhersage Kontext |
summarization_pointwise_reference_free |
summarization_quality summarization_helpfulness summarization_verbosity |
Vorhersage Kontext Anweisung |
summary_pairwise_reference_free |
pairwise_summarization_quality |
Vorhersage Kontext Anweisung |
qa_pointwise_reference_free |
question_answering_quality question_answering_relevance question_answering_helpfulness |
Vorhersage Kontext Anweisung |
qa_pointwise_reference_based |
question_answering_correctness |
Vorhersage Kontext Anweisung Referenz |
qa_pairwise_reference_free |
pairwise_question_answering_quality |
Vorhersage Kontext Anweisung |
Bewertungsergebnisse ansehen
Nachdem Sie Ihre Bewertungsaufgabe definiert haben, führen Sie die Aufgabe so aus, um Bewertungsergebnisse abzurufen:
eval_result: EvalResult = eval_task.evaluate(
model=MODEL,
prompt_template=PROMPT_TEMPLATE
)
Die Klasse EvalResult
stellt das Ergebnis eines Bewertungslaufs dar, der zusammenfassende Messwerte und eine Messwerttabelle mit einer Bewertungs-Dataset-Instanz und entsprechenden Messwerten pro Instanz enthält. Definieren Sie die Klasse so:
@dataclasses.dataclass
class EvalResult:
"""Evaluation result.
Attributes:
summary_metrics: the summary evaluation metrics for an evaluation run.
metrics_table: a table containing eval inputs, ground truth, and
metrics per row.
"""
summary_metrics: Dict[str, float]
metrics_table: Optional[pd.DataFrame] = None
Durch den Einsatz von Hilfsfunktionen können die Bewertungsergebnisse im Colab-Notebook angezeigt werden.
Visualisierungen
Sie können zusammenfassende Messwerte in einem Radar- oder Balkendiagramm grafisch darstellen, um die Ergebnisse aus verschiedenen Bewertungsläufen zu visualisieren und zu vergleichen. Diese Visualisierung kann hilfreich sein, um verschiedene Modelle und unterschiedliche Prompt-Vorlagen zu bewerten.
Rapid Evaluation API
Informationen zur Rapid Evaluation API finden Sie unter Rapid Evaluation API.
Details zu Dienstkonten
Die Dienstkonten werden vom Online-Bewertungsdienst verwendet, um Vorhersagen vom Online-Vorhersagedienst für modellbasierte Bewertungsmesswerte abzurufen. Dieses Dienstkonto wird dem Online-Bewertungsdienst bei der ersten Anfrage automatisch bereitgestellt.
Name | Beschreibung | E-Mail-Adresse | Rolle |
---|---|---|---|
Vertex AI Rapid Eval Service Agent | Das Dienstkonto, mit dem Vorhersagen für die modellbasierte Bewertung abgerufen werden. | service-PROJECT_NUMBER@gcp-sa-ENV-vertex-eval.iam.gserviceaccount.com |
roles/aiplatform.rapidevalServiceAgent |
Dem Dienst-Agent für die schnelle Bewertung sind folgende Berechtigungen zugeordnet:
Rolle | Berechtigungen |
---|---|
Vertex AI Rapid Eval-Dienst-Agent (roles/aiplatform.rapidevalServiceAgent) | aiplatform.endpoints.predict |
Nächste Schritte
- Probieren Sie ein Bewertungs-Beispielnotebook aus.
- Weitere Informationen zur Bewertung mit generativer KI
- Weitere Informationen zur modellbasierten paarweisen Auswertung mit AutoSxS-Pipeline
- Informationen zur berechnungsbasierten Auswertungspipeline
- Foundation Model optimieren