Python tool

Warning

O desenvolvimento de recursos do Prompt Flow terminou em 20 de abril de 2026. O recurso será totalmente desativado em 20 de abril de 2027. Na data de desativação, o Fluxo de Prompt entra no modo somente leitura. Seus fluxos existentes continuarão a operar até essa data.

Recommended action: Migrar suas cargas de trabalho de Fluxo de Prompt para Microsoft Agent Framework antes de 20 de abril de 2027.

A ferramenta Python permite que você crie snippets de código personalizados como nós executáveis autocontidos no fluxo de prompt. Você pode criar facilmente Python ferramentas, editar código e verificar os resultados.

Inputs

Name Tipo Description Required
Code cadeia snippet de código Python Yes
Inputs - Lista de parâmetros de função de ferramenta e suas atribuições -

Types

Tipo Python example Description
int param: int Integer type
bool param: bool Boolean type
cadeia param: str String type
double param: float Double type
list param: lista or param: List[T] List type
objeto param: dict or param: Dict[K, V] Object type
Connection param: CustomConnection O tipo de conexão é tratado especialmente

Os parâmetros com a anotação de tipo são tratados como entradas de conexão, o Connection que significa:

  • A extensão de fluxo de prompt mostra um seletor para escolher a conexão.
  • Durante a execução, o fluxo de prompt tenta localizar a conexão com o mesmo nome do valor do parâmetro passado.

Note

A Union[...] anotação de tipo tem suporte apenas para o tipo de conexão, por exemplo, param: Union[CustomConnection, OpenAIConnection].

Outputs

As saídas são o valor retornado da função de ferramenta Python.

Gravar com a ferramenta Python

Use as diretrizes a seguir ao escrever com a ferramenta Python.

Guidelines

  • Python código da ferramenta deve consistir em código de Python completo, incluindo as importações de módulo necessárias.

  • Python código da ferramenta deve conter uma função decorada com @tool (função de ferramenta), que serve como o ponto de entrada para execução. Aplique o @tool decorador apenas uma vez dentro do snippet.

    O exemplo a seguir define a ferramenta Python my_python_tool, que é decorada com @tool.

  • Python parâmetros de função de ferramenta devem ser atribuídos na seção Inputs.

    O exemplo a seguir define a entrada message e a worldatribui.

  • Uma função de ferramenta de Python deve ter um valor retornado.

    O exemplo a seguir retorna uma cadeia de caracteres concatenada.

Code

O snippet a seguir mostra a estrutura básica de uma função de ferramenta. O fluxo de prompt lê a função e extrai entradas de parâmetros de função e anotações 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 Tipo Valor de exemplo no YAML de fluxo Valor passado para a função
mensagem cadeia world world
my_conn CustomConnection my_conn CustomConnection Objeto

O fluxo de prompt tenta localizar a conexão nomeada my_conn durante a execução.

Outputs

"hello world"

Chamar um modelo de raciocínio da ferramenta Python

Se você precisar chamar modelos de raciocínio aos quais o nó LLM não dá suporte, use a ferramenta Python para chamar os modelos diretamente. O exemplo a seguir mostra como chamar um modelo de raciocínio da ferramenta 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

Conexão personalizada na ferramenta Python

Se você estiver desenvolvendo uma ferramenta de Python que requer chamar serviços externos com autenticação, use a conexão personalizada no fluxo de prompt. Você pode usá-la para armazenar com segurança a chave de acesso e recuperá-la em seu código Python.

Criar uma conexão personalizada

Crie uma conexão personalizada que armazene todas as chaves de API do modelo de idioma grande ou outras credenciais necessárias.

  1. Vá para o fluxo de prompt no workspace e selecione a guia Conexões .

  2. Selecione Criar>Personalizado.

    Captura de tela que mostra fluxos na guia Conexões realçando o botão Personalizado no menu suspenso.

  3. No painel direito, você pode definir o nome da conexão. Você pode adicionar vários pares chave-valor para armazenar suas credenciais e chaves selecionando Adicionar pares chave-valor.

    Captura de tela que mostra a adição de um ponto de conexão personalizado e o botão Adicionar pares chave-valor.

Note

Para definir um par chave-valor como segredo, marque a caixa de seleção is secret . Essa opção criptografa e armazena seu valor de chave. Verifique se pelo menos um par chave-valor está definido como segredo. Caso contrário, a conexão não será criada com êxito.

Usar uma conexão personalizada no Python

Para usar uma conexão personalizada em seu código de Python:

  1. Na seção de código no nó Python, importe a biblioteca de conexões personalizada from promptflow.connections import CustomConnection. Defina um parâmetro de entrada do tipo CustomConnection na função de ferramenta.

    Captura de tela que mostra o nó da cadeia de pesquisa de documentos realçando a conexão personalizada.

  2. Analise a entrada para a seção de entrada e selecione sua conexão personalizada de destino na lista suspensa Valor .

    Captura de tela que mostra o nó de cadeia realçando a conexão.

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