Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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@tooldecorador 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
messagee aworldatribui.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.
Go to prompt flow in your workspace, and then select the Connections tab.
Select Create>Custom.
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.
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:
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 tipoCustomConnectionna função de ferramenta.Parse the input to the input section, and then select your target custom connection in the Value dropdown.
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