Flow initialisieren und testen#
In diesem Dokument kann der Kunde einen Flow initialisieren und testen.
Flow initialisieren#
Erstellen eines Flow-Ordners mit Code/Prompts und YAML-Definitionen des Flows.
Flow von Grund auf neu initialisieren#
Prompt Flow kann drei Arten von Flow-Ordnern erstellen
standard: Grundlegende Struktur des Flow-Ordners.
chat: Ein Chat-Flow ist für die Entwicklung von Konversationsanwendungen konzipiert. Er baut auf den Funktionen eines Standard-Flows auf und bietet erweiterte Unterstützung für Chat-Ein- und -Ausgaben sowie die Verwaltung des Chat-Verlaufs.
evaluation: Evaluations-Flows sind spezielle Arten von Flows, die bewerten, wie gut die Ausgaben eines Flows mit bestimmten Kriterien und Zielen übereinstimmen.
# Create a flow
pf flow init --flow <flow-name>
# Create a chat flow
pf flow init --flow <flow-name> --type chat
Verwenden Sie den Explorer-Bereich von VS Code > Verzeichnissymbol > Rechtsklick > die Aktion „Neuer Flow in diesem Verzeichnis“. Folgen Sie dem erscheinenden Dialog, um Ihren Flow im Zielordner zu initialisieren. 
Alternativ können Sie die Aktion „Neuen Flow erstellen“ im Prompt Flow-Bereich > Abschnitt „Schnellzugriff“ verwenden, um einen neuen Flow zu erstellen 
Struktur des Flow-Ordners
flow.dag.yaml: Die Flow-Definition mit Ein- und Ausgaben, Knoten, Werkzeugen und Varianten zur Erstellung.
.promptflow/flow.tools.json: Enthält Werkzeug-Metadaten, auf die in
flow.dag.yamlverwiesen wird.Quellcodedateien (.py, .jinja2): Vom Benutzer verwaltet, die Skripte, auf die von Werkzeugen verwiesen wird.
requirements.txt: Python-Paketabhängigkeiten für diesen Flow.

Erstellen aus vorhandenem Code#
Der Kunde muss den Pfad des Tool-Skripts an entry übergeben und auch das Prompt Flow-Template-Dictionary an prompt-template, wobei der Schlüssel der Eingabename des Tools und der Wert der Pfad zum Prompt Flow-Template ist. Die Prompt Flow CLI kann die erforderlichen YAML-Definitionen für Prompt Flow aus dem vorhandenen Ordner generieren, indem sie das Tool-Skript und die Prompt-Vorlagen verwendet.
# Create a flow in existing folder
pf flow init --flow <flow-name> --entry <tool-script-path> --function <tool-function-name> --prompt-template <prompt-param-name>=<prompt-tempate-path>
Nehmen wir customer-intent-extraction als Beispiel, das zeigt, wie Langchain-Code in einen Prompt Flow konvertiert wird.

In diesem Fall generiert die Prompt Flow CLI flow.dag.yaml, .promptflow/flow.tools.json und extract_intent_tool.py, was ein Python-Tool im Flow ist.

Flow testen#
Hinweis
Das Testen eines Flows erstellt KEINEN Batch-Lauf-Datensatz. Daher ist es nicht möglich, Befehle wie pf run show-details zu verwenden, um die Laufwerksinformationen abzurufen. Wenn Sie den Laufwerksdatensatz beibehalten möchten, siehe Flow ausführen und auswerten
Prompt Flow bietet auch Möglichkeiten, den initialisierten Flow oder Flow-Knoten zu testen. Dies hilft Ihnen, Ihren Flow schnell zu testen.
Visueller Editor in VS Code für Prompt Flow.#
Öffnen Sie die Datei flow.dag.yaml Ihres Flows. Oben im YAML-Editor finden Sie die Aktion „Visueller Editor“. Verwenden Sie diese, um den visuellen Editor mit GUI-Unterstützung zu öffnen.

Flow testen#
Der Kunde kann die CLI oder die VS Code-Erweiterung zum Testen des Flows verwenden.
# Test flow
pf flow test --flow <flow-name>
# Test flow with specified variant
pf flow test --flow <flow-name> --variant '${<node-name>.<variant-name>}'
Die Protokolle und Ergebnisse des Flow-Tests werden im Terminal angezeigt.

Die Prompt Flow CLI generiert Testprotokolle und Ausgaben in .promptflow
flow.detail.json: Detaillierte Informationen zum Flow-Test, einschließlich des Ergebnisses jedes Knotens.
flow.log: Das Protokoll des Flow-Tests.
flow.output.json: Das Ergebnis des Flow-Tests.

Der Rückgabewert der Funktion test sind die Flow-Ausgaben.
from promptflow.client import PFClient
pf_client = PFClient()
# Test flow
inputs = {"<flow_input_name>": "<flow_input_value>"} # The inputs of the flow.
flow_result = pf_client.test(flow="<flow_folder_path>", inputs=inputs)
print(f"Flow outputs: {flow_result}")
Die Protokolle und Ergebnisse des Flow-Tests werden im Terminal angezeigt.

Die Prompt Flow CLI generiert Testprotokolle und Ausgaben in .promptflow
flow.detail.json: Detaillierte Informationen zum Flow-Test, einschließlich des Ergebnisses jedes Knotens.
flow.log: Das Protokoll des Flow-Tests.
flow.output.json: Das Ergebnis des Flow-Tests.

Sie können die Aktion entweder im Standard-YAML-Editor oder im visuellen Editor verwenden, um den Flow-Test auszulösen. Sehen Sie sich die nachstehenden Momentaufnahmen an:

Einen einzelnen Knoten im Flow testen#
Der Kunde kann einen einzelnen Python-Knoten im Flow testen. Dies verwendet die vom Kunden bereitgestellten Daten oder den Standardwert des Knotens als Eingabe. Es wird nur der vom Kunden angegebene Knoten mit der Eingabe ausgeführt.
Der Kunde kann diesen Befehl ausführen, um den Flow zu testen.
# Test flow node
pf flow test --flow <flow-name> --node <node-name>
Die Protokolle und Ergebnisse des Flow-Knoten-Tests werden im Terminal angezeigt. Die Details des Knoten-Tests werden in .promptflow/flow-<node-name>.node.detail.json generiert.
Der Kunde kann diesen Befehl ausführen, um den Flow zu testen. Der Rückgabewert der Funktion test sind die Knoten-Ausgaben.
from promptflow.client import PFClient
pf_client = PFClient()
# Test not iun the flow
inputs = {<node_input_name>: <node_input_value>} # The inputs of the node.
node_result = pf_client.test(flow=<flow_folder_path>, inputs=inputs, node=<node_name>)
print(f"Node outputs: {node_result}")
Die Protokolle und Ergebnisse des Flow-Knoten-Tests werden im Terminal angezeigt. Die Details des Knoten-Tests werden in .promptflow/flow-<node-name>.node.detail.json generiert.
Die Prompt Flow-Erweiterung bietet Inline-Aktionen sowohl im Standard-YAML-Editor als auch im visuellen Editor, um einzelne Knotenläufe auszulösen.

Testen im interaktiven Modus#
Die Prompt Flow CLI bietet eine Möglichkeit, eine interaktive Chat-Sitzung für Chat-Flows zu starten. Der Kunde kann den folgenden Befehl verwenden, um eine interaktive Chat-Sitzung zu starten
# Chat in the flow
pf flow test --flow <flow-name> --interactive
Nachdem dieser Befehl ausgeführt wurde, kann der Kunde im Terminal mit dem Chat-Flow interagieren. Der Kunde kann **Enter** drücken, um die Nachricht an den Chat-Flow zu senden. Beenden kann er mit **Strg+C**. Die Prompt Flow CLI unterscheidet die Ausgabe verschiedener Rollen durch Farben: Benutzereingabe, Bot-Ausgabe, Flow-Skript-Ausgabe, Knoten-Ausgabe.
Verwenden Sie diesen Chat-Flow, um die Verwendung des interaktiven Modus zu zeigen.

Wenn ein Flow Chat-Eingaben oder Chat-Ausgaben in der Flow-Oberfläche enthält, gibt es bei der Auslösung eines Flow-Tests eine Auswahl. Sie können den interaktiven Modus wählen, wenn Sie möchten.

Wenn der LLM-Knoten im Chat-Flow mit der Flow-Ausgabe verbunden ist, streamt das Prompt Flow SDK die Ergebnisse des LLM-Knotens.
Das Flow-Ergebnis wird im Terminal gestreamt, wie unten gezeigt.

Der LLM-Knoten-Rückgabewert der Funktion test ist ein Generator. Sie können das Ergebnis auf diese Weise verbrauchen
from promptflow.client import PFClient
pf_client = PFClient()
# Test flow
inputs = {"<flow_input_name>": "<flow_input_value>"} # The inputs of the flow.
flow_result = pf_client.test(flow="<flow_folder_path>", inputs=inputs)
for item in flow_result["<LLM_node_output_name>"]:
print(item)
Einen einzelnen Knoten im Flow debuggen#
Der Kunde kann einen einzelnen Python-Knoten in VS Code über die Erweiterung debuggen.
Haltepunkte und Debugging-Funktionen für die Python-Schritte in Ihrem Flow. Setzen Sie einfach die Haltepunkte und verwenden Sie die Debug-Aktionen entweder im Standard-YAML-Editor oder im visuellen Editor.
