Funktionsbasierter Flow#
Experimentelles Feature
Dies ist ein experimentelles Feature und kann sich jederzeit ändern. Erfahren Sie mehr.
Benutzer können eine Funktion direkt als Flow-Einstiegspunkt verwenden.
Funktion als Flow#
Angenommen, wir haben eine Datei flow_entry.py
from promptflow.tracing import trace
class Reply(TypedDict):
output: str
@trace
def my_flow(question: str) -> Reply:
# flow logic goes here
pass
Hinweis: Funktionen, die mit @trace dekoriert sind, lösen Traces aus, die in der von PromptFlow bereitgestellten Benutzeroberfläche angezeigt werden können. Weitere Informationen finden Sie hier.
Flow-Test#
Test über Funktionsaufruf#
Da die Definition eines Flows eine normale Python-Funktion/aufrufbare Klasse ist, empfehlen wir dem Benutzer, diese direkt wie andere Skripte auszuführen.
from flow_entry import my_flow
if __name__ == "__main__":
output = my_flow(question="What's the capital of France?")
print(output)
Konvertierung in einen Flow und Test#
Es ist auch möglich, Ihren Funktions-Einstiegspunkt in einen Flow zu konvertieren und mit den Möglichkeiten von Prompt Flow zu testen.
Sie können mit dem folgenden CLI testen:
# flow entry syntax: path.to.module:function_name
pf flow test --flow flow_entry:my_flow --inputs question="What's the capital of France?"
Hinweis: Dieser Befehl generiert derzeit eine Datei flow.flex.yaml in Ihrem Arbeitsverzeichnis, die zum Einstiegspunkt des Flows wird.
Sehen Sie sich ein vollständiges Beispiel hier an: basic
Chatten mit einem Flow#
Starten Sie eine Benutzeroberfläche, um mit einem Flow zu chatten.
pf flow test --flow flow_entry:my_flow --inputs question="What's the capital of France?" --ui
Weitere Informationen finden Sie hier.
Batch-Ausführung#
Benutzer können einen Flow auch im Batch-Verfahren ausführen.
pf run create --flow "path.to.module:function_name" --data "./data.jsonl"
from path.to.module import my_flow
# Note directly run function in `pf.run` is only supported in local PFClient for now
pf.run(flow=my_flow, data="./data.jsonl")
# user can also directly use entry in `flow` param for batch run
pf.run(flow="path.to.module:function_name", data="./data.jsonl")
Erfahren Sie mehr zu diesem Thema unter Ausführen und Bewerten eines Flows.
Definieren eines Flow-YAML#
Benutzer können eine YAML-Datei mit dem Namen flow.flex.yaml manuell erstellen oder einen Funktions-/aufrufbaren Einstiegspunkt in eine YAML-Datei speichern. Dies ist für fortgeschrittene Szenarien wie Bereitstellung oder Ausführung in der Cloud erforderlich. Eine Flow-YAML könnte wie folgt aussehen:
$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Flow.schema.json
entry: path.to.module:function_name
sample:
inputs:
question: "what's the capital of France?"
Batch-Ausführung mit YAML#
Benutzer können einen Flow im Batch-Verfahren mit YAML ausführen.
# against flow file
pf run create --flow "path/to/flow/flow.flex.yaml" --data "./data.jsonl"
# against a folder if it has a flow.flex.yaml file
pf run create --flow "path/to/flow" --data "./data.jsonl"
pf = PFClient()
pf.run(flow="./flow.flex.yaml", data="./data.jsonl")
Bereitstellen eines Flows#
Benutzer können einen Flow lokal als HTTP-Endpunkt bereitstellen oder ihn auf mehreren Plattformen bereitstellen.
# serve locally from a folder if it has a flow.flex.yaml file
pf flow serve --source "path/to/flow/dir" --port 8088 --host localhost
# serve locally from certain file
pf flow serve --source "./flow.flex.yaml" --port 8088 --host localhost
Mehr erfahren: Bereitstellen eines Flows.