promptflow.core Modul#

class promptflow.core.AsyncFlow(*, data: dict, code: Path, path: Path, **kwargs)#

Basiert auf: FlowBase

Async Flow basiert auf Flow und wird verwendet, um Flows asynchron aufzurufen.

Beispiel

from promptflow.core import class AsyncFlow
flow = AsyncFlow.load(source="path/to/flow.yaml")
result = await flow(input_a=1, input_b=2)
async __call__(*args, **kwargs) Mapping[str, Any]#

Aufrufen eines Flows als Funktion im asynchronen Modus. Die Eingaben müssen als Schlüsselwortargumente übergeben werden. Gibt die Ausgabe des Flows zurück. Der Funktionsaufruf löst UserErrorException aus: wenn der Flow nicht gültig ist oder die Eingaben nicht gültig sind. SystemErrorException: wenn die Flow-Ausführung aufgrund eines unerwarteten Executor-Fehlers fehlgeschlagen ist.

Parameter:
  • args – Positionsargumente werden nicht unterstützt.

  • kwargs – Flow-Eingaben als Schlüsselwortargumente.

Gibt zurück:

async invoke(inputs: dict, *, connections: dict = None, **kwargs) LineResult#

Ruft einen Flow auf und gibt ein LineResult-Objekt zurück.

class promptflow.core.AsyncPrompty(path: Union[str, PathLike], model: Optional[dict] = None, **kwargs)#

Basiert auf: Prompty

Async Prompty basiert auf Prompty und wird verwendet, um Promtys asynchron aufzurufen.

Einfaches Beispiel

import asyncio
from promptflow.core import AsyncPrompty
prompty = AsyncPrompty.load(source="path/prompty.prompty")
result = await prompty(input_a=1, input_b=2)
async __call__(*args, **kwargs) Mapping[str, Any]#

Aufrufen eines Prompty als Funktion im asynchronen Modus. Die Eingaben müssen als Schlüsselwortargumente übergeben werden. Gibt die Ausgabe des Prompty zurück. Der Funktionsaufruf löst UserErrorException aus: wenn der Flow nicht gültig ist oder die Eingaben nicht gültig sind. SystemErrorException: wenn die Flow-Ausführung aufgrund eines unerwarteten Executor-Fehlers fehlgeschlagen ist.

Parameter:
  • args – Positionsargumente werden nicht unterstützt.

  • kwargs – Flow-Eingaben als Schlüsselwortargumente.

Gibt zurück:

class promptflow.core.AzureOpenAIModelConfiguration(azure_deployment: str, azure_endpoint: str = None, api_version: str = None, api_key: str = None, connection: str = None)#

Basiert auf: ModelConfiguration

api_key: str = None#
api_version: str = None#
azure_deployment: str#
azure_endpoint: str = None#
connection: str = None#
classmethod from_connection(connection: AzureOpenAIConnection, azure_deployment: str)#

Erstellt eine Modellkonfiguration aus einer Azure OpenAI-Verbindung.

Parameter:
class promptflow.core.Flow(*, data: dict, code: Path, path: Path, **kwargs)#

Basiert auf: FlowBase

Ein Flow im Kontext von PromptFlow ist eine Abfolge von Schritten, die eine Aufgabe definieren. Jeder Schritt im Flow kann ein Prompt sein, der an ein Sprachmodell gesendet wird, oder einfach eine Funktionsaufgabe, und die Ausgabe eines Schritts kann als Eingabe für den nächsten verwendet werden. Flows können verwendet werden, um komplexe Anwendungen mit Sprachmodellen zu erstellen.

Beispiel

from promptflow.core import Flow
flow = Flow.load(source="path/to/flow.yaml")
result = flow(input_a=1, input_b=2)
__call__(*args, **kwargs) Mapping[str, Any]#

Aufrufen eines Flows als Funktion. Die Eingaben müssen als Schlüsselwortargumente übergeben werden. Gibt die Ausgabe des Flows zurück. Der Funktionsaufruf löst UserErrorException aus: wenn der Flow nicht gültig ist oder die Eingaben nicht gültig sind. SystemErrorException: wenn die Flow-Ausführung aufgrund eines unerwarteten Executor-Fehlers fehlgeschlagen ist.

Parameter:
  • args – Positionsargumente werden nicht unterstützt.

  • kwargs – Flow-Eingaben als Schlüsselwortargumente.

Gibt zurück:

invoke(inputs: dict, connections: dict = None, **kwargs) LineResult#

Ruft einen Flow auf und gibt ein LineResult-Objekt zurück.

class promptflow.core.ModelConfiguration#

Basiert auf: object

abstract classmethod from_connection(connection, **kwargs)#

Erstellt eine Modellkonfiguration aus einer Verbindung.

class promptflow.core.OpenAIModelConfiguration(model: str, base_url: str = None, api_key: str = None, organization: str = None, connection: str = None)#

Basiert auf: ModelConfiguration

api_key: str = None#
base_url: str = None#
connection: str = None#
classmethod from_connection(connection: OpenAIConnection, model: str)#

Erstellt eine Modellkonfiguration aus einer OpenAI-Verbindung.

Parameter:
model: str#
organization: str = None#
class promptflow.core.Prompty(path: Union[str, PathLike], model: Optional[dict] = None, **kwargs)#

Basiert auf: FlowBase

Ein Prompty ist ein Prompt mit vordefinierten Metadaten wie Eingaben und kann direkt wie ein Flow ausgeführt werden. Ein Prompty wird als Markdown-Datei mit einem geänderten Front Matter dargestellt. Das Front Matter ist eine YAML-Datei, die Metafelder wie Modellkonfiguration, Eingaben usw. enthält.

Prompty-Beispiel: .. code-block

---
name: Hello Prompty
description: A basic prompt
model:
    api: chat
    configuration:
      type: azure_openai
      azure_deployment: gpt-35-turbo
      api_key="${env:AZURE_OPENAI_API_KEY}",
      api_version=${env:AZURE_OPENAI_API_VERSION}",
      azure_endpoint="${env:AZURE_OPENAI_ENDPOINT}",
    parameters:
      max_tokens: 128
      temperature: 0.2
inputs:
  text:
    type: string
---
system:
Write a simple {{text}} program that displays the greeting message.

Beispiel für Prompty als Funktion

from promptflow.core import Prompty
prompty = Prompty.load(source="path/to/prompty.prompty")
result = prompty(input_a=1, input_b=2)

# Override model config with dict
model_config = {
    "api": "chat",
    "configuration": {
        "type": "azure_openai",
        "azure_deployment": "gpt-35-turbo",
        "api_key": "${env:AZURE_OPENAI_API_KEY}",
        "api_version": "${env:AZURE_OPENAI_API_VERSION}",
        "azure_endpoint": "${env:AZURE_OPENAI_ENDPOINT}",
    },
    "parameters": {
        "max_token": 512
    }
}
prompty = Prompty.load(source="path/to/prompty.prompty", model=model_config)
result = prompty(input_a=1, input_b=2)

# Override model config with configuration
from promptflow.core import AzureOpenAIModelConfiguration
model_config = {
    "api": "chat",
    "configuration": AzureOpenAIModelConfiguration(
        azure_deployment="gpt-35-turbo",
        api_key="${env:AZURE_OPENAI_API_KEY}",
        api_version="${env:AZURE_OPENAI_API_VERSION}",
        azure_endpoint="${env:AZURE_OPENAI_ENDPOINT}",
    ),
    "parameters": {
        "max_token": 512
    }
}
prompty = Prompty.load(source="path/to/prompty.prompty", model=model_config)
result = prompty(input_a=1, input_b=2)

# Override model config with created connection
from promptflow.core._model_configuration import AzureOpenAIModelConfiguration
model_config = {
    "api": "chat",
    "configuration": AzureOpenAIModelConfiguration(
        connection="azure_open_ai_connection",
        azure_deployment="gpt-35-turbo",
    ),
    "parameters": {
        "max_token": 512
    }
}
prompty = Prompty.load(source="path/to/prompty.prompty", model=model_config)
result = prompty(input_a=1, input_b=2)
__call__(*args, **kwargs)#

Aufrufen eines Flows als Funktion. Die Eingaben müssen als Schlüsselwortargumente übergeben werden. Gibt die Ausgabe des Prompty zurück.

Der Wiederholungsmechanismus für die Prompty-Ausführung wird aktiviert, wenn ein wiederholbarer Fehler erkannt wird, einschließlich LLM-Antwortfehlern wie InternalServerError (>=500), RateLimitError (429) und UnprocessableEntityError (422). Er ist so konzipiert, dass bis zu 10 Wiederholungen durchgeführt werden. Das Intervall zwischen den Wiederholungen wächst exponentiell, wobei die Wartezeit 60 Sekunden nicht überschreitet. Die aggregierte Wartezeit für alle Wiederholungen beträgt etwa 400 Sekunden.

Der Funktionsaufruf löst UserErrorException aus: wenn der Flow nicht gültig ist oder die Eingaben nicht gültig sind. SystemErrorException: wenn die Flow-Ausführung aufgrund eines unerwarteten Executor-Fehlers fehlgeschlagen ist.

Parameter:
  • args – Positionsargumente werden nicht unterstützt.

  • kwargs – Flow-Eingaben als Schlüsselwortargumente.

Gibt zurück:

estimate_token_count(*args, **kwargs)#

Schätzt die Tokenanzahl. LLMs lehnen die Anfrage ab, wenn die Anzahl der Prompt-Tokens plus der Antwort-Tokens die vom Modell unterstützte maximale Anzahl von Tokens überschreitet. Sie wird verwendet, um die Gesamtzahl der Tokens in dieser Chat-Runde abzuschätzen.

Parameter:
  • args – Positionsargumente werden nicht unterstützt.

  • kwargs – Prompty-Eingaben als Schlüsselwortargumente.

Gibt zurück:

Schätzung der gesamten Token-Anzahl

Rückgabetyp:

int

classmethod load(source: Union[str, PathLike], **kwargs) Prompty#

Lädt einen nicht-DAG-Flow direkt aus einer Prompty-Datei.

Parameter:

source (Union[PathLike, str]) – Die lokale Prompt-Datei. Muss ein Pfad zu einer lokalen Datei sein. Wenn die Quelle ein Pfad ist, wird sie geöffnet und gelesen. Es wird eine Ausnahme ausgelöst, wenn die Datei nicht existiert.

Gibt zurück:

Ein Prompty-Objekt

Rückgabetyp:

Prompty

render(*args, **kwargs)#

Rendert den Prompt-Inhalt.

Parameter:
  • args – Positionsargumente werden nicht unterstützt.

  • kwargs – Prompty-Eingaben als Schlüsselwortargumente.

Gibt zurück:

Prompt-Inhalt

Rückgabetyp:

str

class promptflow.core.ToolProvider(*args, **kwargs)#

Basiert auf: ABC

Die Basisklasse der Tool-Klasse.

classmethod get_initialize_inputs()#
classmethod get_required_initialize_inputs()#
promptflow.core.log_metric(key, value, variant_id=None)#

Protokolliert eine Metrik für den aktuellen Promptflow-Lauf.

Parameter:
  • key (str) – Metrikname.

  • value (float) – Metrikwert.

  • variant_id (str) – Variant-ID für die Metrik.

promptflow.core.tool(func=None, *, name: Optional[str] = None, description: Optional[str] = None, type: Optional[str] = None, input_settings=None, streaming_option_parameter: Optional[str] = None, **kwargs) Callable#

Decorator für Tool-Funktionen. Die dekorierte Funktion wird als Tool registriert und kann in einem Flow verwendet werden.

Parameter:
  • name (str) – Der Toolname.

  • description (str) – Die Tool-Beschreibung.

  • type (str) – Der Tool-Typ.

  • input_settings (Dict[str, promptflow.entities.InputSetting]) – Dictionary der Eingabeeinstellungen.

Gibt zurück:

Die dekorierte Funktion.

Rückgabetyp:

Callable