Compartilhar via


Python tool

A ferramenta Python permite que você crie snippets de código personalizados como nós executáveis autossuficiíveis no fluxo de prompt. Você pode facilmente criar ferramentas Python, editar código e verificar 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: list ou param: List[T] List type
objeto param: dict ou 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

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

Outputs

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

Escreva com a ferramenta Python

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

Guidelines

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

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

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

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

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

  • Uma função de ferramenta 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 fluxo YAML Valor passado para a função
mensagem cadeia world world
my_conn CustomConnection my_conn Objeto CustomConnection

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 que 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 Python que exija a chamada de serviços externos com autenticação, use a conexão personalizada no fluxo de prompt. Você pode usá-lo para armazenar com segurança a chave de acesso e, em seguida, 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. Go to prompt flow in your workspace, and then select the Connections tab.

  2. Select Create>Custom.

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

  3. No painel direito, você pode definir o nome da sua 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 de chave-valor.

Note

To set one key-value pair as secret, select the is secret checkbox. Essa opção criptografa e armazena o valor da 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 em Python

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

  1. Na seção de código no nó do 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 destacando a conexão personalizada.

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

    Captura de tela que mostra o nó da cadeia destacando 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