Condividi tramite


Strumento Python

Lo strumento Python consente di offrire frammenti di codice personalizzati come nodi eseguibili autonomi nel flusso di richiesta. È possibile creare facilmente strumenti Python, modificare il codice e verificare i risultati.

Input

Nome Tipo Descrizione Richiesto
Codice stringa Frammento di codice Python
Input - Elenco dei parametri della funzione dello strumento e delle relative assegnazioni -

Tipi

Tipo Esempio in Python Descrizione
int param: int Tipo Integer
bool param: bool Tipi booleani
stringa param: str Tipo di stringa
double param: float Tipo double
list (elenca) param: list o param: List[T] Tipo di elenco
oggetto param: dict o param: Dict[K, V] Object type
Connessione param: Custom Connessione ion il tipo Connessione ion viene gestito in modo speciale

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 selezionare la connessione.
  • Durante il tempo di esecuzione, il flusso di richiesta tenta di trovare la connessione con lo stesso nome dal valore del parametro passato.

Nota

L'annotazione Union[...] del tipo è supportata solo per il tipo di connessione, param: Union[CustomConnection, OpenAIConnection]ad esempio .

Output

Gli output sono la restituzione della funzione dello strumento Python.

Scrivere con lo strumento Python

Usare le linee guida seguenti per scrivere con lo strumento Python.

Linee guida

  • Il codice dello strumento Python deve essere costituito da codice Python completo, incluse le eventuali importazioni di moduli necessarie.

  • Il codice dello strumento Python deve contenere una funzione decorata con @tool (funzione dello strumento), che funge da punto di ingresso per l'esecuzione. Applicare l'elemento @tool Decorator una sola volta all'interno del frammento di codice.

    L'esempio nella sezione successiva definisce lo strumento my_python_toolPython , decorato con @tool.

  • I parametri della funzione dello strumento Python devono essere assegnati nella Inputs sezione .

    L'esempio nella sezione successiva definisce l'input message e lo worldassegna .

  • Una funzione dello strumento Python ha una restituzione.

    L'esempio nella sezione successiva restituisce una stringa concatenata.

Codice

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

Input

Nome Tipo Valore di esempio nel file YAML del flusso Valore passato alla funzione
messaggio stringa world world
my_conn CustomConnection my_conn Oggetto CustomConnection

Il flusso del prompt tenta di trovare la connessione denominata my_conn durante il tempo di esecuzione.

Output

"hello world"

Connessione personalizzata nello strumento Python

Se si sta sviluppando uno strumento Python che richiede la chiamata a servizi esterni con autenticazione, usare la connessione personalizzata nel flusso di richiesta. È possibile usarlo per archiviare in modo sicuro la chiave di accesso e 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.

  1. Passare al flusso di richiesta nell'area di lavoro e quindi passare alla scheda Connessione ions.

  2. Selezionare Crea>personalizzato.

    Screenshot that shows flows on the Connections tab highlighting the Custom button in the drop-down menu.

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

    Screenshot that shows adding a custom connection point and the Add key-value pairs button.

Nota

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:

  1. Nella sezione del codice nel nodo Python importare la libreria from promptflow.connections import CustomConnectiondi connessione personalizzata . Definire un parametro di input del tipo CustomConnection nella funzione dello strumento.

    Screenshot that shows the doc search chain node highlighting the custom connection.

  2. Analizzare l'input nella sezione input e quindi selezionare la connessione personalizzata di destinazione nell'elenco a discesa Valore .

    Screenshot that shows the chain node highlighting the connection.

Ad esempio:

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