Aumenta la copertura degli intent e gestisci facilmente gli errori con il fallback generativo

1. Panoramica

Ultimo aggiornamento: 7-08-2023

Cosa creerai

In questo codelab creerai, eseguirai il deployment e configurerai un semplice agente virtuale in Dialogflow CX per assistere i subacquei in viaggio con prenotazioni di gruppo e noleggi privati. L'agente virtuale utilizzerà l'IA generativa e i più recenti modelli linguistici di grandi dimensioni (LLM) generativi di Google per generare risposte degli agenti virtuali.

Cosa imparerai a fare

  • Come abilitare le API pertinenti
  • In che modo Dialogflow precompila automaticamente i valori dei parametri del modulo della pagina dai parametri di intent
  • Come configurare i gestori di eventi in Dialogflow
  • Come abilitare il fallback generativo sui gestori di eventi senza corrispondenza utilizzati nei flussi e durante la compilazione dei parametri
  • Come configurare i tuoi prompt di testo per gestire situazioni conversazionali di base e specifiche dell'agente
  • Come scrivere descrizioni di parametri e intenti per generare gestori di richieste di conferma per i parametri obbligatori (oltre ai reprompt definiti dall'utente)
  • Come testare l'agente e simulare le domande dei clienti che attivano il fallback generativo

Che cosa ti serve

  • Un progetto Google Cloud
  • Un browser come Chrome

2. Preparazione

Prima di poter iniziare a utilizzare la funzionalità di fallback generativa in Dialogflow CX, devi abilitare l'API Dialogflow.

Abilitare l'API Dialogflow utilizzando la console Cloud

  1. Apri la console Google Cloud nel browser.
  2. Nella console Google Cloud, vai alla libreria API per sfogliare le API e i servizi che possono essere abilitati.
  3. Utilizzando la barra di ricerca nella parte superiore della pagina Libreria API, cerca Dialogflow API, quindi fai clic sul servizio risultante.
  4. Fai clic sul pulsante Abilita per abilitare l'API Dialogflow nel tuo progetto Google Cloud.

Utilizzo di gcloud CLI (alternativa)

In alternativa, l'API può essere abilitata utilizzando il seguente comando gcloud:

gcloud services enable dialogflow.googleapis.com

Se l'API è stata abilitata correttamente, dovrebbe essere visualizzato un messaggio simile al seguente:

Operation "operations/..." finished successfully.

Ottieni il codice

Non creerai l'agente virtuale da zero, ti forniremo un agente che dovrai ripristinare dalla console Dialogflow CX e poi migliorare.

Per scaricare il codice sorgente:

  1. Apri una nuova scheda del browser, vai al repository agent e clonalo dalla riga di comando.
  2. L'agente iniziale è stato esportato come pacchetto JSON. Decomprimi il file, controlla le impostazioni dell'agente, dai un'occhiata alla definizione del flusso Liveaboards.json e infine sfoglia le pagine, gli intent e le entità del flusso.

3. Crea un nuovo agente

Apri la console di Dialogflow

Utilizzerai la console Dialogflow CX insieme al tuo progetto Google Cloud per eseguire i passaggi rimanenti in questo codelab.

  1. Nel browser, vai alla console Dialogflow CX.
  2. Seleziona il progetto Google Cloud che vuoi utilizzare o creane uno nuovo.
  3. Nella console Dialogflow CX dovresti visualizzare un elenco di agenti.

Se è la prima volta che utilizzi Dialogflow CX, consulta la documentazione di Dialogflow CX per saperne di più su come configurare il progetto e le impostazioni in base alle tue esigenze.

Crea un nuovo agente Dialogflow CX

  1. Per ripristinare l'agente scaricato dal repository GitHub, devi creare un nuovo agente. Nella console di Dialogflow CX, fai clic su Crea nuovo agente nell'angolo in alto a destra della pagina.

Crea un nuovo agente

  1. Seleziona l'opzione Crea il tuo agente.

Scegli l'opzione

  1. Completa il modulo con le impostazioni dell'agente riportate di seguito e fai clic su Crea per creare l'agente.
  • Come nome visualizzato scegli: Divebooker
  • Come località scegli: us-central1
  • Seleziona il fuso orario che preferisci
  • Seleziona en - English come lingua predefinita
  1. Dialogflow aprirà automaticamente l'agente. Non abbiamo ancora finito.

Ripristinare l'agente Divebooker

  1. Torna alla pagina dell'elenco degli agenti e identifica quello che hai appena creato. Fai clic sull'opzione 78d2781c655810e7.png, quindi sul pulsante Ripristina.
  2. Seleziona l'opzione Carica, quindi trascina o seleziona il file ZIP che hai precedentemente scaricato dal repository GitHub.
  3. Fai clic sul pulsante Ripristina per importare l'agente che abbiamo fornito

Fai clic sul pulsante Ripristina per importare l'agente da noi fornito

Ben fatto! Hai terminato la creazione del tuo agente virtuale di prenotazione subacqueo, pronto ad aiutare i tuoi clienti. Nella sezione successiva, lo testerai e scoprirai se è efficace nel rispondere alle domande degli utenti e nell'assistere le richieste di prenotazione.

4. Testa l'agente

Dialogflow fornisce un simulatore integrato per chattare con gli agenti e scoprire bug. Per ogni turno, puoi verificare i valori corretti per l'intent attivato, la risposta dell'agente, la pagina attiva e i parametri della sessione.

Proveremo alcuni scenari e per ciascuno esamineremo il motivo per cui l'agente sta dando una risposta specifica. Cominciamo con la prima.

Intenzione irrisolta

  1. Nella console Dialogflow e all'interno dell'agente, fai clic su Testa agente per aprire il simulatore.

Fai clic su Test Agent per aprire il simulatore

  1. Digita un saluto all'agente, come Hello, e chiedi a what is a liveaboard?. La domanda non corrisponde ad alcun intent, un prompt generico come "Mi dispiace, non so come aiutarti" . Puoi verificare che l'evento integrato sys.no-match-default sia stato richiamato ispezionando la risposta originale sul simulatore.

Saluta l'agente e chiedi cos'è una persona che vive a casa

Scorri verso il basso fino alla fine della risposta JSON. Tieni presente che quando cerchi un intent corrispondente, Dialogflow rileva che si tratta di un NO_MATCH e genera un evento senza corrispondenza.

Verifica che l'evento sys.no-match-default sia stato generato da Dialogflow

  1. Passa alla scheda Crea e apri la pagina iniziale del flusso Liveaboard.

Passa alla scheda Crea e apri la pagina iniziale del flusso Liveaboards.

Per impostazione predefinita, ogni flusso ha gestori di eventi per gli eventi integrati senza corrispondenza e senza input. Questi gestori di eventi vengono creati automaticamente quando crei un flusso e non possono essere eliminati.

  1. Fai clic sul gestore di eventi sys.no-match-default e scorri verso il basso fino alla sezione Risposte dell'agente. Dialogflow fornisce un elenco di risposte alternative, ma puoi anche definire diversi tipi di messaggi di risposta per fornire all'utente finale altre informazioni oltre a risposte testuali.

Guarda le risposte predefinite degli agenti

Passiamo ora al sentiero felice!

Il sentiero felice

In questo secondo caso, supponiamo che tu voglia prenotare una crociera subacquea per un gruppo di 12 persone alle Isole Galapagos il prossimo anno a luglio.

  1. Nel riquadro del simulatore, fai clic sull'icona Reimposta per avviare una nuova conversazione con l'agente.

Reimposta per avviare una nuova conversazione

Valuta la possibilità di passare alla visualizzazione verticale per una migliore UX

  1. Comunica all'agente che vuoi prenotare un noleggio per le Isole Galapagos e fornisci i dettagli del viaggio. Non è necessario utilizzare gli stessi prompt riportati di seguito, sperimenta.

Metti alla prova il percorso felice

  1. Apri la pagina iniziale e fai clic sulla route head.send.group.request. Scorri verso il basso fino alla sezione Transizione, che indica a Dialogflow la pagina di transizione quando questo intent viene trovato.

Transizione alla pagina Raccogli ulteriori informazioni

  1. Chiudi la definizione di Percorso ed espandi la pagina Raccogli ulteriori informazioni. Osserva il completamento delle voci e l'elenco di parametri.

Pagina Raccogli ulteriori informazioni

Per ogni pagina in Dialogflow CX puoi definire un modulo, ovvero un elenco di parametri che devono essere raccolti dall'utente finale per la pagina. Tieni presente che l'agente non ha richiesto la destinazione del viaggio perché l'abbiamo trasmessa come parte dell'input iniziale e anche destination è un parametro di intent. Quando una pagina diventa inizialmente attiva e durante il suo periodo di attività, qualsiasi parametro del modulo con lo stesso nome di un parametro di intent viene impostato automaticamente sul valore del parametro di sessione e il prompt corrispondente viene ignorato.

  1. Passa alla scheda Gestisci e fai clic sull'intent richiesta di gruppo head.send nella sezione Intent. Osserva le frasi di addestramento fornite a questo scopo e le parti annotate delle frasi di addestramento.

Osserva le frasi di addestramento fornite a questo scopo e le parti annotate delle frasi di addestramento.

  1. Considera la frase di addestramento "Devo organizzare un viaggio in Costa Rica per 15 sommozzatori". "Costa Rica" è annotato con destination e "15" con un numero di ospiti. Quando annota parti di una frase di addestramento, Dialogflow riconosce che queste parti sono solo esempi di valori effettivi che verranno forniti dagli utenti finali al momento dell'esecuzione. Questo è il motivo per cui l'input iniziale "Offrite servizi di noleggio affitti alle Isole Galapagos?" Dialogflow ha estratto il parametro di destinazione da "Isole Galapagos".

Ora vedremo cosa succede se non forniamo all'agente un input valido quando ci viene chiesto di compilare un parametro del modulo.

Input non valido

  1. Nel riquadro del simulatore, fai clic sull'icona Reimposta per avviare una nuova conversazione con l'agente.
  2. Esprimi l'intenzione di effettuare una prenotazione di gruppo, questa volta non dire all'agente dove vuoi andare e quando ti viene chiesto una destinazione, rispondi con un valore casuale che non sia Costa Rica, Galapagos o Messico.

Inserisci una destinazione non valida

  1. Nella scheda Gestisci, fai clic su Tipi di entità nella sezione Risorse. Nota due schede: nella scheda Sistema puoi trovare le entità di sistema attualmente utilizzate dall'agente. La scheda Personalizzata fornisce l'elenco delle entità personalizzate create per trovare la corrispondenza dei dati specifici di questo agente.

Entità personalizzata di destinazione

  1. Fai clic sull'entità destination per scoprire a quali valori corrisponde l'entità. "Europa" non è una delle voci e non è nemmeno un sinonimo.
  2. Nel diagramma di flusso, espandi la pagina Raccogli ulteriori informazioni che contiene i parametri del modulo. Fai clic sul parametro destination.
  3. Nel riquadro dei parametri, scorri verso il basso fino alla sezione Gestori di eventi richiesti, quindi fai clic sul gestore di eventi predefinito senza corrispondenza.

Questo gestore di eventi a livello di parametro è pensato specificamente per gestire l'input non valido dell'utente finale durante la compilazione del modulo. Perché "Europa" è un input imprevisto, è stato richiamato un evento sys.no-match-default ed è stato chiamato il gestore di riprompt corrispondente definito per questo evento. Nella sezione L'agente dice elenca due messaggi alternativi per le richieste.

Messaggi statici di ripetizione della richiesta quando l'utente finale inserisce una destinazione non valida.

Ottimo! Questi scenari di test rappresentano scenari comuni che l'agente dovrebbe gestire in modo appropriato. Molto spesso gli utenti fanno domande a cui i bot non sono in grado di rispondere o richiedono richieste che i bot non sono in grado di soddisfare. È molto complesso progettare il modello per i "long tail", ovvero i percorsi più battuti che la maggior parte degli utenti seguirà. Pensa a tutto ciò che può andare storto in una conversazione e a tutti i percorsi imprevisti o non supportati dagli utenti.

Grazie ai progressi del riconoscimento vocale automatico (ASR), sappiamo quasi sempre esattamente ciò che gli utenti hanno detto. Tuttavia, determinare cosa intendevano gli utenti è ancora una sfida. Spesso le frasi non possono essere comprese separatamente; possono essere comprese solo nel contesto. Nella prossima sezione di questo codelab esploreremo in che modo i più recenti modelli linguistici di grandi dimensioni (LLM) generativi di Google possono aiutare a rimettere in sesto il dialogo e a far progredire la conversazione.

5. Abilita il fallback generativo

Cos'è la funzionalità di riserva generativa?

La funzionalità di riserva generativa è una funzionalità di Dialogflow CX che utilizza i modelli linguistici di grandi dimensioni (LLM) di Google per generare risposte di agenti virtuali.

In che modo è d'aiuto?

Tra i casi d'uso principali, ci sono una serie di richieste un po' comuni da parte degli utenti, come ripetere ciò che ha detto l'agente nel caso in cui l'utente non abbia capito, tenere la linea quando l'utente lo chiede e riassumere la conversazione. Nel primo test che abbiamo svolto, l'agente non ha risposto alla domanda "Che cos'è un'imbarcazione da bordo?". perché non abbiamo creato un intent per questo progetto, ma abbiamo progettato il flusso per gestire questo tipo di domande generiche relative alle immersioni subacquee e alle gite in barca.

Anche se gli intent sono solidi, c'è comunque un margine di errore. Gli utenti potrebbero interrompere lo script rimanendo in silenzio (errore Nessun input) o pronunciando qualcosa di inaspettato (errore Nessuna corrispondenza). Evitare che si verifichino errori è meglio che gestire gli errori dopo che si verifichino, ma non è possibile evitare del tutto gli errori. Prompt generici come "Mi dispiace, non so come aiutarti" o soluzioni simili minimamente attuabili sono spesso non sufficienti. Le richieste di errore dovrebbero basarsi sul principio cooperativo, secondo il quale una comunicazione efficiente si basa sul presupposto che vi sia una scarsa corrente di cooperazione tra i partecipanti conversazionali.

Nella prossima sezione vedremo come configurare la funzionalità di riserva generativa per aumentare la copertura degli intent e semplificare la gestione degli errori per una migliore esperienza del cliente.

Attiva il fallback generativo per l'evento senza corrispondenza dell'intero flusso

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.

Puoi attivare il fallback generativo nel tuo agente sui gestori di eventi senza corrispondenza, che possono essere utilizzati nel completamento del flusso, della pagina o dei parametri.

Inizieremo ad attivare il fallback generativo per l'intero evento senza corrispondenza del flusso Liveaboard.

  1. Espandi la pagina iniziale del flusso.
  2. Fai clic su sys.no-match-default in Gestori di eventi.
  3. Seleziona Abilita il fallback generativo in Risposte dell'agente, quindi fai clic su Salva.

Seleziona Abilita fallback generativo in Risposte dell'agente

Salva per abilitare il fallback generativo nella pagina iniziale di Liveaboards

Attivare il fallback generativo su specifici eventi senza corrispondenza

Ora vogliamo consentire il fallback generativo per gestire gli input non validi quando l'agente richiede il numero di passeggeri:

  1. Apri la pagina Raccogli ulteriori informazioni che contiene i parametri del modulo. Fai clic sul parametro numero di ospiti.
  2. Vai al gestore di eventi Nessuna corrispondenza di destinazione (scorri verso il basso fino alla sezione Gestori di eventi di ripetizione, quindi fai clic sul gestore di eventi predefinito senza corrispondenza).

Vai al gestore di eventi target senza corrispondenza (scorri verso il basso fino alla sezione Gestori di eventi Reprompt, quindi fai clic sul gestore di eventi predefinito senza corrispondenza).

  1. Seleziona Abilita il fallback generativo nella sezione Risposte dell'agente.

Abilita il fallback generativo sul parametro numero di ospiti

  1. Infine, fai clic su Salva.
  2. Ora ripeti gli esatti passaggi per abilitare il fallback generativo per destination e indirizzo email

Ottimo! Hai attivato il fallback generativo per gestire intent imprevisti e valori parametro non validi. Quindi, vedremo come configurare la funzionalità di riserva generativa con un prompt di testo che istruisce l'LLM come rispondere.

6. Configura il fallback generativo

La funzionalità di riserva generativa passa una richiesta a un modello linguistico di grandi dimensioni (LLM) per produrre la risposta generata. La richiesta assume la forma di un prompt di testo, ovvero una combinazione di linguaggio naturale e informazioni sullo stato attuale dell'agente e della conversazione. La funzionalità può essere configurata in diversi modi:

  1. Scegli un prompt specifico (già definito) da utilizzare per la generazione delle risposte.
  2. Definisci un prompt personalizzato.

Scegli un prompt già definito

  1. Nella console di Dialogflow CX, fai clic su Impostazioni agente.

Vai alle impostazioni dell'agente

  1. Vai alla scheda ML, quindi alla scheda secondaria IA generativa.

Sottoscheda IA generativa

La funzionalità è pronta all'uso con due prompt per il modello, il modello Predefinito (che non è visibile) e il modello Esempio che ti guida nella scrittura di prompt personalizzati.

  1. Seleziona il modello Esempio e fai clic sul pulsante Modifica sul lato destro del menu a discesa per ispezionarlo.

Fai clic sul pulsante Modifica sul lato destro del menu a discesa del modello per esaminarlo.

Con il prompt predefinito, l'agente virtuale è in grado di gestire situazioni conversazionali di base. Ad esempio:

  • Salutare l'utente.
  • Ripeti ciò che ha detto l'agente nel caso in cui l'utente non abbia capito.
  • Resta in linea quando l'utente lo chiede.
  • Riepiloga la conversazione.

Proviamo a definire un prompt di testo specifico per l'agente Divebooker.

7. Definisci il tuo prompt

  1. Copia il prompt di seguito e incollalo nell'area Prompt di testo
You are a friendly agent that likes helping traveling divers.
You are under development and you can only help
$flow-description

At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts.

Currently you can $route-descriptions

The conversation between the human and you so far was:
${conversation USER:"Human:" AGENT:"AI"}

Then the human asked:
$last-user-utterance

You say:
  1. Seleziona Salva come nuovo modello per archiviare la nuova richiesta come nuovo modello (scegli un nuovo nome del modello) e Salva nell'angolo in basso a destra del riquadro.

Crea un prompt di testo personalizzato specifico per l'agente e salvalo come nuovo modello

  1. Per rendere effettivamente il prompt appena creato il prompt attivo, devi anche salvare le impostazioni.

Salva le nuove impostazioni

Quando scrivi il tuo prompt di testo, assicurati di essere chiaro, conciso e prescrittivo. Il modo in cui il prompt all'LLM viene creato può influire notevolmente sulla qualità della risposta dell'LLM. Gli LLM sono addestrati a seguire le istruzioni, quindi più il prompt sembra un'istruzione precisa, migliori saranno i risultati. Crea un prompt e in base ai risultati ottenuti, quindi esegui l'iterazione per migliorarlo.

Per creare prompt efficaci, segui queste best practice:

  1. Fornisci una descrizione chiara e concisa dell'attività che vuoi che l'LLM svolga. Niente di più, niente di meno. Mantieni un testo breve e completo.
  2. Inoltre, il prompt deve essere specifico e ben definito, evitando un linguaggio vago o ambiguo.
  3. Suddividi le attività complesse in parti più piccole e più gestibili. suddividendo l'attività in passaggi più piccoli, è possibile aiutare il modello a concentrarsi su una cosa alla volta e ridurre la probabilità di errori o confusione.
  4. Per migliorare la qualità delle risposte, aggiungi esempi nel prompt. L'LLM apprende nel contesto gli esempi di come rispondere.

Quando crei un prompt, oltre a una descrizione in linguaggio naturale del tipo di contesto da generare, è possibile utilizzare anche i seguenti segnaposto:

  • $conversation La conversazione tra l'agente e l'utente, esclusa l'ultima espressione dell'utente. Puoi adattare i prefissi di svolta (ad es. "Umani", "IA" o "Tu", "Agente") nel prompt di testo.
  • $last-user-utterance L'ultima frase dell'utente.
  • $flow-description La descrizione del flusso attivo.
  • $route-descriptions Le descrizioni degli intent attivi.

Ora che abbiamo un prompt di testo iniziale, l'attività successiva è assicurarti che il flusso e gli intent abbiano descrizioni accurate.

8. Aggiungi descrizioni di flussi e intent

Aggiungi la descrizione del flusso

  1. Per aggiungere una descrizione al flusso Liveaboards, accedi alle impostazioni del flusso passando il mouse sopra il flusso nella sezione Flows.

Accedi alle impostazioni del flusso passando il mouse sopra il flusso nella sezione Flows.

  1. Fai clic sul pulsante 78d2781c655810e7.pngOpzioni.
  2. Seleziona Impostazioni flusso e aggiungi la seguente descrizione (o una descrizione simile): search, find and book liveaboards.

Aggiungere una descrizione al flusso Liveaboards

  1. Fai clic su Salva.

Aggiungi la descrizione dell'intent

  1. Ora aggiungiamo una buona descrizione all'intent head.send.group.request. Passa alla scheda Gestisci, scegli Intent nella sezione Risorse e seleziona l'intent head.send.group.request.
  2. Aggiungi la seguente descrizione: assist users with group or full charter reservations. Initially collect travel details including departure period, destination, number of guests (min 4 max 15 people), contact details. The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands

Tieni presente che la descrizione contiene informazioni importanti, come il numero minimo e massimo di passeggeri a bordo di una barca. Tieni presente questo aspetto.

  1. Fai clic su Salva.

Questo è tutto. Hai abilitato il fallback generativo sui gestori di eventi senza corrispondenza sia per il flusso che per il completamento dei parametri. Hai anche definito un prompt di testo personalizzato che la funzionalità di riserva generativa passa a un modello linguistico di grandi dimensioni (LLM) per produrre risposte generative.

Nella sezione successiva, rivelerai il tuo agente per vedere come può rispondere alle stesse difficili domande di prima.

9. Ripeti il test dell'agente

Ora che hai configurato e abilitato il fallback generativo sull'agente virtuale, puoi porre domande simili e complesse e vedere come gestisce le risposte.

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

Esegui di nuovo il test dell'agente

Chiedi di nuovo all'agente informazioni su immersioni e tuffi in mare. D'ora in poi, nota come ogni finestra di dialogo abbia messaggi definiti dall'utente e risposte generate evidenziati nelle caselle rosse.

Ripeti il test dell'agente e chiedi di nuovo cos'è un operatore

Hai ricevuto una risposta informativa utile invece di una richiesta generica? Bene. Dopo aver fornito una descrizione chiara e concisa delle attività che vuoi che l'agente completi (nel prompt di testo e nella descrizione del flusso), il tuo bot ora è molto più intelligente quando si tratta di rispondere a domande dettagliate senza creare intent specifici. Il tuo cliente apprezzerà il fatto che l'agente può fornire una risposta più informata anziché una risposta inattuabile.

Non essere timido e sfida l'agente, chiedi se può aiutarti a trovare un corso di immersioni subacquee dato che non sei ancora un subacqueo certificato.

 Chiedi all'agente se può aiutarti a trovare un corso di immersione

Esatto. Al momento l'agente non è stato progettato per fornire assistenza per i corsi di immersione. Come lo sa l'agente? Nel prompt di testo abbiamo indicato chiaramente in cosa può o non può essere d'aiuto l'agente. "Al momento non è possibile assistere i clienti con corsi e immersioni a terra. Non puoi consigliare negozi locali per immersioni e resort per immersioni."

Ora ripeti il test dello scenario felice e arricchisci la conversazione. Vediamo come è cambiata l'esperienza.

Ripeti il test dello scenario felice e sii creativo nel dialogo

Ripeti il test dello scenario felice e sii creativo nel dialogo

Quando Dialogflow corrisponde a un intent o tenta di raccogliere un parametro in base alla progettazione del flusso, mostrerà i fulfillment definiti in fase di progettazione. Quando l'utente avvia il copione richiedendo un riepilogo dei dettagli del viaggio o l'offerta di fornire il proprio numero di telefono, entra in gioco la funzionalità generativa di riserva.

Bene! Hai riapprovato il felice scenario e spero che tu abbia avuto una conversazione piacevole e naturale con l'agente il più possibile simile all'esperienza che avresti con un operatore.

Purtroppo, in una conversazione si possono verificare problemi. Eseguiamo un test diverso. Questa volta, quando ti viene chiesto il numero di invitati, diciamo un numero maggiore di 15.

Specifica un numero di ospiti maggiore di 15

Specifica un numero di ospiti superiore a 15

Ecco un paio di cose da sottolineare:

  1. Perché 20 non è un numero valido? Perché abbiamo impostato un limite al numero di ospiti consentiti nella descrizione dell'intent: "L'agente raccoglie informazioni quali il periodo di partenza, la destinazione e il numero di ospiti***(min 4 max 15 persone)*** *, dati di contatto*" di Google. La risposta generativa che l'LLM ha restituito "Spiacenti, possiamo assistere solo con prenotazioni di gruppo di un massimo di 15 ospiti" è perfettamente in linea con le restrizioni relative al numero di ospiti. Per applicarlo ulteriormente, il numero di ospiti è un'entità con espressione regolare personalizzata che corrisponde solo ai numeri inclusi nell'intervallo 4-15.
  2. La conversazione continua perché alla fine l'utente è ancora desideroso di ottenere un'offerta per 15 sommozzatori. Questo accade di frequente durante le conversazioni naturali e spesso cambiamo idea. Osserva come l'agente collabora e indirizza delicatamente l'utente verso il percorso di successo.

La progettazione della conversazione prevede la creazione di uno script per una metà di una finestra di dialogo, nella speranza che sia abbastanza robusto da consentire a chiunque di intervenire nell'altra metà. Durante la progettazione per la long tail, gli sviluppatori devono concentrarsi su ciò che l'utente potrebbe dire in ogni passaggio della finestra di dialogo per definire route, gestori e parametri. Questo è il motivo per cui abbiamo aggiunto la funzionalità di fallback generativa a Dialogflow CX: per consentire agli sviluppatori di concentrarsi sui principi di progettazione delle conversazioni e meno sui dettagli di implementazione, per fornire esperienze di conversazione solide agli utenti.

Facciamo un altro test, questa volta sfida di nuovo il bot con un luogo che non è nell'elenco delle destinazioni disponibili come le Maldive. Daremo un'occhiata veloce a cosa succede dietro le quinte.

Sfida di nuovo il bot con un luogo che non è nell'elenco delle destinazioni disponibili come le Maldive

Tieni presente che poiché abbiamo abilitato anche il fallback generativo sull'evento no-match per il parametro destination, viene inviata una richiesta a un modello linguistico di grandi dimensioni (LLM) per produrre la risposta generata. Le normali risposte prescritte (sotto il nome dell'agente) vengono ignorate.

Le caselle di testo di seguito ti aiuteranno a capire meglio in che modo i segnaposto contribuiscono a modellare la richiesta inviata al modello linguistico di grandi dimensioni (LLM).

Questo è il prompt di testo personalizzato che abbiamo configurato in Dialogflow con i segnaposto evidenziati in grassetto:

You are a friendly agent that likes helping traveling divers.
You are under development and you can only help
$flow-description

At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts.

Currently you can $route-descriptions

The conversation between the human and you so far was:
${conversation USER:"Human:" AGENT:"AI"}

Then the human asked:
$last-user-utterance

You say:

Nella casella di testo seguente ho incluso l'input ricevuto dal modello linguistico di grandi dimensioni (LLM) e l'output che contiene la risposta generata che verrà ripetuta per l'utente:

llm_input:
You are a friendly agent that likes helping traveling divers.
You are under development and you can only help search, find and book liveaboards.

At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts.

Currently you can assist users who are looking for a group reservation or a full charter. Initially collect travel details including departure period, destination, number of guests (min 4 max 15 people), contact details. The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands.

The conversation between the human and you so far was:
Human: Hi, my name's Alessia
AI Hi Alessia, what can I help you with today?
Human: Can you help me find a nice boat for myself and my family?
AI To assist you with that I need to collect the details of your travel and then we'll get back to you with an offer shortly.
Where would you like to go? We can organize a charter in Costa Rica, Galapagos Islands and several locations around Mexico

Then the human asked:
The kids want to go to the Maldives

llm_output:
You say:
I'm sorry Alessia, we can only help you with liveaboards in Costa Rica, Galapagos Islands and several locations around Mexico.

Analogamente al test eseguito in precedenza, la risposta inviata all'utente viene generata dal modello e si basa sulle informazioni fornite nella descrizione dell'intent: "La destinazione deve essere una delle seguenti nel Pacifico: Costa Rica, Messico, Isole Galapagos".

Modifica l'elenco delle frasi vietate

La funzionalità di riserva generativa può essere configurata in diversi modi:

  1. Scegli un prompt specifico (già definito) da utilizzare per la generazione delle risposte.
  2. Definisci un prompt personalizzato.
  3. Modifica l'elenco delle frasi vietate.

Finora abbiamo esaminato i primi due modi. Esploriamo il terzo.

  1. In Impostazioni agente, vai alla scheda ML, quindi alla scheda secondaria IA generativa.
  2. Nella sezione Frasi escluse, aggiungi le seguenti frasi all'elenco:
  3. Dangerous country
  4. Hateful place
  5. Medical assistance
  6. Fai clic su Salva.
  7. Fai clic sull'icona Reimposta e riprova con l'ultimo scenario. Invece di offrire una bellissima destinazione per immersioni in tutto il mondo, inserisci una delle frasi vietate.

Prova una delle frasi vietate

Il prompt e la risposta generata vengono verificati rispetto all'elenco di frasi escluse. Le frasi escluse sono frasi vietate dall'IA generativa. Se l'input include frasi vietate o frasi considerate non sicure, la generazione non andrà a buon fine e verrà invece inviata la normale risposta prescritta (sotto l'agente indica lo stesso completamento).

Ottima roba! Abbiamo trattato una serie di situazioni conversazionali in cui le risposte generative possono fare davvero la differenza. Continua pure a testare.

10. Complimenti

Complimenti per aver completato il codelab! È ora di rilassarsi!

Cbo Relax

Hai creato un agente virtuale correttamente e hai attivato il fallback generativo sui gestori di eventi no-match utilizzati nei flussi e durante la compilazione dei parametri.

La funzionalità generativa di riserva, combinata con un buon flusso e descrizioni di intenti, può fornire risposte specifiche e collaborative dell'agente rispetto a prompt generici come "Mi dispiace, non so come aiutarti" o "Hai inserito un'opzione non valida". I prompt di errore generati dai modelli linguistici di grandi dimensioni possono indirizzare delicatamente gli utenti a percorsi efficaci o azzerare le loro aspettative su ciò che è o non è possibile.

Non esitare a testare altre situazioni di conversazione e a esplorare le altre funzionalità disponibili correlate a Dialogflow CX e IA generativa.

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:

  • Vai alla console di Dialogflow CX ed elimina tutti gli agenti che hai creato.
  • Nella console Google Cloud, vai alla pagina API e servizi e disabilita l'API Dialogflow.

Per approfondire

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.