Schnelle Bewertung ausführen

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:

    1. Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init
      
    2. 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.

Qualität der Zusammenfassung

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.

Netzdiagramm

Balkendiagramm-Messwerte

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