Flow als Funktion ausführen#
Voraussetzungen - Um von diesem Tutorial zu profitieren, benötigen Sie
Eine Python-Umgebung
Installiertes Prompt Flow SDK
Lernziele - Am Ende dieses Tutorials sollten Sie in der Lage sein
Flow als Funktion ausführen
Flow-Funktion mit In-Memory-Verbindungsobjekt-Überschreibung ausführen
Flow-Funktion mit Feldüberschreibung ausführen
Flow-Funktion mit Streaming-Ausgabe ausführen
Motivation – Diese Anleitung führt Sie durch die wichtigsten Szenarien zum Ausführen von Flows als Funktion. Sie lernen, wie Sie Flows in verschiedenen Szenarien als Funktion nutzen können, um eine pythonischere Verwendung zu ermöglichen.
Hinweis: Die Flow-Kontextkonfigurationen können sich in einigen Fällen gegenseitig beeinflussen. Zum Beispiel die Verwendung von connection & overrides zur Überschreibung desselben Knotens. Das Verhalten ist in diesen Szenarien undefiniert. Bitte vermeiden Sie solche Verwendungen.
Beispiel 1: Flow mit Eingaben als Funktion laden#
from promptflow.client import load_flow
flow_path = "../../flows/standard/web-classification"
sample_url = "https://www.youtube.com/watch?v=o5ZQyXaAv1g"
f = load_flow(source=flow_path)
result = f(url=sample_url)
print(result)
Beispiel 2: Flow mit In-Memory-Verbindungsüberschreibung als Funktion laden#
Sie müssen eine Verbindung namens „new_ai_connection“ haben, um den Flow mit einer neuen Verbindung auszuführen.
# provide parameters to create connection
conn_name = "new_ai_connection"
api_key = "<user-input>"
api_base = "<user-input>"
api_version = "<user-input>"
# create needed connection
import promptflow
from promptflow.entities import AzureOpenAIConnection, OpenAIConnection
# 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=api_key,
api_base=api_base,
api_type="azure",
api_version=api_version,
)
# use this if you have an existing OpenAI account
# connection = OpenAIConnection(
# name=conn_name,
# api_key=api_key,
# )
f = load_flow(
source=flow_path,
)
# directly use connection created above
f.context.connections = {"classify_with_llm": {"connection": connection}}
result = f(url=sample_url)
print(result)
Beispiel 3: Lokaler Flow als Funktion mit Flow-Eingabeüberschreibung#
from promptflow.entities import FlowContext
f = load_flow(source=flow_path)
f.context = FlowContext(
# node "fetch_text_content_from_url" will take inputs from the following command instead of from flow input
overrides={"nodes.fetch_text_content_from_url.inputs.url": sample_url},
)
# the url="unknown" will not take effect
result = f(url="unknown")
print(result)
Beispiel 4: Flow mit Streaming-Ausgabe als Funktion laden#
f = load_flow(source="../../flows/chat/chat-basic")
f.context.streaming = True
result = f(
chat_history=[
{
"inputs": {"chat_input": "Hi"},
"outputs": {"chat_output": "Hello! How can I assist you today?"},
}
],
question="How are you?",
)
answer = ""
# the result will be a generator, iterate it to get the result
for r in result["answer"]:
answer += r
print(answer)

