Condividi tramite


Sviluppare un prompt flow (versione classica)

Annotazioni

Questo documento fa riferimento al portale di Microsoft Foundry (versione classica).

🔍Per informazioni sul nuovo portale, vedere la documentazione di Microsoft Foundry (nuova).

Importante

Gli elementi contrassegnati (anteprima) in questo articolo sono attualmente disponibili in anteprima pubblica. Questa anteprima viene fornita senza un contratto di servizio e non è consigliabile per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere Supplemental Terms of Use for Microsoft Azure Previews.

Prompt flow è uno strumento di sviluppo progettato per semplificare l'intero ciclo di sviluppo delle applicazioni di IA basate su Large Language Model (LLM). Prompt flow offre una soluzione completa che semplifica il processo di creazione di prototipi, la sperimentazione, l'iterazione e la distribuzione delle applicazioni di intelligenza artificiale.

Con prompt flow, è possibile:

  • Orchestrare flussi eseguibili con LLM, prompt e strumenti Python tramite un grafo visualizzato.
  • Testare, eseguire il debug e scorrere i flussi con facilità.
  • Creare varianti di prompt e confrontarne le prestazioni.

Questo articolo illustra come creare e sviluppare il primo flusso di richieste nel portale di Microsoft Foundry.

Prerequisiti

Importante

Questo articolo fornisce il supporto legacy per i progetti basati su hub. Non funzionerà per i progetti Foundry. Vedi Come faccio a sapere quale tipo di progetto ho?

Nota sulla compatibilità dell'SDK: gli esempi di codice richiedono una versione specifica di Microsoft Foundry SDK. Se si verificano problemi di compatibilità, prendere in considerazione migrare da un progetto basato su hub a un progetto Foundry.

  • Il prompt flow richiede una sessione di calcolo. Se non si ha un runtime, è possibile crearne uno nel portale foundry.
  • È necessario un modello distribuito.
  • Nel tuo progetto, configura il controllo degli accessi per l'account dello storage di BLOB. Assegnare il ruolo Collaboratore dati BLOB di archiviazione all'account utente.
    • Nella parte inferiore sinistra del portale foundry selezionare Centro gestione.
    • In Risorse connesse per l'hub selezionare il collegamento corrispondente al tipo Azure Blob Storage.
    • Selezionare Visualizza nel portale di Azure
    • Nella Azure portal selezionare Access control (IAM).
    • Selezionare Aggiungi>Aggiungi assegnazione di ruolo.
    • Cercare Storage Blob Data Contributor e quindi selezionarlo.
    • Usare la pagina Aggiungi assegnazione di ruolo per aggiungere se stessi come membro.
    • Selezionare Rivedi e assegna per esaminare l'assegnazione.
    • Selezionare Verifica e assegna per assegnare il ruolo.

Creare e sviluppare il prompt flow

È possibile clonare gli esempi disponibili nella raccolta o creando il flusso da zero. Se sono già disponibili file di flusso in locale o in una condivisione file, è anche possibile importare i file per creare un flusso.

Per creare un prompt flow dalla raccolta nel portale di Fonderia:

Suggerimento

Poiché è possibile personalizzare il riquadro sinistro nel portale di Microsoft Foundry, è possibile che vengano visualizzati elementi diversi rispetto a quelli illustrati in questi passaggi. Se non viene visualizzato ciò che si sta cercando, selezionare ... Altro nella parte inferiore del riquadro sinistro.

Accedere a Microsoft Foundry. Assicurarsi che l'interruttore New Foundry sia disattivato. Questi passaggi fanno riferimento a Foundry (versione classica).

  1. Selezionare il progetto.

  2. Se ti trovi nel Centro gestione, selezionare Vai al progetto per tornare al progetto.

  3. Dal menu a scomparsa a sinistra selezionare Prompt flow.

  4. Seleziona + Crea.

  5. Nel riquadro Flusso standard, selezionare Crea.

  6. Nella pagina Crea un nuovo flusso, immettere un nome di cartella e quindi selezionare Crea.

    Screenshot della selezione e della creazione di un flusso standard.

  7. Verrà visualizzata la pagina di creazione del prompt flow. Selezionare Avvia sessione di calcolo per avere una sessione di calcolo in esecuzione per il flusso.

  8. È ora possibile iniziare a creare il flusso. Per impostazione predefinita viene visualizzato un flusso di esempio. Questo flusso di esempio include nodi per gli strumenti LLM e Python.

    Screenshot dell'input e dell'output del flusso di flusso nella pagina del prompt flow di modifica.

    Annotazioni

    Vista a grafo solo per la visualizzazione. Mostra la struttura del flusso che si sta sviluppando. Non è possibile modificare direttamente la visualizzazione del grafo, ma è possibile fare zoom avanti e indietro, nonché scorrerla. È possibile selezionare un nodo nella vista a grafo per evidenziare e passare al nodo nella vista di modifica dello strumento.

  9. Facoltativamente, è possibile aggiungere altri strumenti al flusso. Le opzioni dello strumento visibili sono LLM, Richiesta e Python. Per visualizzare altri strumenti, selezionare + Altri strumenti.

    Screenshot della posizione in cui è possibile trovare altri strumenti nella pagina del prompt flow di modifica.

  10. Selezionare una connessione e una distribuzione nell'editor degli strumenti LLM.

    Screenshot della connessione e della distribuzione selezionate nello strumento LLM nella pagina del prompt flow di modifica.

  11. Nella sezione Input aggiungere un valore per l'argomento. Ad esempio, "atomi".

  12. Selezionare Esegui per eseguire il flusso.

    Screenshot della posizione in cui selezionare Esegui nella pagina del prompt flow di modifica.

  13. Lo stato di esecuzione del flusso viene visualizzato come In esecuzione.

    Screenshot del flusso nello stato in esecuzione nella pagina del prompt flow di modifica.

  14. Al termine dell'esecuzione del flusso, selezionare Visualizza output per visualizzare i risultati del flusso.

    Screenshot della posizione in cui è possibile selezionare per visualizzare i risultati del flusso dalla pagina del prompt flow di modifica.

  15. È possibile visualizzare lo stato e l'output dell'esecuzione del flusso nella sezione Output.

    Screenshot dei dettagli dell'output.

Creazione del flusso

Ogni flusso è rappresentato da una cartella che contiene un file "flow.dag.yaml", i file del codice sorgente e le cartelle di sistema. È possibile aggiungere nuovi file, nonché modificare ed eliminare quelli esistenti. È anche possibile esportare i file in file locali o importarli da locale.

Oltre a modificare inline il nodo nella visualizzazione predefinita, è anche possibile attivare l'opzione Modalità file non elaborato e selezionare il nome del file per modificare il file nella scheda del file di apertura.

Input e output del flusso

L'input del flusso è costituito dai dati passati nel flusso nel complesso. Definire lo schema di input specificando il nome e il tipo. Impostare il valore di ogni input per testare il flusso. È possibile fare riferimento all'input del flusso in un secondo momento nei nodi del flusso, usando la sintassi ${inputs.[input name]}.

L'output del flusso è costituito dai dati generati dal flusso nel complesso, che riepilogano i risultati dell'esecuzione del flusso. È possibile visualizzare ed esportare la tabella di output al termine dell'esecuzione del flusso o dell'esecuzione batch. Definire il valore di output del flusso facendo riferimento all'output del nodo singolo del flusso, usando la sintassi ${[node name].output} o ${[node name].output.[field name]}.

Facendo riferimento all'output del nodo, è possibile collegare i nodi tra loro. Ad esempio, è possibile fare riferimento all'output del nodo LLM nell'input del nodo Python, in modo che il nodo Python possa utilizzare l'output del nodo LLM, quindi nella vista a grafo è possibile vedere che i due nodi sono collegati tra loro.

Abilitare il controllo condizionale per il flusso

Prompt flow offre non solo un modo semplificato per eseguire il flusso, ma anche una potente funzionalità per gli sviluppatori, ovvero il controllo condizionale, che consente agli utenti di impostare condizioni per l'esecuzione di qualsiasi nodo in un flusso.

Essenzialmente, il controllo condizionale offre la possibilità di associare ogni nodo in un flusso a una configurazione di attivazione. Questa configurazione è in pratica un'istruzione "when" che determina quando deve essere eseguito un nodo. L'efficacia di questa funzionalità si realizza con i flussi complessi in cui l'esecuzione di specifiche attività dipende dal risultato di quelle precedenti. Usando il controllo condizionale, è possibile configurare i nodi specifici da eseguire solo quando vengono soddisfatte le condizioni specificate.

In particolare, è possibile impostare la configurazione di attivazione per un nodo selezionando il pulsante Activate config nella scheda del nodo. È possibile aggiungere l'istruzione "when" e impostare la condizione. È possibile impostare le condizioni facendo riferimento all'input del flusso o all'output del nodo. Ad esempio, come valore specifico è possibile impostare la condizione ${inputs.[input name]} o ${[node name].output}.

Se la condizione non viene soddisfatta, il nodo viene ignorato. Lo stato del nodo viene visualizzato come "Bypassed".

Testare il flusso

È possibile testare il flusso in due modi:

  • Eseguire un singolo nodo:

    • Per eseguire un singolo nodo, selezionare l'icona Esegui in un nodo nella visualizzazione predefinita. Al termine dell'esecuzione, è possibile controllare rapidamente il risultato nella sezione Output del nodo. n Screenshot che mostra il pulsante Esegui nella scheda del nodo.
  • Eseguire l'intero flusso:

    • Per eseguire l'intero flusso, selezionare il pulsante Esegui in alto a destra.

Visualizzare i risultati del test e la traccia (anteprima)

La traccia è disabilitata per impostazione predefinita. Per abilitarla è necessario impostare la variabile di ambiente PF_DISABLE_TRACING su false. Un modo per eseguire questa operazione consiste nell'aggiungere quanto segue al nodo Python:

import os
os.environ["PF_DISABLE_TRACING"] = "false"

Per l'esecuzione dell'intero flusso, dopo averlo eseguito, è possibile visualizzare lo stato di esecuzione nel banner di esecuzione. Per visualizzare la traccia allo scopo di controllare il risultato e osservare l'esecuzione del flusso, è possibile selezionare Visualizza output e quindi selezionare la scheda Traccia. È possibile visualizzare l'input e l'output dell'intero flusso e di ogni nodo, insieme a informazioni più dettagliate per il debug. È disponibile durante l'esecuzione e al termine della stessa.

Informazioni sulla visualizzazione della traccia

Selezionare la scheda Traccia nella schermata Output per visualizzare un grafo 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.

 Screenshot dei dettagli della traccia.

Annotazioni

Nell'SDK del prompt flow sono stati definiti diversi tipi di intervallo, tra cui LLM, Funzione, Incorporamento, Recupero e Flusso. Il sistema crea automaticamente intervalli con informazioni sull'esecuzione negli attributi e negli eventi designati.

Per altre informazioni sui tipi span, vedere Trace span.

Sviluppare un flusso di chat

Il flusso di chat è progettato per lo sviluppo di applicazioni per conversazione, basandosi sulle funzionalità del flusso standard e fornendo supporto avanzato per gli input/output della chat e la gestione della cronologia della chat. Con il flusso di chat, è possibile creare facilmente un chatbot che gestisce l'input e l'output della chat.

Nella pagina di creazione il flusso di chat viene contrassegnato con un'etichetta "chat" per distinguerla dal flusso standard e dal flusso di valutazione. Per testare il flusso di chat, selezionare il pulsante "Chat" per attivare una casella per la conversazione.

Input/output e cronologia della chat

Gli elementi più importanti che differenziano un flusso di chat da un flusso standard sono l'input, la cronologiae l'output.

  • Input: l'input della chat fa riferimento ai messaggi o alle query inviate dagli utenti al chatbot. Per il successo della conversazione, è essenziale gestire efficacemente l'input di chat, perché implica la comprensione delle intenzioni dell'utente, l'estrazione delle informazioni pertinenti e l'attivazione delle risposte appropriate.
  • Cronologia: la cronologia della chat è la registrazione di tutte le interazioni tra l'utente e il chatbot e include sia gli input dell'utente sia gli output generati dall'IA. Mantenere la cronologia della chat è essenziale per tenere traccia del contesto della conversazione e assicurarsi che l'IA possa generare risposte contestualmente pertinenti.
  • Output: l'output della chat fa riferimento ai messaggi generati dall'IA inviati all'utente in risposta agli 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. La cronologia chat e gli input di chat sono necessari nel flusso di chat.

  • Nella sezione di input del flusso di chat, un input del flusso può essere contrassegnato come input di chat. È quindi possibile compilare il valore di input digitandolo nella casella di chat.

  • Prompt flow può aiutare gli utenti a gestire la cronologia della chat. chat_history, nella sezione Input, serve per rappresentare la cronologia delle chat. 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. L'utente non può impostare manualmente il valore di chat_history nella sezione di input. Si tratta di un elenco strutturato di input e output:

    [
    {
        "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"
        }
    }
    ]
    

Annotazioni

La possibilità di salvare o gestire automaticamente la cronologia della chat è una funzionalità della pagina di creazione quando si eseguono test nella casella di chat. Per le esecuzioni batch, è necessario che gli utenti includano la cronologia della chat all'interno del set di dati. Se non è disponibile alcuna cronologia di chat per i test, impostare chat_history su un elenco [] vuoto all'interno del set di dati di esecuzione batch.

Creare una richiesta con la cronologia della chat

Incorporare la cronologia della chat nella richiesta è essenziale per creare risposte del chatbot contestuali e coinvolgenti. Nelle richieste, è possibile fare riferimento a chat_history per recuperare le interazioni passate. In questo modo è possibile fare riferimento a input e output precedenti per creare risposte contestualmente pertinenti.

Usare for-loop grammatica del linguaggio 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 di 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 di chat, seguire questa procedura:

  1. Selezionare il pulsante "Chat" per aprire la casella di chat.
  2. Digitare gli input di test nella casella di chat e premere INVIO per inviarli al chatbot.
  3. Esaminare le risposte del chatbot per assicurarsi che siano contestualmente appropriate e accurate.
  4. Visualizzare la traccia sul posto per osservare e eseguire rapidamente il debug.

Passaggi successivi