Ferramenta Python

Warning

O fluxo de prompts no Microsoft Foundry e no Azure Machine Learning será retirado a 20 de abril de 2027. O fluxo rápido já não é recomendado para novos desenvolvimentos. Migre as aplicações e implementações existentes de fluxo de prompts para o Microsoft Agent Framework antes de 20 de abril de 2027.

As imagens de contentores de fluxo de prompt já não recebem atualizações, incluindo atualizações de segurança e de pacotes. Isto aplica-se a imagens de runtime de fluxo de prompts, incluindo promptflow-runtime, promptflow-runtime-stable, e promptflow-python.

Após 20 de abril de 2027, o fluxo de prompts, incluindo a experiência de autoria web no Microsoft Foundry e Azure Machine Learning, as extensões VS Code e imagens de contentores de fluxo de prompts relacionadas, deixarão de ser suportados nem disponíveis.

Se a sua aplicação depende de implementações de fluxo de prompts ou imagens em tempo de execução, planeie transferir essas cargas de trabalho para alternativas suportadas como Microsoft Agent Framework antes da data de reforma. Para orientações sobre migração, consulte o guia de migração de fluxo de prompts e exemplos de código de migração.

A ferramenta Python permite-lhe criar excertos de código personalizados como nós executáveis autónomos em fluxo de prompts. Pode facilmente criar ferramentas em Python, editar código e verificar resultados.

Entradas

Name Tipo Description Obrigatório
Código cadeia (de caracteres) Excerto de código Python Sim
Entradas - Lista de parâmetros da função da ferramenta e as suas atribuições -

Types

Tipo Exemplo de Python Description
int Param: Int Tipo inteiro
bool param: bool Tipo booleano
cadeia (de caracteres) Param: STR Tipo de string
duplo param: flutuar Tipo duplo
lista param: list ou param: List[T] Tipo de lista
objecto param: dict ou param: Dict[K, V] Tipo de objeto
Conexão param: CustomConnection O tipo de ligação é tratado especialmente

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

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

Note

A Union[...] anotação de tipo é suportada apenas para o tipo de ligação, por exemplo, param: Union[CustomConnection, OpenAIConnection].

Saídas

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

Escreve com a ferramenta Python

Use as seguintes orientações ao escrever com a ferramenta Python.

Guidelines

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

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

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

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

    O exemplo seguinte define a entrada message e atribui-lhe world.

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

    A amostra seguinte devolve uma cadeia concatenada.

Código

O excerto seguinte mostra a estrutura básica de uma função de ferramenta. O fluxo de prompts lê a função e extrai entradas dos parâmetros da função e das anotações de tipos.

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 amostral em fluxo YAML Valor passado à função
mensagem cadeia (de caracteres) world world
my_conn CustomConnection my_conn CustomConnection Objeto

O fluxo de prompts tenta encontrar a ligação nomeada my_conn durante a execução.

Saídas

"hello world"

Chame um modelo de raciocínio a partir da ferramenta Python

Se precisares de chamar modelos de raciocínio que o nó LLM não suporta, podes usar a ferramenta Python para chamar os modelos diretamente. O exemplo seguinte mostra como chamar um modelo de raciocínio a partir 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

Ligação personalizada na ferramenta Python

Se estás a desenvolver uma ferramenta Python que exige chamar serviços externos com autenticação, usa a ligação personalizada em fluxo de prompts. Podes usá-lo para armazenar a chave de acesso de forma segura e depois recuperá-la no teu código Python.

Criar uma ligação personalizada

Crie uma ligação personalizada que armazene todas as chaves de API do seu grande modelo de linguagem ou outras credenciais necessárias.

  1. Vai ao fluxo de prompts no teu espaço de trabalho e depois seleciona o separador Conexões .

  2. Selecione Criar>Personalizado.

    Captura de ecrã que mostra os fluxos no separador Ligações, destacando o botão Personalizar no menu suspenso.

  3. No painel direito, podes definir o nome da tua ligação. Pode adicionar múltiplos pares chave-valor para armazenar as suas credenciais e chaves selecionando Adicionar pares chave-valor.

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

Note

Para definir um par chave-valor como secreto, selecione a caixa de verificação is secret . Esta opção encripta e armazena o valor da sua chave. Certifique-se de que pelo menos um par chave-valor está definido como secreto. Caso contrário, a ligação não é criada com sucesso.

Usa uma ligação personalizada em Python

Para usar uma ligação personalizada no seu código Python:

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

    Captura de ecrã que mostra o nó da cadeia de pesquisa de documentos a destacar a ligação personalizada.

  2. Analisa a entrada na secção de entrada e depois seleciona a tua ligação personalizada de alvo no menu suspenso Valor .

    Captura de ecrã que mostra o nó da cadeia a destacar a ligaçã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