Condividi tramite


Ottimizzare le richieste usando varianti nel portale di Azure AI Foundry

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 le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.

Questo articolo illustra come usare le varianti per ottimizzare i prompt e valutare le prestazioni di varianti diverse.

La creazione di un buon prompt è un compito impegnativo che richiede molta creatività, chiarezza e pertinenza. Un buon prompt consente di ottenere l'output desiderato da un modello linguistico già sottoposto a training, mentre un prompt scadente può causare output non accurati, irrilevanti o senza senso. È quindi necessario ottimizzare i prompt per migliorare le prestazioni e l'affidabilità per attività e domini diversi.

Le varianti consentono di testare il comportamento del modello in condizioni diverse, ad esempio parole diverse, formattazione, contesto, temperatura o top-k. È possibile confrontare e trovare il prompt e la configurazione migliori che massimizzano l'accuratezza, la diversità o la coerenza del modello.

Varianti nel prompt flow

Con i prompt flow è possibile usare varianti per ottimizzare il prompt. Una variante fa riferimento a una versione specifica di un nodo dello strumento con impostazioni distinte. Attualmente, le varianti sono supportate solo nello strumento LLM. Nello strumento LLM, ad esempio, una nuova variante può rappresentare un contenuto di prompt diverso o impostazioni di connessione diverse.

Si supponga di voler generare un riepilogo di un articolo di notizie. È possibile impostare varianti diverse di prompt e impostazioni, come illustrato di seguito:

Varianti Richiesta Impostazioni di connessione
Variante 0 Summary: {{input sentences}} Temperatura = 1
Variante 1 Summary: {{input sentences}} Temperatura = 0,7
Variante 2 What is the main point of this article? {{input sentences}} Temperatura = 1
Variante 3 What is the main point of this article? {{input sentences}} Temperatura = 0,7

Utilizzando diverse varianti di prompt e impostazioni, è possibile esaminare come risponde il modello a vari input e output, consentendo di individuare la combinazione più indicata per specifici requisiti.

I vantaggi dell'uso delle varianti includono:

  • Migliorare la qualità della generazione di LLM: creando più varianti dello stesso nodo LLM con prompt e configurazioni diverse, è possibile identificare la combinazione ottimale che produce contenuti di alta qualità in linea con specifiche esigenze.
  • Risparmiare tempo e impegno: anche lievi modifiche apportate a una prompt possono produrre risultati diversi. È fondamentale monitorare e confrontare le prestazioni di ogni versione del prompt. Con le varianti, è possibile gestire facilmente le versioni cronologiche dei nodi LLM, semplificando gli aggiornamenti in base a qualsiasi variante senza il rischio di dimenticare le iterazioni precedenti. Le varianti consentono di risparmiare tempo e impegno nella gestione della cronologia di ottimizzazione dei prompt.
  • Aumentare la produttività: le varianti semplificano il processo di ottimizzazione per i nodi LLM, semplificando la creazione e la gestione di più variazioni. È possibile ottenere risultati migliorati in meno tempo, aumentando così la produttività complessiva.
  • Facilitare un semplice confronto: è possibile confrontare facilmente i risultati ottenuti da varianti diverse affiancate, consentendo di prendere decisioni basate sui dati relative alla variante che genera i risultati migliori.

Come ottimizzare i prompt usando varianti?

In questo articolo viene usato il flusso di esempio di classificazione Web.

  1. Per prima cosa, aprire il flusso di esempio e rimuovere il nodo prepare_examples.
    1. In Strumenti selezionare Prompt flow.
    2. Selezionare Crea per aprire la creazione guidata del flusso.
    3. Nella raccolta di flussi in Esplora raccolta nella casella "Classificazione Web" selezionare Clona.
    4. Nella scheda del flusso eliminare il nodo prepare_examples.
  2. Usare il prompt seguente come prompt di base nel nodo classify_with_llm.
Your task is to classify a given url into one of the following types:
Movie, App, Academic, Channel, Profile, PDF or None based on the text content information.
The classification will be based on the url, the webpage text content summary, or both.

For a given URL : {{url}}, and text content: {{text_content}}.
Classify above url to complete the category and indicate evidence.

The output shoule be in this format: {"category": "App", "evidence": "Both"} 
OUTPUT:

È possibile ottimizzare questo flusso in più modi e di seguito sono illustrate due opzioni:

  • Per il nodo classify_with_llm usare il prompt seguente: Ho scoperto dalla community e da alcuni paper che una temperatura più bassa fornisce una maggiore precisione, ma meno creatività e sorpresa, quindi una temperatura più bassa è adatta per i compiti di classificazione e anche un prompt di pochi tentativi può aumentare le prestazioni di LLM. Vorrei quindi verificare come si comporta il mio flusso quando la temperatura passa da 1 a 0 e quando il prompt viene effettuato con pochi esempi.

  • Per il nodo summarize_text_content usare il prompt seguente: Voglio anche testare il comportamento del mio flusso quando cambio il sommario da 100 a 300 parole, per vedere se un maggior contenuto testuale può contribuire a migliorare le prestazioni.

Creare varianti

  1. Selezionare il pulsante Mostra varianti nell'angolo in alto a destra del nodo LLM. Il nodo LLM esistente è variant_0 ed è la variante predefinita.
  2. Selezionare il pulsante Clona per variant_0 per generare variant_1 e quindi configurare i parametri usando valori diversi o aggiornare il prompt in variant_1.
  3. Ripetere il passaggio per creare altre varianti.
  4. Selezionare Nascondi varianti per interrompere l'aggiunta di varianti. Tutte le varianti sono visualizzate in modo ridotto. Per il nodo viene visualizzata la variante predefinita.

Per il nodo classify_with_llm basato su variant_0:

  • Creare variant_1 in cui la temperatura viene modificata da 1 a 0.
  • Creare variant_2 in cui la temperatura è 0 ed è possibile usare il prompt seguente, inclusi alcuni esempi.
Your task is to classify a given url into one of the following types:
Movie, App, Academic, Channel, Profile, PDF or None based on the text content information.
The classification will be based on the url, the webpage text content summary, or both.

Here are a few examples:

URL: https://play.google.com/store/apps/details?id=com.spotify.music 
Text content: Spotify is a free music and podcast streaming app with millions of songs, albums, and original podcasts. It also offers audiobooks, so users can enjoy thousands of stories. It has a variety of features such as creating and sharing music playlists, discovering new music, and listening to popular and exclusive podcasts. It also has a Premium subscription option which allows users to download and listen offline, and access ad-free music. It is available on all devices and has a variety of genres and artists to choose from. 
OUTPUT: {"category": "App", "evidence": "Both"} 
		
URL: https://www.youtube.com/channel/UC_x5XG1OV2P6uZZ5FSM9Ttw 
Text content: NFL Sunday Ticket is a service offered by Google LLC that allows users to watch NFL games on YouTube. It is available in 2023 and is subject to the terms and privacy policy of Google LLC. It is also subject to YouTube's terms of use and any applicable laws. 
OUTPUT: {"category": "Channel", "evidence": "URL"} 
		
URL: https://arxiv.org/abs/2303.04671 
Text content: Visual ChatGPT is a system that enables users to interact with ChatGPT by sending and receiving not only languages but also images, providing complex visual questions or visual editing instructions, and providing feedback and asking for corrected results. It incorporates different Visual Foundation Models and is publicly available. Experiments show that Visual ChatGPT opens the door to investigating the visual roles of ChatGPT with the help of Visual Foundation Models. 
OUTPUT: {"category": "Academic", "evidence": "Text content"} 
		
URL: https://ab.politiaromana.ro/ 
Text content: There is no content available for this text. 
OUTPUT: {"category": "None", "evidence": "None"}
		
For a given URL : {{url}}, and text content: {{text_content}}.
Classify above url to complete the category and indicate evidence.
OUTPUT:    

Per il nodo summarize_text_content basato su variant_0 è possibile creare variant_1 modificando 100 words in 300 nel prompt.

Il flusso avrà ora l'aspetto seguente: 2 varianti per il nodo summarize_text_content e 3 per il nodo classify_with_llm.

Eseguire tutte le varianti con una singola riga di dati e controllare gli output

Per assicurarsi che tutte le varianti possano essere eseguite correttamente e funzionino come previsto, è possibile eseguire il flusso con una singola riga di dati da testare.

Nota

Ogni volta è possibile selezionare un solo nodo LLM con varianti da eseguire, mentre altri nodi LLM useranno la variante predefinita.

In questo esempio vengono configurate varianti sia per il nodo summarize_text_content che per il nodo classify_with_llm, quindi è necessario ripetere l'esecuzione due volte per testare tutte le varianti.

  1. Selezionare il pulsante Esegui in alto a destra.
  2. Selezionare un nodo LLM con varianti. Gli altri nodi LLM usano la variante predefinita.
  3. Inviare l'esecuzione del flusso.
  4. Al termine dell'esecuzione del flusso, è possibile controllare il risultato corrispondente per ogni variante.
  5. Inviare un'altra esecuzione del flusso con l'altro nodo LLM con varianti e controllare gli output.
  6. È possibile modificare altri dati di input (ad esempio, usare un URL di pagina di Wikipedia) e ripetere i passaggi precedenti per testare le varianti con dati diversi.​​​​​​​

Valutare le varianti

Quando si eseguono le varianti con pochi dati e si controllano i risultati, non è possibile riflettere la complessità e la diversità dei dati del mondo reale. L'output inoltre non è misurabile, quindi è difficile confrontare l'efficacia delle diverse varianti e scegliere la migliore.

È possibile inviare un'esecuzione batch, che consente di testare le varianti con una grande quantità di dati e valutarle con le metriche, per trovare la soluzione più adatta.

  1. Prima di tutto, è necessario preparare un set di dati che sia sufficientemente rappresentativo del problema reale che si vuole risolvere con Prompt flow. In questo esempio si tratta di un elenco di URL con i relativi dati reali di riferimento per la classificazione. Le prestazioni delle varianti vengono valutate in base all'accuratezza.

  2. Selezionare Valuta in alto a destra nella pagina.

  3. Verrà eseguita una procedura guidata di esecuzione e valutazione batch. Il primo passaggio consiste nel selezionare un nodo per eseguire tutte le relative varianti.

    Per testare il funzionamento delle diverse varianti per ogni nodo in un flusso, è necessario avviare un'esecuzione batch per ogni nodo con varianti, una per volta. Ciò consente di evitare l'influenza delle varianti di altri nodi e di concentrarsi sui risultati delle varianti del nodo da valutare. Viene seguita la regola dell'esperimento controllato, ovvero viene modificato un solo elemento alla volta, mantenendo identico tutto il resto.

    È ad esempio possibile selezionare il nodo classify_with_llm per eseguire tutte le varianti e il nodo summarize_text_content usa la variante predefinita per l'esecuzione batch.

  4. Successivamente, in Impostazioni esecuzione batch è possibile impostare il nome dell'esecuzione batch, scegliere un runtime e caricare i dati preparati.

  5. In Impostazioni di valutazione selezionare quindi un metodo di valutazione.

    Poiché il flusso è destinato alla classificazione, è possibile selezionare il metodo di valutazione dell'accuratezza della classificazione per valutare l'accuratezza.

    L'accuratezza viene calcolata confrontando le etichette previste assegnate dal flusso (stima) con le etichette effettive dei dati (dati reali di riferimento) e conteggiando il numero di corrispondenze.

    Nella sezione Mapping input di valutazione è necessario specificare che i dati reali di riferimento provengono dalla colonna relativa alla categoria del set di dati di input e la stima proviene dalla colonna relativa alla categoria di uno degli output del flusso.

  6. Dopo avere esaminato tutte le impostazioni, è possibile inviare l'esecuzione batch.

  7. Dopo l'invio dell'esecuzione, selezionare il collegamento e passare alla pagina dei dettagli dell'esecuzione.

Nota

Il completamento dell’esecuzione può richiedere diversi minuti.

Visualizzare gli output

  1. Al termine dell'esecuzione batch e dell'esecuzione di valutazione, nella pagina dei dettagli dell'esecuzione selezionare più esecuzioni batch per ogni variante e quindi scegliere Visualizza output. Verranno visualizzate le metriche di tre varianti per il nodo classify_with_llm e gli output di stima per il nodo LLM per ogni record di dati.
  2. Dopo avere identificato la variante migliore, è possibile tornare alla pagina di creazione del flusso e impostare tale variante come predefinita per il nodo
  3. È possibile ripetere i passaggi precedenti per valutare anche le varianti del nodo summarize_text_content.

Il processo di ottimizzazione dei prompt tramite le varianti è ora completato. È possibile applicare questa tecnica al Prompt flow personalizzato per trovare la variante migliore per il nodo LLM.

Passaggi successivi