Freigeben über


Python tool

Mit dem Python-Tool können Sie benutzerdefinierte Codeausschnitte als eigenständige ausführbare Knoten im Eingabeaufforderungsfluss erstellen. Sie können auf einfache Weise Python-Tools erstellen, Code bearbeiten und Ergebnisse überprüfen.

Inputs

Name Type Description Required
Code string Python-Codeausschnitt Yes
Inputs - Liste der Toolfunktionsparameter und deren Zuweisungen -

Types

Type Python example Description
int param: int Integer type
bool param: bool Boolean type
string param: str String type
double param: float Double type
list param: List oder Param: List[T] List type
object Param: Diktat oder Param: Dict[K, V] Object type
Connection param: CustomConnection Der Verbindungstyp wird speziell behandelt.

Parameter mit der Connection Typanmerkung werden als Verbindungseingaben behandelt, was bedeutet:

  • Die Eingabeaufforderungsflusserweiterung zeigt eine Auswahl an, um die Verbindung auszuwählen.
  • Während der Ausführung versucht der Eingabeaufforderungsfluss, die Verbindung mit demselben Namen aus dem übergebenen Parameterwert zu finden.

Note

The Union[...] type annotation is supported only for the connection type, for example, param: Union[CustomConnection, OpenAIConnection].

Outputs

Die Ausgaben sind der Rückgabewert der Python-Toolfunktion.

Schreiben mit dem Python-Tool

Verwenden Sie beim Schreiben mit dem Python-Tool die folgenden Richtlinien.

Guidelines

  • Python-Toolcode sollte aus vollständigem Python-Code bestehen, einschließlich aller erforderlichen Modulimporte.

  • Python-Toolcode muss eine Funktion enthalten, die mit @tool (Toolfunktion) versehen ist, die als Einstiegspunkt für die Ausführung dient. Wenden Sie den @tool Dekorateur nur einmal innerhalb des Codeausschnitts an.

    Im folgenden Beispiel wird das Python-Tool my_python_tooldefiniert, das mit @tool.

  • Funktionsparameter des Python-Tools müssen im Abschnitt Inputs zugewiesen werden.

    Im folgenden Beispiel wird die Eingabe message definiert und zugewiesen world.

  • Eine Python-Toolfunktion muss über einen Rückgabewert verfügen.

    Im folgenden Beispiel wird eine verkettete Zeichenfolge zurückgegeben.

Code

Der folgende Codeausschnitt zeigt die grundlegende Struktur einer Toolfunktion. Der Eingabeaufforderungsfluss liest die Funktion und extrahiert Eingaben aus Funktionsparametern und Typanmerkungen.

from promptflow import tool
from promptflow.connections import CustomConnection

# The inputs section will change based on the arguments of the tool function, after you save the code
# Adding type to arguments and return value will help the system show the types properly
# Please update the function name/signature per need
@tool
def my_python_tool(message: str, my_conn: CustomConnection) -> str:
    my_conn_dict = dict(my_conn)
    # Do some function call with my_conn_dict...
    return 'hello ' + message

Inputs

Name Type Beispielwert im Fluss YAML Wert, der an die Funktion übergeben wird
message string world world
my_conn CustomConnection my_conn CustomConnection-Objekt

Der Aufforderungsfluss versucht, die während der Ausführung benannte my_conn Verbindung zu finden.

Outputs

"hello world"

Aufrufen eines Begründungsmodells aus dem Python-Tool

Wenn Sie Gründe für Modelle aufrufen müssen, die der LLM-Knoten nicht unterstützt, können Sie das Python-Tool verwenden, um die Modelle direkt aufzurufen. Das folgende Beispiel zeigt, wie Sie ein Grundmodell aus dem Python-Tool aufrufen.

from promptflow import tool
from promptflow.connections import AzureOpenAIConnection
from openai import AzureOpenAI
 
@tool
def my_python_tool(
    OpenAIConnection: AzureOpenAIConnection,
    scope_reply: str
):
    model_name = "o3-mini"
    deployment = "o3-mini"
    print(OpenAIConnection['api_base'])
    endpoint = OpenAIConnection['api_base'] #"https://<your endpoint>.openai.azure.com/"
    model_name = "o3-mini" #your model name
    deployment = "o3-mini" #your deployment name
 
    subscription_key = OpenAIConnection['api_key']
    api_version = "2024-12-01-preview" #Supply an API version that supports reasoning models.
 
    client = AzureOpenAI(
        api_version=api_version,
        azure_endpoint=endpoint,
        api_key=subscription_key,
    )
 
    response = client.chat.completions.create(
        messages=[
            {
                "role": "system",
                "content": "You are a helpful assistant.",
            },
            {
                "role": "user",
                "content": "I am going to Paris, what should I see?",
            }
        ],
        max_completion_tokens=100000,
        model=deployment
    )
    return response.choices[0].message.content

Benutzerdefinierte Verbindung im Python-Tool

Wenn Sie ein Python-Tool entwickeln, das externe Dienste mit Authentifizierung aufruft, verwenden Sie die benutzerdefinierte Verbindung im Eingabeaufforderungsfluss. Sie können ihn verwenden, um den Zugriffsschlüssel sicher zu speichern und dann in Ihrem Python-Code abzurufen.

Erstellen einer benutzerdefinierten Verbindung

Erstellen Sie eine benutzerdefinierte Verbindung, die alle API-Schlüssel des großen Sprachmodells oder andere erforderliche Anmeldeinformationen speichert.

  1. Go to prompt flow in your workspace, and then select the Connections tab.

  2. Select Create>Custom.

    Screenshot, der Flüsse auf der Registerkarte

  3. Im rechten Bereich können Sie ihren Verbindungsnamen definieren. Sie können mehrere Schlüssel-Wert-Paare hinzufügen, um Ihre Anmeldeinformationen und Schlüssel zu speichern, indem Sie Schlüssel-Wert-Paare hinzufügen auswählen.

    Screenshot des Hinzufügens eines benutzerdefinierten Verbindungspunkts und der Schaltfläche

Note

To set one key-value pair as secret, select the is secret checkbox. Diese Option verschlüsselt und speichert Ihren Schlüsselwert. Stellen Sie sicher, dass mindestens ein Schlüssel-Wert-Paar als geheim festgelegt ist. Andernfalls wird die Verbindung nicht erfolgreich erstellt.

Verwenden einer benutzerdefinierten Verbindung in Python

So verwenden Sie eine benutzerdefinierte Verbindung in Ihrem Python-Code:

  1. Importieren Sie im Codeabschnitt ihres Python-Knotens die benutzerdefinierte Verbindungsbibliothek from promptflow.connections import CustomConnection. Definieren Sie einen Eingabeparameter des Typs CustomConnection in der Toolfunktion.

    Screenshot des Dokumentsuchkettenknotens, der die benutzerdefinierte Verbindung hervorhebung.

  2. Parse the input to the input section, and then select your target custom connection in the Value dropdown.

    Screenshot des Kettenknotens, der die Verbindung hervorhebung.

For example:

from promptflow import tool
from promptflow.connections import CustomConnection

@tool
def my_python_tool(message: str, myconn: CustomConnection) -> str:
    # Get authentication key-values from the custom connection
    connection_key1_value = myconn.key1
    connection_key2_value = myconn.key2