Flow-Run-Management#
Voraussetzung – Um das Beste aus diesem Tutorial herauszuholen, benötigen Sie
Ein lokales Klonen des Prompt-Flow-Repositorys
Eine Python-Umgebung mit Jupyter Notebook-Unterstützung (z. B. Jupyter Lab oder die Python-Erweiterung für Visual Studio Code)
Programmieren Sie mit Python :)
Grundkenntnisse im Bereich maschinelles Lernen können von Vorteil sein, sind aber nicht zwingend erforderlich.
Lernziele - Am Ende dieses Tutorials sollten Sie in der Lage sein
Runs über run.yaml verwalten
Run erstellen, der die Eingaben eines anderen Runs referenziert
Run mit Überschreibung der Verbindung erstellen
Motivationen - Dieser Leitfaden führt Sie durch die lokalen Funktionen zur Run-Verwaltung.
0. Abhängige Pakete installieren#
%pip install -r ../../requirements.txt
1. Notwendige Verbindungen erstellen#
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.
Dieses Notebook verwendet die Verbindung open_ai_connection. Wir müssen die Verbindung einrichten, falls wir sie noch nicht hinzugefügt haben. Nach der Erstellung wird sie in der lokalen Datenbank gespeichert und kann in jedem Flow verwendet werden.
Bereiten Sie Ihre Azure OpenAI-Ressource gemäß dieser Anleitung vor und besorgen Sie sich Ihren api_key, falls Sie noch keinen haben.
import json
from promptflow.client import PFClient
from promptflow.connections import AzureOpenAIConnection, OpenAIConnection
# client can help manage your runs and connections.
pf = PFClient()
try:
conn_name = "open_ai_connection"
conn = pf.connections.get(name=conn_name)
print("using existing connection")
except:
# Follow https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/create-resource?pivots=web-portal to create an Azure OpenAI resource.
connection = AzureOpenAIConnection(
name=conn_name,
api_key="<test_key>",
api_base="<test_base>",
api_type="azure",
api_version="<test_version>",
)
# use this if you have an existing OpenAI account
# connection = OpenAIConnection(
# name=conn_name,
# api_key="<user-input>",
# )
conn = pf.connections.create_or_update(connection)
print("successfully created connection")
print(conn)
2. Run mit YAML-Datei erstellen#
Sie können Konfigurationen für einen Run in einer YAML-Datei speichern, um sich wiederholte Eingaben in SDK/CLI zu ersparen. In diesem Schritt erstellen wir einen Beispiel-Run mit einer YAML-Datei.
from promptflow.client import load_run
# load a run from YAML file
base_run = load_run(
source="../../flows/standard/web-classification/run.yml",
# override the default params in the YAML file
params_override=[{"column_mapping": {"url": "${data.url}"}}],
)
# create the run
base_run = pf.runs.create_or_update(run=base_run)
details = pf.get_details(base_run)
details.head(10)
3 Einen Flow-Run erstellen, der die Eingaben eines vorhandenen Runs verwendet#
Beim Ausführen eines Flows mit einem vorhandenen Run können Sie entweder dessen Eingaben oder Ausgaben in der Spaltenzuordnung referenzieren. Die folgende Codezelle zeigt, wie die Eingaben eines Runs in der Spaltenzuordnung referenziert werden.
from promptflow.entities import Run
# directly create the run object
run = Run(
# local flow file
flow="../../flows/standard/web-classification",
# run name
run=base_run,
column_mapping={
# reference another run's inputs data column
"url": "${run.inputs.url}",
},
)
base_run = pf.runs.create_or_update(
run=run,
)
pf.runs.stream(base_run)
4. Einen Flow-Run mit Überschreibung der Verbindung erstellen#
Manchmal möchten Sie die Verbindung oder den Bereitstellungsnamen innerhalb eines Flows beim Einreichen wechseln. Die Überschreibung der Verbindung bietet eine einfache Möglichkeit, dies zu tun, ohne die ursprüngliche flow.dag.yaml zu ändern. In der folgenden Codezelle reichen wir den Flow web-classification ein und überschreiben seine Verbindung mit open_ai_connection. Stellen Sie sicher, dass die Verbindung open_ai_connection in Ihrer lokalen Umgebung vorhanden ist.
run = Run(
# local flow file
flow="../../flows/standard/web-classification",
data="../../flows/standard/web-classification/data.jsonl",
# override connection for node classify_with_llm & summarize_text_content
# you can replace connection to your local connections
connections={
"classify_with_llm": {"connection": "open_ai_connection"},
"summarize_text_content": {"connection": "open_ai_connection"},
},
)
base_run = pf.runs.create_or_update(
run=run,
)
pf.runs.stream(base_run)

