Flow als Funktion ausführen#

Autor:  Avatar AvatarAuf GitHub öffnen

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)