Creare un copilota con prompt flow

Completato

Dopo aver caricato i dati in Azure AI Studio e aver creato un indice sui dati usando l'integrazione con Azure AI Search, è possibile implementare il modello RAG con il prompt flow per creare un'applicazione copilot.

Prompt flow è un framework di sviluppo per la definizione dei flussi che orchestrano le interazioni con un LLM.

Diagramma di un prompt flow.

Un flusso inizia con uno o più input, in genere una domanda o una richiesta immessa da un utente e nel caso di conversazioni iterative la cronologia delle chat a questo punto.

Il flusso viene quindi definito come una serie di strumenti connessi, ognuno dei quali esegue un'operazione specifica sugli input e altre variabili ambientali. Esistono più tipi di strumento che è possibile includere in un prompt flow per eseguire attività come:

  • Esecuzione di codice Python personalizzato
  • Ricerca di valori di dati in un indice
  • Creazione di varianti di richiesta. È possibile definire più versioni di una richiesta per un modello linguistico di grandi dimensioni (LLM), diversi messaggi di sistema o formulazioni delle richieste, per poi confrontare e valutare i risultati di ogni variante.
  • Invio di una richiesta a un LLM per generare i risultati.

Infine, il flusso include uno o più output, in genere per restituire i risultati generati da un LLM.

Uso del modello RAG in un prompt flow

La chiave per l'uso del modello RAG in un prompt flow è usare uno strumento di ricerca nell'indice per recuperare i dati da un indice in modo che gli strumenti successivi nel flusso possano usare i risultati per aumentare la richiesta usata per generare l'output da un LLM.

Diagramma di un prompt flow con uno strumento di ricerca nell'indice.

Usare un esempio per creare un flusso di chat

Il prompt flow fornisce vari esempi che è possibile usare come punto di partenza per creare un'applicazione. Quando si vuole combinare RAG e un modello linguistico nell'applicazione, è possibile clonare il Q&A a più round nell'esempio di dati.

L'esempio contiene gli elementi necessari per includere RAG e un modello linguistico:

Screenshot del flusso di chat creato con l'esempio di domande e risposte.

  1. Aggiungere la cronologia all'input della chat per definire un prompt sotto forma di domanda contestualizzata.
  2. Cercare informazioni rilevanti dai dati usando l'indice di ricerca.
  3. Generare il contesto del prompt usando i dati recuperati dall'indice per aumentare la domanda.
  4. Creare varianti di prompt aggiungendo un messaggio di sistema e strutturando la cronologia della chat.
  5. Inviare il prompt a un modello linguistico che genera una risposta in un linguaggio naturale.

Verranno ora esaminati in modo più dettagliato ognuno di questi elementi.

Modificare la query con cronologia

Il primo passaggio del flusso è un nodo LLM (Large Language Model) che accetta la cronologia delle chat e l'ultima domanda dell'utente e genera una nuova domanda che include tutte le informazioni necessarie. In questo modo, si genera un input più conciso che viene elaborato dal resto del flusso.

Cercare informazioni pertinenti

Successivamente, viene usato lo strumento Ricerca indice per eseguire una query sull'indice di ricerca creato con la funzionalità integrata di Azure AI Search e trovare le informazioni pertinenti dall'origine dati.

Suggerimento

Altre informazioni sullo strumento Ricerca indice.

Generare il contesto del prompt

L'output dello strumento Ricerca indice è il contesto recuperato che si vuole usare durante la generazione di una risposta all'utente. Si vuole usare l'output in un prompt inviato a un modello linguistico, il che significa che si vuole analizzare l'output in un formato più appropriato.

L'output dello strumento Ricerca indice può includere i primi n risultati (a seconda dei parametri impostati). Quando viene generato il contesto del prompt, è possibile usare un nodo Python per scorrere i documenti recuperati dall'origine dati e combinare il contenuto e le origini in una stringa di documento. La stringa verrà usata nel prompt inviato al modello linguistico nel passaggio successivo del flusso.

Definire le varianti del prompt

Quando si costruisce il prompt da inviare al modello linguistico, è possibile usare varianti per rappresentare diversi contenuti del prompt.

Quando si include RAG nel flusso di chat, l'obiettivo è quello di consolidare le risposte del chatbot. Oltre a recuperare il contesto pertinente dall'origine dati, è possibile influenzare la solidità della risposta del chatbot istruendolo a usare il contesto e a puntare alla concretezza.

Con le varianti del prompt, è possibile fornire messaggi di sistema diversi nel prompt per esplorare quale contenuto offre la maggiore solidità.

Chat con contesto

Infine, viene usato un nodo LLM per inviare il prompt a un modello linguistico e generare una risposta usando il contesto pertinente recuperato dall'origine dati. La risposta ottenuta da questo nodo è anche l'output dell'intero flusso.

Dopo aver configurato il flusso di chat di esempio per usare i dati indicizzati e il modello linguistico scelto, è possibile distribuire il flusso e integrarlo con un'applicazione per offrire agli utenti un'esperienza copilota.