Processo decisionale informato utilizzando i generatori e i datastore Dialogflow CX

1. Panoramica

Ultimo aggiornamento: 10/10/2023

Cosa creerai

In questo codelab, utilizzerai Vertex AI Conversation e Dialogflow CX per creare, eseguire il deployment e configurare un agente virtuale in modo da assistere le persone che vogliono donare il sangue e assicurarsi che soddisfino i requisiti di idoneità richiesti. L'agente utilizzerà dati pubblici reali e i modelli linguistici di grandi dimensioni (LLM) generativi di Google durante il fulfillment Dialogflow CX.

Funzionalità che utilizzerai

Per completare il codelab, configurerai e utilizzerai tre funzionalità distinte:

Agenti datastore

La funzionalità Vertex AI Conversation crea un agente speciale Dialogflow, chiamato agente del datastore.

Con questa funzionalità, fornisci l'URL di un sito web e dati strutturati o non strutturati (archivio di dati) e Google analizza i tuoi contenuti e crea un agente virtuale basato su datastore e modelli linguistici di grandi dimensioni. I tuoi clienti e utenti finali possono quindi conversare con l'agente e porre domande sui contenuti. Per informazioni su questo tipo di agente, consulta l'introduzione a Vertex AI Conversation.

Generatori

La funzionalità generatore è una funzionalità di Dialogflow CX che consente agli sviluppatori di utilizzare i più recenti modelli linguistici di grandi dimensioni (LLM) generativi (LLM) e i prompt personalizzati di Google per generare risposte degli agenti in fase di runtime. Un generatore può gestire risposte generiche che implicano conoscenze generali da un grande set di dati testuale su cui è stato addestrato o dal contesto della conversazione.

Fallback generativo

La funzionalità generativa di riserva utilizza i più recenti modelli linguistici di grandi dimensioni (LLM) generativi di Google per generare risposte di agenti virtuali quando l'input dell'utente finale non corrisponde a un intento o a un parametro per la compilazione del modulo. La funzionalità può essere configurata con un prompt di testo che indichi all'LLM come rispondere. Puoi utilizzare un prompt di testo predefinito o aggiungere prompt personalizzati. Puoi attivare il fallback generativo sui gestori di eventi senza corrispondenza utilizzati nei flussi, nelle pagine o durante la compilazione dei parametri. Quando il fallback generativo è abilitato per un evento senza corrispondenza, ogni volta che questo evento si attiva, Dialogflow tenterà di produrre una risposta generata che verrà pronunciata all'utente. Se la generazione della risposta non va a buon fine, verrà emessa la normale risposta dell'agente prescritta. Per saperne di più sul fallback generativo, prova questo codelab.

Obiettivi didattici

  • Come creare un agente del datastore a partire da dati non strutturati
  • Come utilizzare i gestori delle conoscenze per consentire agli utenti finali di avere conversazioni con un agente virtuale sui contenuti aggiunti a un datastore.
  • Come configurare un prompt di testo del generatore e renderlo contestuale utilizzando i segnaposto integrati dei prompt del generatore.
  • Come contrassegnare le parole come segnaposto dei prompt del generatore e in seguito associarle a parametri di sessione nel completamento per utilizzare i relativi valori durante l'esecuzione.
  • Come configurare un generatore per gestire le risposte che implicano la conoscenza da un grande set di dati testuale e il contesto della conversazione corrente.
  • Come generare un'email formale utilizzando i generatori
  • Come testare l'agente e simulare le domande dei clienti che attivano le risposte generate

Che cosa ti serve

  • Un progetto Google Cloud
  • Un browser come Chrome

2. Abilita API

Prima di poter creare un agente del datastore in Vertex AI Conversation, devi abilitare Dialogflow e le API Vertex AI Search and Conversation.

Per abilitare l'API Dialogflow:

  1. Nel browser, vai alla pagina dei dettagli del servizio API Dialogflow.
  2. Fai clic sul pulsante Abilita per abilitare l'API Dialogflow nel tuo progetto Google Cloud.

Per abilitare l'API Vertex AI Search and Conversation, segui questi passaggi:

  1. Nella console Google Cloud, vai alla console Vertex AI Search and Conversation.
  2. Leggi e accetta i Termini di servizio, quindi fai clic su Continua e attiva l'API.

3. Crea una nuova app di chat e un datastore per la tua app

Ora creerai una nuova app di chat per il tuo agente virtuale e la configurerai con un'origine dati. Lo scopo dell'agente che creerai è assistere i clienti che hanno domande sull'idoneità del sangue. Userai l'Australian Red Cross Lifeblood come fonte di riferimento e creerai un datastore basato su dati non strutturati provenienti dal sito web per l'idoneità del sangue.

  1. Per creare una nuova app di chat in Vertex AI Conversation, puoi:
    1. Vai alla console Vertex AI Conversation, quindi fai clic su +Nuova app nella parte superiore della console.
    2. Accedi alla console Dialogflow CX, fai clic su +Crea nuovo agente e seleziona l'opzione Genera automaticamente. Si aprirà il passaggio successivo nella console di Vertex AI Conversation.
  2. Nella console di Vertex AI Conversation, seleziona Chat come tipo di app che vuoi creare.
  3. Inserisci Save a Life nel campo Nome dell'azienda. Questo parametro viene utilizzato per definire l'azienda rappresentata dall'agente e l'ambito dell'agente.
  4. Specifica un Nome agente di Blood Donation Agent.
  5. Fai clic su Continua.
  6. Fai clic su Crea nuovo datastore.
  7. Seleziona Cloud Storage come origine dati per il datastore.
  8. Specifica la seguente cartella di Google Cloud Storage che contiene i dati di esempio per questo codelab e tieni presente che il prefisso gs:// non è obbligatorio:
    cloud-samples-data/dialogflow-cx/arc-lifeblood
    
  9. Seleziona Documenti non strutturati come tipo di dati che stai importando.
  10. Fai clic su Continua.
  11. Specifica un Nome datastore Australian Red Cross Lifeblood Unstructured.
  12. Fai clic su Crea per creare il datastore.
  13. Nell'elenco dei datastore, seleziona il Australian Red Cross Lifeblood Unstructured appena creato.
  14. Fai clic su Crea per creare la tua app di chat.

Complimenti! Hai completato la creazione della tua app di chat basata sulle conoscenze pronta ad aiutare i potenziali donatori, quindi dedica un momento a festeggiare.

ma c'è ancora molto lavoro da fare per rendere l'agente accessibile ai tuoi utenti. Nella sezione successiva, utilizzerai un gestore delle conoscenze per attivare le conversazioni tra l'agente e gli utenti finali sui requisiti di idoneità.

4. Configura l'agente in modo che risponda alle domande frequenti sull'idoneità del sangue

Fornisci la richiesta per l'archiviazione della data

Mentre il processo di raccolta dei documenti è in esecuzione in background, assegniamo un brand all'agente modificando la richiesta del datastore.

  1. Dalla console Vertex AI Conversation, fai clic sul nome della tua app di chat, che ti reindirizzerà alla console Dialogflow CX per ulteriori test e personalizzazioni.
  2. Nella console Dialogflow CX e all'interno del tuo agente, fai clic su Impostazioni agente (nell'angolo in alto a destra della pagina), poi vai alla scheda ML e infine apri la scheda IA generativa.

Vai al prompt del datastore

  1. Compila il modulo come riportato di seguito per generare la seguente richiesta per il datastore: Il tuo nome è Donate e sei un chatbot disponibile ed educato di Save a life, a fictitious organization. La tua attività è aiutare humans with eligibility information.

Compila il modulo per generare il prompt

Attiva il fallback generativo per l'evento senza corrispondenza del flusso di avvio predefinito

  1. Passa alla scheda Crea e apri la pagina iniziale.
  2. Fai clic sul gestore di eventi sys.no-match-default. A meno che la casella non sia già selezionata, abilita la funzionalità di riserva generativa.

Abilita il fallback generativo in caso di mancata corrispondenza del flusso

Controlla il datastore dell'agente

Nella pagina iniziale fai clic su Modifica datastore per esaminare le impostazioni del datastore.

Modifica datastore

Il datastore che hai creato in precedenza è già stato selezionato per te da Dialogflow.

Associa il datastore che hai creato

Scorri verso il basso fino a Risposte dell'agente nella sezione Fulfillment. Un fulfillment è la risposta dell'agente all'utente finale. Dialogflow ha precompilato L'agente dice con il parametro $request.knowledge.answers[0] che in fase di esecuzione contiene la risposta principale alla domanda dell'utente.

La risposta dell'agente contiene la risposta principale alla domanda dell'utente

5. Testa l'agente

Quando i documenti sono disponibili e pronti per essere utilizzati dall'agente, verifica se le risposte sono corrette.

Fai clic su Testa agente per aprire di nuovo il Simulatore.

Esegui di nuovo il test dell'agente

Poni le domande che ti aspetti di trovare nella pagina delle domande frequenti del sito web:

  • What age do I need to be to donate?
  • Can pregnant women donate?
  • I've just come back from a trip to Africa. Can I donate?
  • How can I schedule an appointment?

Verifica che le risposte provengano dalla knowledge base

Nota che le risposte vengono recuperate dal sito Australian Red Cross Lifeblood. Come indicato in questa pagina, sono previste fasce d'età minima e massima per la donazione di sangue. L'età minima è 18 anni e l'età massima è 75 per i nuovi donatori. Un'ulteriore prova del fatto che stiamo estraendo informazioni dal datastore è data dalla piccola icona a forma di stella che appare nella risposta dell'agente e dalla risposta JSON originale.

Controlla la risposta JSON originale

Infine, proviamo a sfidare l'agente con una domanda totalmente non correlata alla donazione di sangue.

Utente: "Che tempo fa a Melbourne?"

Agente: "Mi dispiace, non posso aiutarti con questa richiesta. Come posso aiutarti fornendoti i dati di idoneità?"

Questa risposta include contenuti creati con l'IA e deriva dal prompt di testo creato da Dialogflow a partire dall'impostazione del connettore di conoscenza fornita in precedenza: "Il tuo nome è "Fai una donazione" e sei un chatbot disponibile ed educato di Save a Life. Il tuo compito è aiutare le persone con informazioni sull'idoneità". Questo prompt di testo contiene il nome dell'azienda, il nome dell'agente e, soprattutto, il suo ambito, che viene utilizzato da Dialogflow per generare la risposta dell'agente.

Ben fatto! Finora stai utilizzando il datastore per assistere le persone con domande frequenti relative alla donazione di sangue. Nella prossima parte del codelab vedremo come associare un prompt di testo di un generatore agli stessi contenuti per prendere decisioni consapevoli.

6. Configura l'agente per il quiz di idoneità

La nostra attività successiva è progettare l'agente per determinare l'idoneità dell'utente a donare il sangue. I donatori devono soddisfare requisiti rigorosi, ad esempio età, peso, condizioni esistenti, viaggi recenti e così via. Nell'ambito di questo codelab prenderemo in considerazione solo età e peso. Un generatore utilizzerà i modelli linguistici di grandi dimensioni (LLM) di Google per prendere dinamicamente una decisione consapevole in base al contesto della conversazione e alla knowledge base.

Configura nuove route e parametri

  1. Apri la pagina iniziale e fai clic su Modifica datastore.
  2. Cambia la risposta dell'agente esistente in $request.knowledge.answers[0] Would you like to take the eligibility quiz to find out if you can donate blood, and start changing lives?.

Arricchisci la risposta dell'agente alle domande frequenti degli utenti

  1. Fai clic sul pulsante Salva.
  2. Ora dobbiamo progettare l'agente in modo da gestire "sì" e "no" diverse. Per iniziare, crea un intent confirmation.yes e un intent confirmation.no. Segui queste linee guida sul riutilizzo per intenzione.
  3. Quindi, sulla pagina iniziale, crea un percorso per l'intent confirmation.yes che esegue la transizione a un Quiz di idoneità nella nuova pagina.

Crea un percorso per l'intent conferme.yes

Quando viene attivata la pagina validation.yes, viene eseguita la transizione a un quiz di idoneità per una nuova pagina.

  1. Come accennato in precedenza, semplificheremo il quiz e terremo conto solo dell'età e del peso dell'utente per determinare se è idoneo o meno alla donazione. Apri la pagina Quiz di idoneità e aggiungi un nuovo parametro del modulo age-weight, scegliendo @sys.any come tipo di entità. Fornisci "What is your age and weight?" come completamento iniziale della richiesta. Vogliamo raccogliere dati su età e peso in una volta sola. Salva tutte le modifiche.

Crea parametro

Creare e configurare il generatore di idoneità

La funzionalità generatore è una funzionalità di Dialogflow CX che consente agli sviluppatori di utilizzare i più recenti modelli linguistici di grandi dimensioni (LLM) generativi di Google durante il fulfillment Dialogflow CX. Generatori per generare risposte agli agenti in fase di runtime. Un generatore può gestire risposte generiche che implicano conoscenze generali da un grande set di dati testuale su cui è stato addestrato o dal contesto della conversazione.

Creeremo un nuovo generatore che confronterà le informazioni fornite dall'utente (come età e peso) con i requisiti di idoneità per determinare se l'utente può donare.

  1. Nella console di Dialogflow CX, vai alla scheda Gestisci, seleziona Generatori e fai clic su Crea nuovo.

Crea un nuovo generatore

  1. Quindi, fornisci un nome visualizzato descrittivo e scrivi il prompt di testo. Lascia le impostazioni predefinite per il controllo qualità del modello. Quindi fai clic su Save (Salva) per creare il generatore.
    • Nome visualizzato: Blood Donation Eligibility
    • Prompt di testo: Check the users eligibility against the following criteria: the minimum age is 18 and the maximum age is 75. Weight should be above 50 Kg. The user age and weight is $last-user-utterance. Be nice and tell the user if they are eligible to donate (also tell them why not in case)

Il prompt di testo viene inviato al modello generativo durante il completamento in fase di runtime. Deve essere una domanda o una richiesta chiara affinché il modello generi una risposta soddisfacente. Nel prompt di testo puoi utilizzare speciali segnaposto dei prompt del generatore integrati:

  • $conversation La conversazione tra l'agente e l'utente, esclusa l'ultima frase dell'utente.
  • $last-user-utterance L'ultima frase dell'utente.

Il prompt di testo che hai configurato prevede che l'utente fornisca età e peso in un unico turno di conversazione (il cosiddetto "$last-user-utterance").

Utilizza il generatore in fulfillment e configura tutti i parametri richiesti

  1. Nella pagina Quiz di idoneità, aggiungi un nuovo percorso che verrà eseguito dopo che tutti i parametri sono stati compilati. Inserisci il requisito della condizione $page.params.status = "FINAL" e fai clic su Salva.

Aggiungi un nuovo percorso che verrà eseguito quando tutti i parametri saranno stati compilati.

  1. Vai alla sezione Generatori del riquadro Fulfillment ed espandila. Quindi, fai clic su Aggiungi generatore e seleziona il generatore Idoneità alla donazione di sangue. Dopo aver selezionato il generatore, devi definire il parametro di output che conterrà il risultato del generatore dopo l'esecuzione.

Seleziona il generatore "Idoneità alla donazione di sangue", associa i segnaposto dei prompt ai parametri di sessione e definisci il parametro di output

  1. Utilizza il parametro di output nella risposta dell'agente e salva la route. Ora è tutto pronto per testare tutto.

Utilizzare il parametro di output nella risposta dell'agente

7. Ripeti il test dell'agente

Fai clic su Test Agent (Verifica agente) per aprire di nuovo il simulatore.

Esegui di nuovo il test dell'agente

Sul Simulatore, avvia una nuova conversazione con l'agente. Prima chiedi informazioni sui requisiti di età, poi passa al quiz di idoneità. Testa lo stato "idoneo" Per prima cosa, inserisci un'età compresa tra 18 e 75 anni e un peso superiore a 50 kg.

Percorso idoneo

Poi, verifica che la verifica dell'idoneità abbia esito negativo quando uno o entrambi i requisiti non sono soddisfatti.

Percorso non idoneo

Bene, il generatore funziona come previsto! O no? Cosa succede se l'utente fornisce l'età ma non il peso (o viceversa)?

Indica l'età, ma non il peso

8. Ottimizzazione dei prompt del generatore

La raccolta di età e peso in un periodo precedente non sembra funzionare a meno che non vengano indicati sia l'età che il peso. Occorre invece creare un modulo che raccolga entrambi i valori come parametri entità. Per rendere il prompt contestuale relativo a tutti i requisiti di idoneità (come l'età e il peso), possiamo utilizzare i segnaposto aggiungendo un $ prima della parola. In seguito, assoceremo questi segnaposto dei prompt del generatore ai parametri di sessione nel completamento e verranno sostituiti dai valori dei parametri di sessione durante l'esecuzione.

  1. Apri la pagina Quiz di idoneità e aggiungi due parametri distinti del modulo: uno per il peso e uno per l'età. Scegli @sys.number-integer come tipo di entità e contrassegna i parametri come obbligatori. Fornisci i completamenti di prompt iniziali, ad esempio How old are you? e What is your correct weight?. Salva tutte le modifiche.

Modulo di idoneità

  1. Prima di poter modificare il prompt di testo del generatore poiché aggiungeremo due nuovi segnaposto personalizzati, dobbiamo prima rimuovere il generatore dal completamento del percorso. Fai clic su Salva.

Rimuovi il generatore

  1. Vai alla scheda Gestisci, seleziona Generatori e aggiorna il prompt di testo del generatore Idoneità alla donazione di sangue con: Check the users eligibility against the following criteria: the minimum age is 18 and the maximum age is 75. The weight must be at least 50 kg. The user is $age years old and weighs $weight Kg. Craft an email and politely explain to the user if they're eligible to donate and if not why.. Fai clic su Save (Salva).

Tieni presente che non abbiamo appena reso il prompt di testo contestuale dei parametri del modulo di età e peso, abbiamo anche modificato l'ultima frase per poter generare un'email formale all'utente contenente il risultato ufficiale del quiz di idoneità.

Riconfigura il prompt di testo

  1. Nella pagina Quiz di idoneità, seleziona la route ed espandi la sezione Generatori del riquadro Completamento. Quindi, fai clic su Aggiungi generatore e seleziona il generatore Idoneità alla donazione di sangue. Dopo aver selezionato il generatore, devi associare i nuovi segnaposto dei prompt ai rispettivi parametri di sessione. Inoltre, è necessario reimpostare il parametro output. Fai clic su Save (Salva).

Aggiorna le associazioni del generatore

  1. Ripeti il test dell'agente. La verifica dell'idoneità tiene ora conto sia dell'età che del peso e il tono delle parole è cambiato da conversazione a una risposta più educata, pronta per essere inviata senza potenziali human-in-the-loop.

Email che comunica che l'utente non è idoneo

Email che comunica che l'utente è idoneo

9. Complimenti

Complimenti per aver completato questo codelab!

Complimenti per aver completato il codelab!

Oggi abbiamo analizzato i generatori nel contesto dei quiz di idoneità. Hai visto che i generatori utilizzano gli LLM per generare risposte agli agenti e, quando si basano su una knowledge base, possono anche prendere decisioni ben informate. Sicuramente ci sono molti altri casi d'uso che possono essere implementati sfruttando generatori e datastore e non vediamo l'ora di conoscerli.

Esegui la pulizia

Puoi eseguire la pulizia seguente per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo codelab:

Scopri di più

Continua a imparare l'IA conversazionale e l'IA generativa con queste guide e risorse:

Licenza

Questo lavoro è concesso in licenza ai sensi di una licenza Creative Commons Attribution 2.0 Generic.