Python tool

Warning

Le développement de fonctionnalités Prompt Flow a pris fin le 20 avril 2026. La fonctionnalité sera entièrement retirée le 20 avril 2027. À la date de mise hors service, le flux d’invite entre en mode lecture seule. Vos flux existants continueront à fonctionner jusqu’à cette date.

Action recommandée : Migrer vos charges de travail de flux d’invite vers Microsoft Agent Framework avant le 20 avril 2027.

L’outil Python vous permet de créer des extraits de code personnalisés en tant que nœuds exécutables autonomes dans le flux d’invite. Vous pouvez facilement créer des outils Python, modifier du code et vérifier les résultats.

Inputs

Name Type Description Required
Code string extrait de code Python Yes
Inputs - Liste des paramètres de fonction outil et de leurs affectations -

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 ou param : List[T] List type
object param : dict ou param : Dict[K, V] Object type
Connection param: CustomConnection Le type de connexion est géré spécialement

Les paramètres avec l’annotation de Connection type sont traités comme des entrées de connexion, ce qui signifie :

  • L’extension de flux d’invite affiche un sélecteur pour choisir la connexion.
  • Pendant l’exécution, le flux d’invite tente de trouver la connexion portant le même nom que la valeur du paramètre passée.

Note

L’annotation de Union[...] type est prise en charge uniquement pour le type de connexion, par exemple param: Union[CustomConnection, OpenAIConnection].

Outputs

Les sorties sont la valeur de retour de la fonction outil Python.

Écrire avec l’outil Python

Utilisez les instructions suivantes lors de l’écriture avec l’outil Python.

Guidelines

  • Python code outil doit se composer de code complet Python, y compris les importations de modules nécessaires.

  • Python code d’outil doit contenir une fonction décorée avec @tool (fonction outil), qui sert de point d’entrée pour l’exécution. Appliquez le @tool décorateur une seule fois dans l’extrait de code.

    L’exemple suivant définit l’outil Python my_python_tool, qui est décoré avec @tool.

  • Python paramètres de fonction outil doivent être attribués dans la section Inputs.

    L’exemple suivant définit l’entrée message et l’assigne world.

  • Une fonction outil Python doit avoir une valeur de retour.

    L’exemple suivant retourne une chaîne concaténée.

Code

L’extrait de code suivant montre la structure de base d’une fonction d’outil. Le flux d’invite lit la fonction et extrait les entrées des paramètres de fonction et des annotations de type.

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 Exemple de valeur dans le flux YAML Valeur passée à la fonction
message string world world
my_conn CustomConnection my_conn CustomConnection Objet

Le flux d’invite tente de trouver la connexion nommée my_conn pendant l’exécution.

Outputs

"hello world"

Appeler un modèle de raisonnement à partir de l’outil Python

Si vous devez appeler des modèles de raisonnement que le nœud LLM ne prend pas en charge, vous pouvez utiliser l'outil Python pour appeler les modèles directement. L’exemple suivant montre comment appeler un modèle de raisonnement à partir de l’outil Python.

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

Connexion personnalisée dans l’outil Python

Si vous développez un outil Python qui nécessite l'appel de services externes avec authentification, utilisez la connexion personnalisée dans le flux d'invite. Vous pouvez l’utiliser pour stocker en toute sécurité la clé d’accès, puis la récupérer dans votre code Python.

Créer une connexion personnalisée

Créez une connexion personnalisée qui stocke toutes vos clés API de modèle de langage volumineux ou d’autres informations d’identification requises.

  1. Accédez au flux d’invite dans votre espace de travail, puis sélectionnez l’onglet Connexions .

  2. Sélectionnez Créer>personnalisé.

    Capture d’écran montrant les flux sous l’onglet Connexions mettant en surbrillance le bouton Personnalisé dans le menu déroulant.

  3. Dans le volet droit, vous pouvez définir votre nom de connexion. Vous pouvez ajouter plusieurs paires clé-valeur pour stocker vos informations d’identification et clés en sélectionnant Ajouter des paires clé-valeur.

    Capture d’écran montrant l’ajout d’un point de connexion personnalisé et le bouton Ajouter des paires clé-valeur.

Note

Pour définir une paire clé-valeur comme secret, activez la case à cocher secret . Cette option chiffre et stocke votre valeur de clé. Assurez-vous qu’au moins une paire clé-valeur est définie comme secret. Sinon, la connexion n’est pas créée avec succès.

Utiliser une connexion personnalisée dans Python

Pour utiliser une connexion personnalisée dans votre code Python :

  1. Dans la section code de votre nœud Python, importez la bibliothèque de connexions personnalisée from promptflow.connections import CustomConnection. Définissez un paramètre d’entrée du type CustomConnection dans la fonction outil.

    Capture d’écran montrant le nœud de chaîne de recherche doc mettant en évidence la connexion personnalisée.

  2. Analysez l’entrée dans la section d’entrée, puis sélectionnez votre connexion personnalisée cible dans la liste déroulante Valeur .

    Capture d’écran montrant le nœud de chaîne mettant en évidence la connexion.

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