ferramenta Python

Aviso

O fluxo de prompt em Microsoft Foundry e Azure Machine Learning será desativado em 20 de abril de 2027. O fluxo de prompt não é mais recomendado para o novo desenvolvimento. Migre aplicativos e implantações de fluxo de prompt existentes para o Microsoft Agent Framework antes de 20 de abril de 2027.

As imagens de contêiner de fluxo de prompt não estão mais recebendo atualizações, incluindo atualizações de segurança e pacote. Isso se aplica a imagens de runtime de fluxo de prompt, incluindo promptflow-runtime, promptflow-runtime-stablee promptflow-python.

Após 20 de abril de 2027, o fluxo de prompts, incluindo a experiência de criação da Web em Microsoft Foundry e Azure Machine Learning, as extensões do VS Code e imagens de contêiner de fluxo de prompt relacionadas, não terá mais suporte ou disponibilidade.

Se o aplicativo depender de implantações de fluxo de prompt ou imagens de runtime, planeje mover essas cargas de trabalho para alternativas compatíveis, como Microsoft Agent Framework antes da data de desativação. Para obter diretrizes de migração, consulte o guia de migração de fluxo de prompt e exemplos de código de migração.

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.

Entradas

Name Tipo Descrição Obrigatório
Code cadeia snippet de código Python Sim
Entradas - Lista de parâmetros de função de ferramenta e suas atribuições -

Types

Tipo Exemplo de Python Descrição
int param: int Tipo inteiro
bool param: bool Tipo booliano
cadeia param: str Tipo de cadeia de caracteres
duplo parâmetro: float Tipo duplo
lista param: lista or param: List[T] Tipo de lista
objeto param: dict ou param: Dict[K, V] Tipo de objeto
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.

Observação

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

Saídas

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

Entradas

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.

Saídas

"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.

Observação

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.

Por exemplo:

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