Sviluppare il flusso di richiesta
Flusso prompt è uno strumento di sviluppo che semplifica il ciclo di sviluppo di applicazioni di intelligenza artificiale basate su modelli di linguaggio di grandi dimensioni. Questo articolo illustra come creare e sviluppare un flusso di richieste e un flusso di chat in studio di Azure Machine Learning.
Man mano che aumenta lo slancio per le applicazioni di intelligenza artificiale basate su LLM, il flusso di richieste offre una soluzione completa che semplifica il processo di creazione di prototipi, esperimenti, iterazioni e distribuzione di applicazioni di intelligenza artificiale. Usando il flusso di richiesta, è possibile:
- Orchestrare flussi eseguibili che collegano LLM, richieste e strumenti Python tramite un grafo visivo.
- Testare, eseguire facilmente il debug e scorrere i flussi.
- Creare varianti di prompt e confrontarne le prestazioni.
Creare e sviluppare il prompt flow
Per creare un flusso di richiesta, selezionare Flusso prompt nel riquadro di spostamento a sinistra studio di Azure Machine Learning e quindi selezionare Crea nella pagina Flusso prompt.
Nella schermata Crea un nuovo flusso è possibile creare un flusso:
- Creazione di un flusso standard, chat o valutazione da un modello.
- Clonazione di un esempio disponibile dalla raccolta Explore.
- Importazione di un flusso esistente da file locali o da una condivisione file.
Per creare un flusso, selezionare Crea o Clona nella scheda di flusso desiderata. Nel riquadro della schermata successiva è possibile modificare il nuovo nome del flusso, se necessario, e quindi selezionare Crea o Clona. Il nuovo flusso viene aperto nell'interfaccia utente di creazione.
Sessione di calcolo
Prima di iniziare la creazione, avviare la sessione di calcolo selezionando Avvia sessione di calcolo nella parte superiore della pagina di creazione del flusso. Per l'esecuzione del flusso è necessaria una sessione di calcolo. La sessione di calcolo gestisce le risorse di calcolo necessarie per l'esecuzione dell'applicazione, inclusa un'immagine Docker che contiene tutti i pacchetti di dipendenza necessari.
Pagina di creazione
L'avvio della sessione di calcolo può richiedere alcuni minuti. Durante l'avvio della sessione di calcolo, esaminare le parti della pagina di creazione del flusso.
La visualizzazione Flow o flat sul lato sinistro della pagina è l'area di lavoro principale in cui si crea il flusso. Nella visualizzazione flat è possibile modificare nodi, strumenti, richieste e input; eseguire nodi o l'intero flusso; e definire e visualizzare gli output.
I file in alto a destra mostrano la cartella e la struttura di file del flusso. Ogni flusso ha una cartella che contiene un file flow.dag.yaml , file di codice sorgente e cartelle di sistema. È possibile aggiungere, modificare, eliminare, caricare o scaricare file per test, distribuzione o collaborazione.
La visualizzazione Grafico in basso a destra visualizza la struttura del flusso. È possibile eseguire lo zoom avanti o indietro o usare il layout automatico. Non è possibile modificare direttamente questa visualizzazione, ma è possibile selezionare un nodo per individuarlo e modificarlo nella visualizzazione flat.
Input e output del flusso
Nelle sezioni Input e Output è possibile visualizzare, aggiungere o rimuovere e modificare input e output.
L'input del flusso è costituito dai dati passati nel flusso nel complesso. Per definire lo schema di input, specificare il nome e il tipo e impostare il valore di ogni input per testare il flusso. È possibile fare riferimento all'input del flusso nei nodi del flusso usando
${input.<input name>}
.L'output del flusso è costituito dai dati generati dal flusso nel suo complesso, che riepiloga i risultati dell'esecuzione del flusso. È possibile definire il valore di output del flusso facendo riferimento a un output a nodo singolo usando la sintassi
${<node name>.output}
o${<node name>.output.<field name>}
. È possibile visualizzare ed esportare la tabella dei risultati di output dopo il completamento di un'esecuzione del flusso o dell'esecuzione batch.
Strumenti di flow
In un flusso è possibile usare diversi tipi di strumenti, ad esempio LLM, Python, Prompt, API Serp e Content Safety. Se si seleziona uno strumento, viene aggiunto un nuovo nodo per tale strumento alla fine del flusso. È necessario specificare il nome del nodo e impostare le configurazioni necessarie. È possibile usare i controlli del nodo per modificare la posizione del nodo nel flusso.
Input e output dei nodi
Gli strumenti LLM e Prompt usano Jinja come linguaggio di creazione di modelli per generare dinamicamente il prompt. Ad esempio, è possibile usare {{}}
per racchiudere il nome di input invece di usare il testo fisso, in modo che possa essere sostituito in tempo reale.
È possibile impostare input e output del nodo nei modi seguenti:
- Impostare direttamente il valore di input.
- Fare riferimento all'input del flusso usando
${input.<input name>}
. - Fare riferimento all'output del nodo usando
${<node name>.output}
o${<node name>.output.<field name>}
.
Al termine della composizione di un prompt o di uno script Python, selezionare Convalidare e analizzare l'input per il sistema per analizzare automaticamente l'input del nodo in base al modello di richiesta e all'input della funzione Python.
È possibile collegare i nodi facendo riferimento all'output del nodo. Ad esempio, è possibile fare riferimento all'output del nodo LLM nell'input del nodo Python in modo che il nodo Python consumi l'output del nodo LLM. Nella visualizzazione Grafico è possibile visualizzare i due nodi collegati tra loro.
Nodi LLM
Per un nodo OpenAI LLM di Azure, è necessario selezionare Connessione, API e deployment_name e impostare prompt. La connessione viene usata per archiviare e gestire in modo sicuro le chiavi segrete o altre credenziali riservate necessarie per interagire con Azure OpenAI.
Se non si ha già una connessione, crearla prima di aggiungere il nodo LLM e verificare che la risorsa OpenAI di Azure abbia una distribuzione di chat o completamento . Per altre informazioni, vedere Configurare una connessione e Creare una risorsa e distribuire un modello usando Azure OpenAI.
Nodi Python
Per usare lo strumento Python, è necessario impostare lo script Python, il valore di input e altre configurazioni. Un nuovo nodo Python fornisce la funzione Python boilerplate seguente che definisce input e output.
from promptflow import tool
# 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(input1: str) -> str:
return 'hello ' + input1
Controllo condizionale
Il flusso di prompt offre il controllo condizionale, che consente di impostare le condizioni per l'esecuzione di qualsiasi nodo in un flusso.
Il controllo condizionale offre la possibilità di associare ogni nodo in un flusso a una configurazione di attivazione. Questa configurazione è un'istruzione when
che determina quando deve essere eseguito un nodo. La potenza di questa funzionalità viene realizzata in flussi complessi in cui l'esecuzione di determinate attività dipende dal risultato delle attività precedenti. Usando il controllo condizionale, è possibile configurare i nodi specifici per l'esecuzione solo quando vengono soddisfatte le condizioni specificate.
Impostare la configurazione di attivazione per un nodo selezionando il pulsante Attiva configurazione nella scheda del nodo. Aggiungere un'istruzione When e impostare la condizione. È possibile impostare le condizioni facendo riferimento all'input del flusso o a un output del nodo. Ad esempio, è possibile impostare la condizione ${input.<input name>}
o ${<node name>.output}
come valori specifici. Se la condizione non viene soddisfatta, il nodo viene ignorato e lo stato del nodo viene visualizzato come Ignorato.
Testare un flusso
È possibile testare un flusso eseguendo un singolo nodo o eseguendo l'intero flusso.
- Per eseguire un singolo nodo, selezionare l'icona Esegui nella scheda del nodo. Al termine dell'esecuzione del nodo, è possibile controllare rapidamente i risultati nella sezione Output del nodo.
- Per eseguire l'intero flusso, selezionare Esegui nella parte superiore della pagina.
Output del flusso
Dopo aver selezionato Esegui per eseguire il flusso, è possibile visualizzare lo stato dell'esecuzione nel banner nella parte superiore della pagina. Selezionare Visualizza output nel banner superiore o nella barra dei menu superiore per visualizzare informazioni dettagliate su input, output, esecuzione del flusso e orchestrazione.
Al termine dell'esecuzione del flusso, è possibile selezionare Visualizza output per controllare tutti gli output cronologici nella schermata Output.
Selezionare la scheda Traccia nella schermata Output per visualizzare un grafico che fornisce informazioni sulla durata e sul costo del token associato del flusso. Selezionare il flusso sotto il nome del nodo per visualizzare informazioni dettagliate sulla panoramica del flusso nel riquadro a destra.
Espandere il flusso e selezionare qualsiasi passaggio per visualizzare informazioni dettagliate per tale passaggio. È possibile visualizzare la durata di ogni esecuzione del nodo nell'albero span. Per altre informazioni, vedere Specifica intervallo di traccia.
Sviluppare un flusso di chat
Un flusso di chat è un tipo specifico di flusso di richiesta progettato per lo sviluppo di applicazioni conversazionali. Il flusso di chat si basa sulle funzionalità di flusso standard per fornire supporto avanzato per input/output di chat e cronologia delle chat. Usando il flusso di chat, è possibile creare facilmente un chatbot che gestisce l'input e l'output della chat.
Per creare un flusso di chat, nella schermata Crea un nuovo flusso selezionare Crea nella scheda flusso di chat oppure selezionare Chat nella raccolta Esplora e clonare uno dei flussi disponibili.
In una pagina di creazione del flusso di chat il flusso di chat viene contrassegnato con un'etichetta chat per distinguerla dai flussi standard e di valutazione. Per testare un flusso di chat, selezionare Chat nella parte superiore della pagina per aprire una casella chat per la conversazione.
Input della chat, output della chat e cronologia delle chat
Gli elementi più importanti che differenziano un flusso di chat da un flusso standard sono l'input della chat, la cronologia delle chat e l'output della chat. La cronologia delle chat e l'input della chat sono necessari nei flussi di chat.
L'input della chat si riferisce ai messaggi o alle query inviate dagli utenti al chatbot. Per il successo della conversazione, è essenziale gestire efficacemente l'input della chat, perché implica la comprensione delle intenzioni dell'utente, l'estrazione delle informazioni pertinenti e l'attivazione delle risposte appropriate.
La cronologia delle chat è il record di tutte le interazioni tra l'utente e il chatbot, inclusi gli input dell'utente e gli output generati dall'intelligenza artificiale. Mantenere la cronologia della chat è essenziale per tenere traccia del contesto della conversazione e assicurarsi che l'IA possa generare risposte contestualmente pertinenti.
L'output della chat si riferisce ai messaggi generati dall'intelligenza artificiale inviati agli utenti in risposta ai relativi input. La generazione di output di chat contestualmente appropriati e coinvolgenti è fondamentale per un'esperienza utente positiva.
Un flusso di chat può avere più input. Nella sezione Input del flusso di chat si contrassegna uno degli input come input della chat e si popola il valore di input della chat immettendo una domanda nella casella Chat.
Gestire la cronologia delle chat
Per semplificare la gestione della cronologia delle chat, chat_history
nella sezione Input è riservata la rappresentazione della cronologia delle chat. Non è possibile modificare chat_history
manualmente .
La cronologia delle chat è strutturata come un elenco di input e output. Tutte le interazioni nella casella di chat, inclusi gli input utente, gli output generati e altri input e output del flusso, vengono archiviate automaticamente nella cronologia della chat. Il codice seguente illustra la struttura della cronologia delle chat.
[
{
"inputs": {
"<flow input 1>": "xxxxxxxxxxxxxxx",
"<flow input 2>": "xxxxxxxxxxxxxxx",
"<flow input N>""xxxxxxxxxxxxxxx"
},
"outputs": {
"<flow output 1>": "xxxxxxxxxxxx",
"<flow output 2>": "xxxxxxxxxxxxx",
"<flow output M>": "xxxxxxxxxxxxx"
}
},
{
"inputs": {
"<flow input 1>": "xxxxxxxxxxxxxxx",
"<flow input 2>": "xxxxxxxxxxxxxxx",
"<flow input N>""xxxxxxxxxxxxxxx"
},
"outputs": {
"<flow output 1>": "xxxxxxxxxxxx",
"<flow output 2>": "xxxxxxxxxxxxx",
"<flow output M>": "xxxxxxxxxxxxx"
}
}
]
Nota
Quando si eseguono test nella casella Chat, si salva automaticamente la cronologia delle chat. Per le esecuzioni batch, è necessario includere la cronologia delle chat all'interno del set di dati di esecuzione batch. Se non è disponibile alcuna cronologia chat, impostare su chat_history
un elenco []
vuoto all'interno del set di dati di esecuzione batch.
Per recuperare le interazioni precedenti, fare riferimento chat_history
alle richieste. È quindi possibile fare riferimento a input e output precedenti per creare risposte contestualmente pertinenti. L'incorporamento della cronologia delle chat nelle richieste è essenziale per la creazione di risposte di chatbot consapevoli del contesto e coinvolgenti.
È possibile usare la grammatica del ciclo Jinja per visualizzare un elenco di input e output da chat_history
.
{% for item in chat_history %}
user:
{{item.inputs.question}}
assistant:
{{item.outputs.answer}}
{% endfor %}
Eseguire il test con la casella di chat
La casella Chat offre un modo interattivo per testare il flusso di chat simulando una conversazione con il chatbot. Per testare il flusso di chat usando la casella Chat :
- Selezionare Chat per aprire la barra laterale chat .
- Immettere le domande di test nella casella di chat nella parte inferiore della schermata per inviarle al chatbot.
- Esaminare le risposte del chatbot per assicurarsi che siano contestualmente appropriate e accurate.
- Selezionare Visualizza output nella parte superiore della pagina di creazione per visualizzare ed eseguire rapidamente il debug degli input, degli output e della cronologia delle chat.
- Nella schermata Output selezionare la scheda Traccia e quindi selezionare flusso per visualizzare informazioni dettagliate sulla panoramica del flusso nel riquadro a destra. Espandere il flusso e selezionare qualsiasi passaggio per visualizzare informazioni dettagliate per tale passaggio.