Compartir a través de


Python tool

La herramienta Python le permite crear fragmentos de código personalizados como nodos ejecutables independientes en el flujo del mensaje. Puede crear fácilmente herramientas de Python, editar código y comprobar los resultados.

Inputs

Name Type Description Required
Code string Fragmento de código Python Yes
Inputs - Lista de parámetros de función de herramienta y sus asignaciones -

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 o param: List[T] List type
object param: dict o param: Dict[K, V] Object type
Connection param: CustomConnection El tipo de conexión se controla especialmente

Los parámetros con la Connection anotación de tipo se tratan como entradas de conexión, lo que significa:

  • La extensión de flujo del símbolo del sistema muestra un selector para elegir la conexión.
  • Durante la ejecución, el flujo de solicitud intenta encontrar la conexión con el mismo nombre del valor del parámetro pasado.

Note

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

Outputs

Las salidas son el valor devuelto de la función de herramienta de Python.

Escritura con la herramienta Python

Use las instrucciones siguientes al escribir con la herramienta Python.

Guidelines

  • El código de herramienta de Python debe constar de código python completo, incluidas las importaciones de módulo necesarias.

  • El código de la herramienta de Python debe contener una función decorada con @tool (función de herramienta), que actúa como punto de entrada para su ejecución. Aplique el @tool decorador solo una vez dentro del fragmento de código.

    En el ejemplo siguiente se define la herramienta my_python_toolpython , que está decorada con @tool.

  • Los parámetros de función de la herramienta Python deben asignarse en la sección Inputs.

    En el ejemplo siguiente se define la entrada message y se worldle asigna .

  • Una función de herramienta de Python debe tener un valor devuelto.

    En el ejemplo siguiente se devuelve una cadena concatenada.

Code

En el fragmento de código siguiente se muestra la estructura básica de una función de herramienta. Prompt flow lee la función y extrae entradas de parámetros de función y anotaciones de tipo.

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 Valor de ejemplo en YAML de flujo Valor pasado a la función
message string world world
my_conn CustomConnection my_conn Objecto CustomConnection

El flujo del símbolo del sistema intenta encontrar la conexión denominada my_conn durante la ejecución.

Outputs

"hello world"

Llamada a un modelo de razonamiento desde la herramienta python

Si necesita llamar a modelos de razonamiento que el nodo LLM no admite, puede usar la herramienta Python para llamar a los modelos directamente. En el ejemplo siguiente se muestra cómo llamar a un modelo de razonamiento desde la herramienta 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

Conexión personalizada en la herramienta Python

Si va a desarrollar una herramienta de Python que requiere llamar a servicios externos con autenticación, use la conexión personalizada en el flujo de solicitud. Puede usarlo para almacenar de forma segura la clave de acceso y, a continuación, recuperarla en el código de Python.

Creación de una conexión personalizada

Cree una conexión personalizada que almacene todas las claves de API del modelo de lenguaje grande u otras credenciales necesarias.

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

  2. Select Create>Custom.

    Captura de pantalla que muestra los flujos en la pestaña Conexiones resaltando el botón Personalizado en el menú desplegable.

  3. En el panel derecho, puede definir el nombre de la conexión. Puede agregar varios pares clave-valor para almacenar las credenciales y claves seleccionando Agregar pares clave-valor.

    Captura de pantalla que muestra cómo agregar un punto de conexión personalizado y el botón Agregar pares clave-valor.

Note

To set one key-value pair as secret, select the is secret checkbox. Esta opción cifra y almacena el valor de la clave. Asegúrese de que al menos un par clave-valor esté establecido como secreto. De lo contrario, la conexión no se crea correctamente.

Uso de una conexión personalizada en Python

Para usar una conexión personalizada en el código de Python:

  1. En la sección de código del nodo de Python, importe la biblioteca de conexiones personalizada from promptflow.connections import CustomConnection. Defina un parámetro de entrada del tipo CustomConnection en la función de herramienta.

    Captura de pantalla que muestra el nodo de la cadena de búsqueda de documentos que resalta la conexión personalizada.

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

    Captura de pantalla que muestra el nodo de cadena que resalta la conexión.

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