Entwickeln eines Auswertungsflows in Azure KI Studio
Wichtig
Die in diesem Artikel markierten Elemente (Vorschau) sind aktuell als öffentliche Vorschau verfügbar. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und sollte nicht für Produktionsworkloads verwendet werden. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.
Auswertungsflows sind spezielle Typen von Flows, die bewerten, wie gut die Ausgaben einer Ausführung mit bestimmten Kriterien und Zielen übereinstimmen.
In Prompt Flow können Sie Ihren eigenen, auf Ihre Aufgaben und Ziele zugeschnittenen Auswertungsablauf anpassen oder erstellen und ihn dann zur Auswertung anderer Abläufe verwenden. In diesem Dokument lernen Sie Folgendes:
- Entwickeln einer Auswertungsmethode.
- Verstehen von Eingaben, Ausgaben und Protokollierungsmetriken für prompt flow-Auswertungen.
Entwickeln einer Auswertungsmethode
Es gibt zwei Möglichkeiten, eigene Auswertungsmethoden zu entwickeln:
Anpassen eines eingebauten Auswertungsflow: Ändern Sie einen eingebauten Auswertungsflow.
- Wählen Sie unter Tools die Option prompt flow aus.
- Wählen Sie Erstellen aus, um den Assistenten zur Erstellung von Flows zu öffnen.
- Wählen Sie im Flowkatalog unter Katalog durchsuchen die Option Auswertungsflow aus, um nach diesem Typ zu filtern. Wählen Sie ein Beispiel und dann Klonen aus, um Anpassungen vorzunehmen.
Erstellen eines neuen Auswertungsflows: Entwickeln Sie eine Auswertungsmethode von Grund auf neu.
- Wählen Sie unter Tools die Option prompt flow aus.
- Wählen Sie Erstellen aus, um den Assistenten zur Erstellung von Flows zu öffnen.
- Wählen Sie im Flowkatalog unter Erstellen nach Typ im Feld „Auswertungsflow“ die Option Erstellen aus. Anschließend wird eine Vorlage des Auswertungsflows angezeigt.
Grundlegendes zur Auswertung in Prompt-Flow
In Prompt-Flow ist ein Flow eine Sequenz von Knoten, die eine Eingabe verarbeiten und eine Ausgabe generieren. Auswertungsflows haben ebenfalls erforderliche Eingaben und generieren entsprechende Ausgaben.
Besondere Merkmale von Auswertungsmethoden:
- Sie werden normalerweise nach der zu testenden Ausführung ausgeführt und erhalten Ausgaben von dieser Ausführung.
- Abgesehen von den Ausgaben der zu testenden Ausführung können sie optional ein anderes Dataset erhalten, das entsprechende Grundwahrheiten enthalten könnte.
- Sie könnten über einen Aggregationsknoten verfügen, der die Gesamtleistung des getesteten Flows basierend auf den einzelnen Scores berechnet.
- Sie können Metriken mithilfe der
log_metric()
-Funktion protokollieren.
Im Folgenden wird gezeigt, wie die Ein- und Ausgaben bei der Entwicklung von Auswertungsmethoden definiert werden sollten.
Eingaben
Eine Auswertung wird nach einer anderen Ausführung ausgeführt, um zu bewerten, wie gut die Ausgaben dieser Ausführung mit bestimmten Kriterien und Zielen übereinstimmen. Aus diesem Grund erhält die Auswertung die Ausgaben, die von dieser Ausführung generiert wurden.
Es könnten auch andere Eingaben erforderlich sein (z. B. die Grundwahrheit), die aus einem Dataset stammen können. Standardmäßig verwendet die Auswertung dasselbe Dataset wie das Testdataset, das für die getestete Ausführung bereitgestellt wurde. Wenn sich die entsprechenden Bezeichnungen oder die Werte der Zielgrundwahrheit jedoch in einem anderen Dataset befinden, können Sie problemlos zu diesem wechseln.
Daher müssen Sie zum Ausführen einer Auswertung die Quellen dieser erforderlichen Eingaben angeben. Dazu wird beim Übermitteln einer Auswertung der Abschnitt Eingabezuordnung angezeigt.
- Wenn die Datenquelle aus Ihrer Laufausgabe stammt, wird die Quelle als
${run.output.[OutputName]}
angegeben - Wenn die Datenquelle aus Ihrem Testdatensatz stammt, wird die Quelle als
${data.[ColumnName]}
angegeben
Hinweis
Wenn Ihre Auswertung keine Daten aus dem Dataset erfordert, müssen Sie im Abschnitt „Eingabezuordnung“ nicht auf Spalten des Datasets verweisen. Dies zeigt, dass die Auswahl des Datasets eine optionale Konfiguration ist. Die Auswahl eines Datasets wirkt sich nicht auf das Ergebnis der Auswertung aus.
Eingabebeschreibung
Um daran zu erinnern, welche Eingaben zum Berechnen von Metriken erforderlich sind, können Sie eine Beschreibung für jede erforderliche Eingabe hinzufügen. Die Beschreibungen werden angezeigt, wenn die Quellen bei der Batchausführungsübermittlung zugeordnet werden.
Um Beschreibungen für einzelne Eingaben hinzuzufügen, wählen Sie beim Entwickeln Ihrer Auswertungsmethode im Abschnitt „Eingabe“ die Option Beschreibung anzeigen aus. Sie können „Beschreibung ausblenden“ auswählen, um die Beschreibung auszublenden.
Diese Beschreibung wird dann angezeigt, wenn Sie diese Auswertungsmethode bei der Übermittlung einer Batchausführung verwenden.
Ausgaben und Metriken
Die Ausgaben einer Auswertung sind die Ergebnisse, mit denen die Leistung des getesteten Flows gemessen wird. Die Ausgabe enthält normalerweise Metriken wie Scores und kann auch Text mit Begründungen und Vorschläge enthalten.
Scoreausgaben auf Instanzebene
In einem prompten Ablauf wird jeder Probendatensatz einzeln verarbeitet und ein Ausgabedatensatz erzeugt. Ebenso gibt es in den meisten Auswertungsfällen eine Metrik für jede Ausgabe, mit der Sie überprüfen können, welche Leistung der Flow bei einzelnen Daten liefert.
Um die Bewertung für jedes Datenbeispiel aufzuzeichnen, berechnen Sie den Score für jede Ausgabe und protokollieren den Score als Flussausgabe, indem Sie ihn im Abschnitt „Ausgabe“ festlegen. Dieser Vorgang entspricht dem Definieren einer Ausgabe beim Standardflow.
Wir berechnen diesen Score im Knoten line_process
, den Sie beim Erstellen nach Typ von Grund auf neu erstellen und bearbeiten können. Sie können diesen Python-Knoten auch durch einen LLM-Knoten ersetzen, um LLM zum Berechnen des Score zu verwenden.
Wenn diese Bewertungsmethode zur Bewertung eines anderen Flows verwendet wird, kann die Bewertung auf Instanzebene auf der Registerkarte Übersicht>Ausgabe eingesehen werden.
Metrikprotokollierung und Aggregationsknoten
Darüber hinaus ist es auch wichtig, einen Gesamtscore für die Ausführung bereitzustellen. Sie können die Option Als Aggregation festlegen eines Python-Knotens in einem Auswertungsflow aktivieren, um ihn in einen „reduzierenden“ Knoten umzuwandeln, sodass der Knoten die Eingaben als Liste aufnehmen und in einem Batch verarbeiten kann.
Auf diese Weise können Sie alle Scores jeder Flowausgabe berechnen und ein Gesamtergebnis für jede Variante berechnen.
Um Metriken in einem Aggregationsknoten zu protokollieren, verwenden Sie den Prompt flow_sdk.log_metrics(). Die Metriken sollten numerisch (float/int) sein. Die Protokollierung von Metriken mit einem Zeichenfolgentyp wird nicht unterstützt.
Wir berechnen diesen Score im Knoten aggregate
, den Sie beim Erstellen nach Typ von Grund auf neu erstellen und bearbeiten können. Sie können diesen Python-Knoten auch durch einen LLM-Knoten ersetzen, um LLM zum Berechnen des Score zu verwenden. Das folgende Beispiel veranschaulicht die Verwendung der log_metric
-API in einem Auswertungsflow:
from typing import List
from promptflow import tool, log_metric
@tool
def calculate_accuracy(grades: List[str], variant_ids: List[str]):
aggregate_grades = {}
for index in range(len(grades)):
grade = grades[index]
variant_id = variant_ids[index]
if variant_id not in aggregate_grades.keys():
aggregate_grades[variant_id] = []
aggregate_grades[variant_id].append(grade)
# calculate accuracy for each variant
for name, values in aggregate_grades.items():
accuracy = round((values.count("Correct") / len(values)), 2)
log_metric("accuracy", accuracy, variant_id=name)
return aggregate_grades
Da Sie diese Funktion im Python-Knoten aufgerufen haben, müssen Sie sie an keiner anderen Stelle zuweisen, und Sie können die Metriken später anzeigen. Wenn diese Auswertungsmethode in einer Batchausführung verwendet wird, kann der Score auf Instanzebene auf der Registerkarte Übersicht > Metriken angezeigt werden.