Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Warning
Lo sviluppo delle funzionalità di Prompt Flow è terminato il 20 aprile 2026. La funzionalità verrà ritirata completamente il 20 aprile 2027. Alla data di ritiro, Prompt Flow passa alla modalità di sola lettura. I flussi esistenti continueranno a funzionare fino a tale data.
Recommended action: Eseguire la migrazione dei carichi di lavoro del flusso di richiesta a Microsoft Agent Framework prima del 20 aprile 2027.
Lo strumento Python consente di creare frammenti di codice personalizzati come nodi eseguibili autonomi nel flusso di richiesta. È possibile creare facilmente Python strumenti, modificare il codice e verificare i risultati.
Inputs
| Name | Type | Description | Required |
|---|---|---|---|
| Code | string | Python frammento di codice | Yes |
| Inputs | - | Elenco dei parametri della funzione dello strumento e delle relative assegnazioni | - |
Types
| Type | Python example | Description |
|---|---|---|
| int | param: int | Integer type |
| bool | param: bool | Boolean type |
| string | param: str | String type |
| double | param: float | Double type |
| list | param: list o param: List[T] | List type |
| object | param: dict o param: Dict[K, V] | Object type |
| Connection | param: CustomConnection | Il tipo di connessione viene gestito appositamente |
I parametri con l'annotazione Connection del tipo vengono considerati come input di connessione, ovvero:
- L'estensione del flusso di richiesta mostra un selettore per scegliere la connessione.
- Durante l'esecuzione, il flusso del prompt tenta di trovare la connessione con lo stesso nome dal valore del parametro passato.
Note
L'annotazione Union[...] del tipo è supportata solo per il tipo di connessione, param: Union[CustomConnection, OpenAIConnection]ad esempio .
Outputs
Gli output sono il valore restituito della funzione dello strumento Python.
Scrivere con lo strumento Python
Usare le linee guida seguenti per la scrittura con lo strumento Python.
Guidelines
Python codice dello strumento deve essere costituito da codice completo Python, incluse le eventuali importazioni di moduli necessarie.
Python codice dello strumento deve contenere una funzione decorata con
@tool(funzione strumento), che funge da punto di ingresso per l'esecuzione. Applicare l'elemento@toolDecorator una sola volta all'interno del frammento di codice.L'esempio seguente definisce lo strumento di Python
my_python_tool, decorato con@tool.Python parametri della funzione dello strumento devono essere assegnati nella sezione
Inputs.L'esempio seguente definisce l'input
messagee loworldassegna .Una funzione dello strumento Python deve avere un valore restituito.
Nell'esempio seguente viene restituita una stringa concatenata.
Code
Il frammento di codice seguente mostra la struttura di base di una funzione dello strumento. Il flusso del prompt legge la funzione ed estrae gli input dai parametri della funzione e dalle annotazioni di 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 | Type | Valore di esempio nel file YAML del flusso | Valore passato alla funzione |
|---|---|---|---|
| message | string | world |
world |
| my_conn | CustomConnection |
my_conn |
CustomConnection Oggetto |
Il flusso di richiesta tenta di trovare la connessione denominata my_conn durante l'esecuzione.
Outputs
"hello world"
Chiamare un modello di ragionamento dallo strumento Python
Se è necessario chiamare modelli di ragionamento non supportati dal nodo LLM, è possibile usare lo strumento Python per chiamare direttamente i modelli. Nell'esempio seguente viene illustrato come chiamare un modello di ragionamento dallo strumento 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
Connessione personalizzata nello strumento Python
Se si sviluppa uno strumento di Python che richiede la chiamata a servizi esterni con l'autenticazione, usare la connessione personalizzata nel flusso di richiesta. È possibile usarlo per archiviare in modo sicuro la chiave di accesso e quindi recuperarla nel codice Python.
Creare una connessione personalizzata
Creare una connessione personalizzata che archivia tutte le chiavi API del modello linguistico di grandi dimensioni o altre credenziali necessarie.
Passare al flusso di richiesta nell'area di lavoro e quindi selezionare la scheda Connessioni .
Selezionare Crea>personalizzato.
Nel riquadro destro è possibile definire il nome della connessione. È possibile aggiungere più coppie chiave-valore per archiviare le credenziali e le chiavi selezionando Aggiungi coppie chiave-valore.
Note
Per impostare una coppia chiave-valore come segreto, selezionare la casella di controllo is secret .To set one key-value pair as secret, select the is secret casella di controllo. Questa opzione crittografa e archivia il valore della chiave. Assicurarsi che almeno una coppia chiave-valore sia impostata come segreto. In caso contrario, la connessione non viene creata correttamente.
Usare una connessione personalizzata in Python
Per usare una connessione personalizzata nel codice Python:
Nella sezione del codice del nodo Python importare la libreria di connessioni personalizzata
from promptflow.connections import CustomConnection. Definire un parametro di input del tipoCustomConnectionnella funzione dello strumento.Analizzare l'input nella sezione input e quindi selezionare la connessione personalizzata di destinazione nell'elenco a discesa Valore .
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