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.

Nächste Schritte#