Chat mit klassenbasiertem Flex-Flow in Azure#
Lernziele - Nach Abschluss dieses Tutorials sollten Sie in der Lage sein:
Batch-Lauf mit einem Flow, der mit einer Python-Klasse definiert ist, einreichen und ihn in Azure auswerten.
0. Abhängige Pakete installieren#
%%capture --no-stderr
%pip install -r ./requirements-azure.txt
1. Verbindung zum Arbeitsbereich#
Anmeldeinformationen konfigurieren#
Wir verwenden DefaultAzureCredential, um Zugriff auf den Arbeitsbereich zu erhalten. DefaultAzureCredential sollte in der Lage sein, die meisten Szenarien zur Authentifizierung mit dem Azure SDK zu bewältigen.
Referenz für weitere verfügbare Anmeldeinformationen, falls dies nicht für Sie funktioniert: Beispiel für die Anmeldeinformationskonfiguration, Referenzdokumentation zu azure-identity.
from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential
try:
credential = DefaultAzureCredential()
# Check if given credential can get token successfully.
credential.get_token("https://management.azure.com/.default")
except Exception as ex:
# Fall back to InteractiveBrowserCredential in case DefaultAzureCredential not work
credential = InteractiveBrowserCredential()
Ein Handle für den Arbeitsbereich erhalten#
Wir verwenden eine Konfigurationsdatei, um eine Verbindung zu einem Arbeitsbereich herzustellen.
from promptflow.azure import PFClient
# Get a handle to workspace
pf = PFClient.from_config(credential=credential)
Erstellen Sie notwendige Verbindungen#
Verbindungen helfen bei der sicheren Speicherung und Verwaltung von geheimen Schlüsseln oder anderen sensiblen Anmeldeinformationen, die für die Interaktion mit LLMs und anderen externen Tools wie Azure Content Safety erforderlich sind.
In diesem Notebook verwenden wir den Flex-Flow basic, der die Verbindung open_ai_connection intern verwendet. Wir müssen die Verbindung einrichten, wenn wir sie noch nicht hinzugefügt haben.
Bereiten Sie Ihre Azure OpenAI-Ressource gemäß dieser Anleitung vor und besorgen Sie sich Ihren api_key, falls Sie noch keinen haben.
Bitte gehen Sie zum Arbeitsbereich-Portal, klicken Sie auf Prompt Flow -> Verbindungen -> Erstellen und folgen Sie dann der Anleitung, um Ihre eigenen Verbindungen zu erstellen. Mehr erfahren Sie unter Verbindungen.
2. Führen Sie die Funktion als Flow im Batch-Lauf mit mehrzeiligen Daten aus#
Erstellen Sie eine flow.flex.yaml-Datei, um einen Flow zu definieren, dessen Einstiegspunkt auf die von uns definierte Python-Funktion zeigt.
# show the flow.flex.yaml content
with open("flow.flex.yaml") as fin:
print(fin.read())
from promptflow.core import AzureOpenAIModelConfiguration
# create the model config to be used in below flow calls
config = AzureOpenAIModelConfiguration(
connection="open_ai_connection", azure_deployment="gpt-4o"
)
Batch-Lauf mit einer Datendatei (mit mehreren Zeilen Testdaten)#
flow = "." # path to the flow directory
data = "./data.jsonl" # path to the data file
# create run with the flow and data
base_run = pf.run(
flow=flow,
init={
"model_config": config,
},
data=data,
column_mapping={
"question": "${data.question}",
"chat_history": "${data.chat_history}",
},
stream=True,
)
details = pf.get_details(base_run)
details.head(10)
3. Bewerten Sie Ihren Flow#
Anschließend können Sie eine Bewertungsmethode verwenden, um Ihren Flow zu bewerten. Die Bewertungsmethoden sind ebenfalls Flows, die in der Regel LLMs verwenden, um zu überprüfen, ob die erzeugte Ausgabe bestimmten Erwartungen entspricht.
Führen Sie die Bewertung für den vorherigen Batch-Lauf durch#
Der **base_run** ist der Batch-Lauf, den wir oben in Schritt 2 abgeschlossen haben, für den Web-Klassifizierungs-Flow mit „data.jsonl“ als Eingabe.
eval_flow = "../eval-checklist/flow.flex.yaml"
config = AzureOpenAIModelConfiguration(
connection="open_ai_connection", azure_deployment="gpt-4o"
)
eval_run = pf.run(
flow=eval_flow,
init={
"model_config": config,
},
data="./data.jsonl", # path to the data file
run=base_run, # specify base_run as the run you want to evaluate
column_mapping={
"answer": "${run.outputs.output}",
"statements": "${data.statements}",
},
stream=True,
)
details = pf.get_details(eval_run)
details.head(10)
import json
metrics = pf.get_metrics(eval_run)
print(json.dumps(metrics, indent=4))
pf.visualize([base_run, eval_run])
Nächste Schritte#
Bis jetzt haben Sie Ihren Chat-Flow erfolgreich ausgeführt und bewertet. Das ist großartig!
Sie können sich weitere Beispiele ansehen
Stream Chat: demonstriert, wie ein Chatbot erstellt wird, der sich an frühere Interaktionen erinnern und den Gesprächsverlauf zur Generierung der nächsten Nachricht verwenden kann.

