Delen via


Python tool

Met het Python-hulpprogramma kunt u aangepaste codefragmenten maken als zelfstandige uitvoerbare knooppunten in de promptstroom. U kunt eenvoudig Python-hulpprogramma's maken, code bewerken en resultaten controleren.

Inputs

Name Type Description Required
Code string Python-codefragment Yes
Inputs - Lijst met hulpprogrammafunctieparameters en de bijbehorende toewijzingen -

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: lijst of param: Lijst[T] List type
object param: dict of param: Dict[K, V] Object type
Connection param: CustomConnection Verbindingstype wordt speciaal verwerkt

Parameters met de Connection typeaantekening worden behandeld als verbindingsinvoer, wat betekent:

  • De promptstroomextensie toont een selector om de verbinding te kiezen.
  • Tijdens de uitvoering probeert de promptstroom de verbinding met dezelfde naam te vinden van de parameterwaarde die is doorgegeven.

Note

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

Outputs

De uitvoer is de retourwaarde van de Python-hulpprogrammafunctie.

Schrijven met het Python-hulpprogramma

Gebruik de volgende richtlijnen bij het schrijven met het Python-hulpprogramma.

Guidelines

  • Python-hulpprogrammacode moet bestaan uit volledige Python-code, inclusief eventuele benodigde moduleimport.

  • Python-hulpprogrammacode moet een functie bevatten die is ingericht met @tool (toolfunctie), die fungeert als het toegangspunt voor uitvoering. Pas de @tool decorator slechts eenmaal toe in het fragment.

    In het volgende voorbeeld wordt het Python-hulpprogramma my_python_toolgedefinieerd, dat is ingericht met @tool.

  • Parameters voor de Python-hulpprogrammafunctie moeten worden toegewezen in de Inputs sectie.

    In het volgende voorbeeld wordt de invoer message gedefinieerd en toegewezen world.

  • Een Python-hulpprogrammafunctie moet een retourwaarde hebben.

    In het volgende voorbeeld wordt een samengevoegde tekenreeks geretourneerd.

Code

In het volgende fragment ziet u de basisstructuur van een hulpprogrammafunctie. De promptstroom leest de functie en extraheert invoer uit functieparameters en typ aantekeningen.

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 Voorbeeldwaarde in stroom-YAML Waarde doorgegeven aan functie
message string world world
my_conn CustomConnection my_conn CustomConnection object

De promptstroom probeert de verbinding te vinden die is benoemd my_conn tijdens de uitvoering.

Outputs

"hello world"

Een redeneringsmodel aanroepen vanuit het Python-hulpprogramma

Als u redeneringsmodellen wilt aanroepen die niet door het LLM-knooppunt worden ondersteund, kunt u het Python-hulpprogramma gebruiken om de modellen rechtstreeks aan te roepen. In het volgende voorbeeld ziet u hoe u een redeneringsmodel aanroept vanuit het Python-hulpprogramma.

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

Aangepaste verbinding in het Python-hulpprogramma

Als u een Python-hulpprogramma ontwikkelt waarvoor externe services met verificatie moeten worden aangeroepen, gebruikt u de aangepaste verbinding in de promptstroom. U kunt deze gebruiken om de toegangssleutel veilig op te slaan en deze vervolgens op te halen in uw Python-code.

Een aangepaste verbinding maken

Maak een aangepaste verbinding waarmee al uw API-sleutels voor het grote taalmodel of andere vereiste referenties worden opgeslagen.

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

  2. Select Create>Custom.

    Schermopname van stromen op het tabblad Verbindingen met de knop Aangepast gemarkeerd in de vervolgkeuzelijst.

  3. In het rechterdeelvenster kunt u de naam van uw verbinding definiëren. U kunt meerdere sleutel-waardeparen toevoegen om uw referenties en sleutels op te slaan door sleutel-waardeparen toevoegen te selecteren.

    Schermopname van het toevoegen van een aangepast verbindingspunt en de knop Sleutel-waardeparen toevoegen.

Note

To set one key-value pair as secret, select the is secret checkbox. Met deze optie wordt uw sleutelwaarde versleuteld en opgeslagen. Zorg ervoor dat ten minste één sleutel-waardepaar is ingesteld als geheim. Anders wordt de verbinding niet gemaakt.

Een aangepaste verbinding gebruiken in Python

Een aangepaste verbinding gebruiken in uw Python-code:

  1. Importeer in de codesectie van uw Python-knooppunt de aangepaste verbindingsbibliotheek from promptflow.connections import CustomConnection. Definieer een invoerparameter van het type CustomConnection in de functie van het hulpprogramma.

    Schermopname van het doc search chain-knooppunt met de markering van de aangepaste verbinding.

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

    Schermopname van het ketenknooppunt waarin de verbinding wordt gemarkeerd.

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