Best practice per la progettazione di agenti generici

Questa guida fornisce best practice generali per la progettazione di tutti i tipi di agenti.

Consulta anche la guida alla progettazione degli agenti vocali specifica per la progettazione di agenti vocali e la guida alle best practice per l'utilizzo del servizio Conversational Agents (Dialogflow CX).

Consulenza generale

Creare agenti in modo iterativo

Se l'agente sarà di grandi dimensioni o complesso, inizia creando una finestra di dialogo che risponda solo alle richieste di primo livello. Una volta stabilita la struttura di base, esegui l'iterazione sui percorsi di conversazione per assicurarti di coprire tutti i percorsi possibili che un utente finale potrebbe intraprendere.

Man mano che l'agente si evolve, valuta la possibilità di utilizzare la funzionalità degli scenari di test per lo sviluppo guidato dai test.

Agenti predefiniti

Conversational Agents (Dialogflow CX) offre modelli di agenti per aiutarti a iniziare. Gli agenti predefiniti coprono casi d'uso comuni come servizi finanziari, telecomunicazioni e viaggi. Questi agenti sono dotati di intent e entità per coprire le query utente più comuni. Aggiungi percorsi e adempimento specifici per la tua attività e potrai creare rapidamente un agente funzionante.

Integrazioni e connessione dei servizi

Esistono diversi modi per eseguire l'integrazione con gli agenti Conversational Agents (Dialogflow CX). Questa sezione fornisce le best practice per scegliere come eseguire l'integrazione.

Integrazioni

Le integrazioni di Conversational Agents (Dialogflow CX) forniscono un'interfaccia utente pronta all'uso per l'agente. Se utilizzi un'integrazione, non devi chiamare direttamente l'API Conversational Agents (Dialogflow CX), poiché le integrazioni lo gestiscono per te. Queste integrazioni possono fornire un agente di messaggistica che puoi incorporare nel tuo sito web, collegarti ad altre piattaforme di messaggistica o fornire un'interfaccia di telefonia.

API Conversational Agents (Dialogflow CX)

Se nessuna delle integrazioni pronte all'uso è adatta o se vuoi personalizzare l'interfaccia per il tuo sistema, puoi utilizzare direttamente l'API Conversational Agents (Dialogflow CX). Con questo approccio, dovrai implementare l'interfaccia utente per il tuo agente o utilizzare un'interfaccia utente esistente.

Webhook

A meno che l'agente non possa essere definito completamente con dati statici, devi utilizzare webhooks per collegare il servizio e fornire un agente in grado di gestire scenari dinamici. Questo vale sia se utilizzi le integrazioni sia se utilizzi l'API Conversational Agents (Dialogflow CX).

Risorse per gli agenti

Le risorse degli agenti Conversational Agents (Dialogflow CX) possono essere utilizzate in molti modi per ottenere il risultato desiderato. Questa sezione fornisce consigli per scegliere le risorse giuste per gli scenari giusti.

Flussi e pagine

I flussi e le pagine forniscono una struttura all'agente. Puoi considerare le pagine come nodi in una macchina a stati e i flussi come gruppi di pagine correlate. Controlli le transizioni tra i nodi con gestori dello stato, che vengono chiamati quando viene associato un intento, viene soddisfatta una condizione o viene invocato un evento.

Un agente semplice potrebbe funzionare bene con un singolo flusso, ma gli agenti complessi sono quasi sempre progettati meglio con più flussi. Ogni flusso deve rappresentare un argomento di alto livello per l'agente, dove ogni pagina associata al flusso aiuta a gestire l'argomento. Inoltre, ogni flusso può avere alcune impostazioni proprie e può essere di proprietà di un sottoinsieme di membri del team, il che consente di suddividere il lavoro durante la progettazione di agenti di grandi dimensioni.

Quando progetti un agente grande e complesso, devi prendere in considerazione i limiti di"flussi per agente" e "pagine per flusso". Questi limiti contribuiscono a mantenere il rendimento dell'agente.

Se il design dell'agente ha troppi flussi per agente, combina gli argomenti correlati in un unico flusso. Ad esempio, puoi combinare i seguenti argomenti in un unico flusso "Ricevi saldo":

  • Controllare il saldo del conto corrente
  • Controllare il saldo del risparmio
  • Ottenere il saldo del mutuo
  • Controllare il saldo del credito

Se il design dell'agente ha troppe pagine per flusso, combina le pagine correlate e utilizza molti percorsi per pagina.

Se hai ancora difficoltà con i limiti di flusso e di pagine, è possibile che tu abbia incorporato troppa logica di business nell'agente stesso. Valuta la possibilità di spostare questa logica negli webhook.

Di seguito è elencata la granularità del controllo della conversazione delle risorse dell'agente in ordine crescente di granularità:

  1. Agenti (un agente gestisce tutte le conversazioni)
  2. Flussi (un flusso gestisce uno o più argomenti di conversazione correlati)
  3. Pagine (una pagina gestisce uno o più turni di conversazione correlati)
  4. Percorsi (un percorso gestisce l'intenzione o il controllo delle condizioni dell'utente)

Parametri intent e parametri modulo

Il modo principale in cui il sistema riceve dati strutturati dall'utente finale è tramite parametri. Puoi utilizzare i parametri per intent (parametri intent) o pagine (parametri dei moduli).

Lo scopo principale di alcune pagine è raccogliere informazioni specifiche dall'utente finale. Ad esempio, una pagina potrebbe essere progettata per raccogliere i dati di contatto dell'utente finale. In questo caso, devi sempre utilizzare i parametri del modulo per raccogliere queste informazioni.

In alcuni casi, potresti voler acquisire le informazioni degli utenti finali durante il passaggio da una pagina all'altra. Ad esempio, se all'inizio della conversazione l'utente finale richiede un determinato prodotto, devi acquisire il prodotto desiderato durante la transizione alla pagina di ordine appropriata. In questo caso, utilizza i parametri di intente come parte delle route di intente.

Esistono anche situazioni in cui è ideale utilizzare sia i parametri intent che i parametri del modulo. Ad esempio, se all'inizio della conversazione l'utente finale richiede una camicia di taglia piccola, devi acquisire il parametro della taglia desiderata (small) durante la transizione alla pagina di ordine della camicia. La pagina di ordinazione della camicia potrebbe richiedere ulteriori informazioni, come il colore desiderato. La pagina di ordine della camicia deve avere parametri di modulo per taglia e colore. In questo esempio, il parametro taglia è già stato fornito ed è stato propagato, pertanto l'agente richiederà solo il colore. Tuttavia, altre conversazioni potrebbero seguire un percorso diverso, ad esempio se l'utente finale non ha fornito la taglia desiderata quando la pagina di ordine della camicia diventa attiva. Se definisci questo parametro in entrambi i modi, il tuo agente è più flessibile nel modo in cui estrae le informazioni.

Route e gruppi di route

Se vuoi passare a un'altra pagina, mettere in coda un messaggio di risposta o chiamare un webhook quando viene trovato un intento o viene soddisfatta una condizione, utilizza le route.

Se utilizzi lo stesso insieme di percorsi in più pagine, utilizza gruppi di percorsi. In questo modo eviterai duplicazioni non necessarie nel design dell'agente.

Riutilizzo di intent

Se ti trovi a definire più intent con frasi di addestramento simili, prendi in considerazione la possibilità di riutilizzarli in più pagine. Idealmente, dovresti definire alcuni intent di uso generale che vengono utilizzati in molte pagine e alcuni intent specifici che vengono utilizzati solo in una singola pagina. In questo modo eviterai duplicazioni non necessarie nel design dell'agente.

Ad esempio, gli intent di conferma sono in genere definiti meglio come intent riutilizzabili. Un intento confirmation.yes potrebbe avere frasi di addestramento come:

  • OK
  • e certo
  • assolutamente
  • sì per favore

Un intento confirmation.no potrebbe avere frasi di addestramento come:

  • no
  • nah
  • no
  • neanche per sogno
  • Non fa per me
  • Assolutamente no
  • No, grazie

Questi intent di conferma riutilizzabili possono essere utilizzati in molti scenari per il tuo agente.

In alcuni casi, è consigliabile anche creare intent di conferma specializzati. Ad esempio, quando confermi un ordine, potresti voler avere un'intenzione order.confirmation.yes specializzata con frasi di addestramento come:

  • l\'ordine sembra a posto
  • Accetto questo ordine

Inoltre, un'intenzione order.confirmation.no specializzata con frasi di addestramento come:

  • Non voglio questo ordine
  • Non accetto questo ordine

Quando la pagina di conferma dell'ordine è attiva, i percorsi degli intent per tutti e quattro questi intent devono essere inclusi nell'ambito. In questo modo, qualsiasi conferma generica o specifica dell'utente finale verrà gestita in modo appropriato.

Intento negativo predefinito

Devi compilare l'intent negativo predefinito con frasi che potrebbero essere pronunciate dagli utenti finali, ma che non devono corrispondere a nessun intent nell'agente.

Fulfillment

Esistono molte opzioni per utilizzare il completamento per rispondere all'utente finale. Durante un turno di conversazione, l'agente può aggiungere più messaggi alla coda di risposta, e la coda concatenata viene inviata all'utente finale alla fine del turno di conversazione. Questa sezione descrive ogni opzione per la creazione dei singoli messaggi.

  • Evasione dell'inserimento di pagina: questo tipo di evasione viene chiamato quando la pagina diventa inizialmente attiva. È utile quando vuoi un messaggio che descriva lo scopo della pagina e che debba essere detto una sola volta mentre la pagina è attiva. Ad esempio:
    • Cosa vuoi sapere sul tuo conto corrente?
    • Che tipo di prodotto vuoi acquistare?
    • Devo raccogliere alcune informazioni sulla camicia che vuoi ordinare.
  • Percorsi: questo completamento viene chiamato quando viene chiamato un percorso di intent o un percorso di condizione con completamento. Questa opzione è utile quando vuoi che un messaggio risponda all'utente finale in merito alla corrispondenza dell'intent, alla condizione soddisfatta (che può essere una condizione di completamento del modulo) o alla transizione. Ad esempio:
    • Sì, il tuo piano internazionale include il Giappone. (corrispondenza di intent)
    • Vuoi davvero acquistare 300 camicie? (condizione di confronto metodo)
    • Ok, il tuo appuntamento è per le 7:00 di domani mattina. (completamento della compilazione del modulo)
    • Bene, parliamo di oritteropi. (transizione)
  • Gestori di eventi: questo completamento viene chiamato quando viene invocato un evento. È utile quando vuoi un messaggio che risponda all'evento. Ad esempio:
    • Il titolo che stai valutando di acquistare ha appena aumentato il suo valore del 10%. (evento personalizzato)
    • Puoi riformulare la richiesta? (evento senza corrispondenza)
  • Prompt iniziali per i moduli: questo completamento viene chiamato quando l'agente compila il modulo. Questi messaggi devono porre all'utente finale una domanda specifica. Ogni parametro del modulo ha il proprio adempimento della richiesta iniziale. Ad esempio:
    • Che taglia vuoi?
    • Di che colore vuoi la camicia?
  • Gestione degli addetti alla richiesta di un'altra conferma per i moduli: questo completamento viene chiamato quando l'agente sta compilando il modulo e non comprende la selezione dell'utente finale per il parametro corrente. Questo completamento è necessario solo se vuoi che un messaggio di richiesta ripetuta sia diverso dal messaggio di richiesta iniziale. Se non esistono gestori di richieste di nuovo prompt, l'agente utilizzerà semplicemente la richiesta iniziale come messaggio di richiesta di nuovo prompt. Ad esempio:
    • Non capisco. Puoi fornire un colore valido per la camicia?

Denominazione

Questa sezione fornisce consigli per la denominazione delle risorse agente.

Denominazione degli intent

Se il tuo agente ha molti intent, ti consigliamo di adottare uno schema di denominazione che ti aiuti a organizzarli. È comune segmentare i nomi delle intenzioni con la punteggiatura, in cui la specificità aumenta da sinistra a destra. Inoltre, il nome di un intent deve riflettere l'intenzione dell'utente finale per un turno di conversazione.

Esistono molti schemi di denominazione efficaci, ma ecco un esempio:

  • phone-service.order.cancel
  • phone-service.order.create
  • phone-service.order.change
  • tv-service.order.cancel
  • tv-service.order.create
  • tv-service.order.change
  • account.balance.get
  • account.balance.pay
  • account.address.get
  • account.address.update

Transizioni

Le transizioni definite negli handler di stato forniscono il controllo sulla conversazione modificando la pagina attiva. Questa sezione fornisce consigli per organizzare le transizioni degli agenti.

Transizioni gratuite

Quando definisci un percorso che attiva una transizione, tieni presente che potrebbe esserci un percorso complementare o inverso.

Ad esempio:

  • Se hai un percorso dell'intent per confirmation.yes, valuta la possibilità di definire un altro percorso per confirmation.no.
  • Se definisci un percorso con condizione con un operatore booleano =, valuta la possibilità di definire un altro percorso che utilizzi !=.

Gestione dell'input utente finali

Questa sezione fornisce linee guida per intent e frasi di addestramento, in modo che l'agente possa gestire ed elaborare in modo ottimale l'input utente finale.

Definisci almeno 20 frasi di addestramento

Devi disporre di almeno 20 frasi di addestramento per ogni intento. In caso contrario, il modello di NLU potrebbe non disporre di informazioni sufficienti per associarsi in modo appropriato alla tua intenzione. Si tratta di una linea guida minima. Idealmente, dovresti definirne di più, soprattutto per intent principali di agenti di grandi dimensioni, dove è auspicabile un numero di circa 50.

Fai attenzione ai pregiudizi in termini di intent

Quando uno o più intent hanno un numero di frasi di addestramento notevolmente superiore rispetto ad altri intent, il modello NLU si orienta in favore degli intent più grandi a causa di dati sbilanciati. Questo bias di intent può verificarsi quando la quantità di frasi di addestramento è diversa di un ordine di grandezza o più.

In alcuni casi, si tratta di un comportamento auspicato, poiché potresti definire alcuni intenti che devono essere abbinati più spesso di altri, poiché corrispondono agli input degli utenti finali osservati più di frequente nel traffico in tempo reale.

In altri casi, questo comportamento potrebbe non essere auspicabile, perché non vuoi che venga dato un'impronta in favore di questi intenti più ampi. In questo caso, riduci il numero di frasi di addestramento per questi intent più grandi in modo che sia dello stesso ordine di grandezza degli altri intent. Ad esempio:

Frasi di addestramento per l'intento A Frasi di addestramento per l'intento B Bias per l'intenzione B
20 50 No
20 200 Borderline
20 2000

Utilizzo delle entità e quantità di frasi di addestramento

Per tutti i tipi di entità utilizzati in un'intenzione:

  • Annota ogni esempio dei tipi di entità.
  • Per ciascuno dei tipi di entità, fornisci almeno cinque frasi di addestramento contenenti esempi annotati.
  • Fornisci almeno tre volte il numero di frasi di addestramento rispetto ai tipi di entità. Ad esempio, se utilizzi 10 diversi tipi di entità per le annotazioni in un'intenzione, devi avere almeno 30 frasi di addestramento.

Le frasi di addestramento devono essere naturali

Le frasi di addestramento devono essere colloquiali e naturali; devono corrispondere a ciò che le persone dicono effettivamente. Se possibile, utilizza come dati di addestramento gli input degli utenti finali che si sono verificati in produzione, prestando particolare attenzione a quelli più comuni.

Varietà necessaria delle frasi di addestramento

Includi varianti di domande, comandi, verbi e sinonimi per i nomi comuni per assicurarti che le frasi coprano un ampio spettro di possibili richieste.

È meglio includere frasi brevi come "pagare la bolletta", nonché frasi e periodi più lunghi come "Ho appena ricevuto una comunicazione per posta che mi informa che devo pagare il saldo della mia dichiarazione". Non esiste una proporzione consigliata di frasi brevi e lunghe, ma devi basarti sugli input effettivi degli utenti finali inviati all'agente in produzione.

È importante definire frasi di addestramento che variano per lunghezza, formulazione e struttura della frase per garantire una buona formazione dell'agente. Non è necessario aggiungere varietà per il gusto di farlo, ma è necessario fornire una varietà sufficiente affinché il modello di NLU possa rilevare con successo l'intenzione dell'utente finale da una vasta gamma di input dell'utente finale. Se la varietà non è sufficiente, esiste il rischio di overfitting. In altre parole, esiste il rischio che il modello sia troppo legato ai particolari esempi forniti e non generi una generalizzazione sufficiente per altri esempi.

Varietà di lettere maiuscole

La sensibilità alle lettere maiuscole varia in base al modello NLU utilizzato dall'agente.

NLU standard

Il modello NLU standard non è sensibile alle maiuscole. In rari casi, potrebbe essere necessario aggiungere frasi di addestramento che variano solo per quanto riguarda le lettere maiuscole. Questo di solito si applica alle situazioni in cui prevedi che gli utenti finali forniscano input di testo in maiuscolo.

Approcci alternativi potrebbero essere:

  • Abbassare la soglia di classificazione ML
  • Mettere in minuscolo gli input degli utenti finali prima di inviarli a Conversational Agents (Dialogflow CX).

NLU avanzata

A differenza del modello NLU standard, il modello NLU avanzato è sensibile alle maiuscole. Ti consigliamo di testare e aggiungere i dati di addestramento pertinenti in maiuscolo per aumentare i tassi di corrispondenza all'intenzione.

Varietà di frasi di addestramento non necessaria

Evita variazioni banali nelle frasi di addestramento, poiché forniscono informazioni duplicate al modello NLU. Ad esempio, non includere varianti che differiscono solo per:

  • Maiuscole: se utilizzi il modello NLU standard, evita frasi duplicate come "Ordina un biglietto" e "ordina un biglietto", tranne in rari casi. Tuttavia, il modello NLU avanzato è sensibile alle maiuscole e richiede più frasi di addestramento per aumentare le corrispondenze di intent. Per maggiori dettagli, consulta la sezione relativa alla varietà di maiuscole.
  • Parole di riempimento: ad esempio, "ok, ordina un biglietto" e "ordina un biglietto".
  • Puntuazione: ad esempio, "puoi aiutarmi?" e "puoi aiutarmi!?"

Coerenza delle annotazioni

La parte della frase di addestramento selezionata per un'annotazione deve includere tutto, e non più, il testo necessario per associare un'entità. Inoltre, assicurati che le parti simili delle frasi di addestramento siano annotate per l'intero intento.

Ad esempio, la tabella seguente mostra modi corretti e sbagliati per aggiungere annotazioni con l'entità di sistema @sys.date:

Buono Negativo
Partenza il 7 settembre Partenza il 7 settembre
Partenza il 4 luglio Partenza il 4 luglio

Utilizza annotazioni semanticamente significative per le entità di sistema

Il significato semantico di una parte della frase di addestramento selezionata per un'annotazione può essere influenzato dal resto del testo di una frase di addestramento. Ad esempio:

Frase di addestramento annotata Significato semantico del testo annotato
Ho 7 anni L'età di una persona
Il contratto è valido per 7 anni Una durata

I modelli di machine learning di Conversational Agents (Dialogflow CX) prendono in considerazione il significato semantico quando corrispondono alle entità di sistema. Il significato semantico della parte della frase di addestramento deve corrispondere al significato semantico previsto dell'entità di sistema.

Ad esempio, non utilizzare l'entità di sistema @sys.duration per l'annotazione del primo esempio "7 anni" riportato sopra. Il significato semantico di "7 anni" non corrisponde a una semplice durata temporale. Devi invece selezionare "7" per l'annotazione e utilizzare l'entità di sistema @sys.number.

Definire intent per gestire le risposte di compilazione dei moduli non conformi

Valuta la possibilità di definire intent per gestire le risposte di compilazione dei moduli non conformi. Ad esempio, l'agente potrebbe chiedere "Quali sono le date del tuo viaggio?", a cui l'utente finale risponde"Non lo so ancora". Questa risposta non soddisfa la richiesta del parametro del modulo, ma se l'agente ha un percorso di intent nell'ambito che può corrispondere a questa risposta, può gestire bene la situazione.

Evita @sys.any

Evita di utilizzare il tipo di entità di sistema @sys.any. Dovrebbe essere utilizzata solo se hai esaurito completamente tutte le opzioni, inclusa la creazione di entità personalizzate. Questo tipo di entità è molto ampio e può causare comportamenti indesiderati.

Se utilizzi questo tipo di entità, evita di annotare più parti di una singola frase di addestramento con questo tipo di entità, in quanto ciò crea un'ambiguità e il comportamento dell'agente sarà indefinito.

È meno pericoloso utilizzare @sys.any con i parametri del modulo, perché l'agente si aspetta informazioni specifiche quando chiede i parametri del modulo.

Le annotazioni devono includere una serie di valori delle entità

Quando definisci le frasi di addestramento annotate, devi utilizzare una serie di esempi di valori delle entità nelle frasi. Non devi utilizzare sempre lo stesso esempio di entità per le annotazioni. L'esempio seguente mostra annotazioni buone e cattive per un tipo di entità prodotto:

Buono Negativo
Voglio acquistare una camicia Voglio acquistare una camicia
Ordinare un nuovo cappello Ordina una nuova camicia
Aggiungere uno smartwatch al carrello Aggiungi una camicia al carrello

Le entità personalizzate devono includere una certa varietà

Le entità personalizzate devono coprire una vasta gamma di esempi. Il modello NLU fornirà varietà per le forme grammaticali, ma devi includere tutti gli elementi possibili.

Evita entità che corrispondono in modo aggressivo

Non definire entità che corrispondono a qualsiasi cosa. Ciò peggiora le prestazioni e la qualità dell'IA. Quasi tutto in ogni frase di addestramento viene valutato come una possibile corrispondenza.

Le entità mappate e elencate devono concentrarsi su valori distinti

I tipi di entità mappa e elenco devono avere un ambito limitato che acquisisca valori distinti di un tipo di informazioni. Mantieni le entità concise, brevi e semplici.

Se i valori delle entità sono complicati, potrebbe essere perché le frasi di addestramento dell'intenzione sono più adatte alla tua situazione. Ad esempio, prendi in considerazione input utente finali come:

  • "Come faccio a effettuare una chiamata internazionale con il piano A?"
  • "Utilizzo del roaming internazionale dei dati con il piano B".

Non creare tipi di entità sia per le azioni sia per i piani, come ad esempio:

Tipo di entità Azioni Tipo di entità Piani
"Come faccio a effettuare una chiamata internazionale" "Piano A"
"Utilizzo del roaming internazionale dei dati" "Piano B"

Devi invece utilizzare frasi di addestramento e corrispondenza degli intent per acquisire le azioni e le entità per acquisire i piani.

Utilizza le entità regexp per acquisire identificatori diversi dalle parole

Quando acquisisci l'input utente finale che prevede identificatori non di parole, devi utilizzare entità regexp. Ad esempio, per acquisire ID prodotto come "AA-256" o "AC-436", utilizza un'entità regexp come "[A-Z]{2}-\d{3}".

Evita di nidificare entità composite

Non utilizzare più di un livello di nidificazione nelle entità composite. Ogni livello di nidificazione degrada notevolmente la qualità.

Evitare intent simili

Ogni intent deve acquisire l'intenzione dell'utente finale. Se definisci intent diversi con frasi di addestramento simili, la corrispondenza potrebbe non essere affidabile, poiché il modello NLU non può determinare con sufficiente certezza a quale intent abbinare la richiesta.

Se due frasi di addestramento rappresentano la stessa intenzione, devono appartenere alla stessa intenzione. Ad esempio, "modifica la data di scadenza della fattura attuale" e "più tempo per pagare" dovrebbero appartenere allo stesso intento, perché entrambi richiedono una modifica della data di scadenza. Tuttavia, "Posso effettuare una chiamata internazionale con il piano A?" e "Posso utilizzare il roaming internazionale dei dati con il piano A?" potrebbero appartenere a intent diversi, perché l'utente finale vuole qualcosa di diverso in ogni caso.

Evita tipi di entità simili

Evita di definire più tipi di entità con voci simili, perché ciò può creare ambiguità per il modello NLU.

Utilizzare gli eventi senza corrispondenza in produzione per migliorare le intenzioni

Quando esegui l'agente in produzione, è inevitabile che alcuni input degli utenti finali generino eventi senza corrispondenze. Puoi utilizzare queste opportunità per migliorare il tuo agente in tre modi:

  • Aggiungi l'input utente finale come frase di addestramento all'intent desiderato. Tuttavia, non è sempre l'opzione migliore. Se lo fai molte volte per l'intenzione, potresti creare un bias di intenzione.
  • Ripulisci le frasi di addestramento per l'intento desiderato, in modo che riflettano con precisione l'intenzione. In alcuni casi, gli intent con frasi di addestramento divergenti possono impedire la corrispondenza per l'intent.
  • Se gli intent che non devono corrispondere all'input utente finale hanno frasi di addestramento che potrebbero corrispondere all'input utente finale, elimina queste frasi di addestramento.

Evita i caratteri speciali

I caratteri speciali nelle frasi di addestramento ({, _, #, [ e così via) vengono ignorati. Fanno eccezione le emoticon, che funzionano come previsto.

Evita gli intercalari

Le parole riempitive sono parole che puoi ignorare e comunque riuscire a comprendere il testo. Ad esempio:

  • per favore
  • puoi
  • hmmm
  • Che ne dici di

L'utilizzo di parole riempitive nelle frasi di addestramento è non necessario, ma innocuo, poiché queste vengono ignorate dal modello NLU. Tuttavia, non devi definire frasi di addestramento che variano solo per le parole di riempimento.

Non definire mai entità composte da intercalari.

Sperimenta con le impostazioni di ML

Le impostazioni ML possono essere utilizzate per modificare il modo in cui viene elaborato l'input utente finale. Nella maggior parte dei casi, le impostazioni predefinite funzionano bene. Tuttavia, potrebbe essere opportuno perfezionare le impostazioni per migliorare il rendimento degli agenti.

Rispondere all'utente finale

Questa sezione fornisce linee guida per l'utilizzo del completamento per rispondere all'utente finale.

Dai il benvenuto all'utente finale

Un agente appena creato ha un percorso dell'intent creato automaticamente per l'intent di benvenuto. Devi modificare questo percorso per includere un messaggio di accoppiamento che accolga l'utente finale. Questo messaggio deve descrivere l'agente e dare all'utente finale un'idea di cosa è capace.

Conferma le informazioni dell'utente finale

Spesso è meglio ripetere le informazioni fornite dall'utente finale nelle risposte. In questo modo l'utente finale sa che l'agente sta comprendendo la sua richiesta.

Quando viene trovato un intento e si verifica una transizione, comunicate all'utente finale che la conversazione sta procedendo in base alla sua richiesta. Ad esempio:

Dialogo Descrizione
Utente finale: ho domande sul mio conto corrente.
Agente: OK, cosa vorresti sapere sul tuo conto corrente?
L'input utente finale ha generato una corrispondenza dell'intenzione ed è stato seguito un percorso che includeva un messaggio di adempimento e una transizione a una pagina che gestisce le domande relative al controllo dell'account. Tieni presente che l'agente conferma che l'utente finale vuole informazioni sul suo conto corrente.

Al termine della compilazione del modulo, ripeti i dati forniti dall'utente finale. Ad esempio:

Dialogo Descrizione
Utente finale: Domani
Agente: Ok, il taglio è fissato per domani alle 19:00. Posso aiutarti in qualcos\'altro?
L'utente finale ha fornito il parametro del modulo data, che era l'ultimo parametro del modulo nella pagina attiva. L'agente ha confermato l'ora e la data di un taglio di capelli programmato.

Guidare la conversazione

L'agente deve sempre guidare la conversazione con l'utente finale. Puoi farlo facilmente terminando ogni risposta con una domanda come:

  • Posso aiutarti in qualcos\'altro?
  • Cosa vuoi sapere sui beagle?
  • Vuoi annullare o inviare l'ordine?
  • Come posso aiutarti oggi?
  • Viaggi da solo o con qualcuno?

Quando definisci queste domande, fai attenzione a non porne più di una, ad esempio:

  • Ci sei ancora? Per quale servizio vuoi avere informazioni?
  • Vuoi comunque questo ordine? Vuoi aggiungere qualcosa?

L'utente finale potrebbe rispondere solo a una delle domande e il tuo agente potrebbe non gestire correttamente la situazione.

Gestione di errori e input imprevisti da parte dell'utente finale

Questa sezione fornisce consigli per la gestione di errori e input imprevisti da parte dell'utente finale.

Crea gestori di eventi per gli eventi integrati

Dovresti creare gestori di eventi per gli eventi integrati se applicabili. La gestione di questi eventi è simile alla cattura delle eccezioni nella programmazione del software. A seconda della situazione, potresti voler gestire gli eventi con gestori di eventi specifici per i parametri, gestori di eventi specifici per la pagina o gestori di eventi specifici per il flusso.

Gestire gli errori dei webhook

Quando il servizio webhook non funziona, è importante che l'agente possa gestire correttamente l'errore. Per farlo, devi definire i gestori degli eventi per gli eventi integrati specifici del webhook. Ecco un approccio consigliato per gestire gli errori degli webhook:

  • Non specificare un target di transizione dall'handler dello stato che attiva la chiamata al webhook, altrimenti l'handler degli eventi di errore del webhook non verrà invocato. Imposta invece la destinazione della transizione nella risposta del webhook del servizio webhook.
  • Scegli una pagina in cui un contatore di errori può essere inizializzato a zero. Questa pagina deve essere attiva prima della pagina che attiva una chiamata webhook. Il completamento dell'inserimento per questa pagina deve inizializzare il contatore degli errori su 0 utilizzando un parametro di completamento preimpostato. Ad esempio:

    Parametro Valore
    webhook-error-count 0
  • Crea una pagina di errore webhook che gestisce gli eventi di errore webhook:

    • L'elaborazione dell'inserimento deve confermare l'errore all'utente finale e deve incrementare un parametro di sessione del contatore degli errori utilizzando un predefinito del parametro di elaborazione. Ad esempio:

      Parametro Valore
      webhook-error-count $sys.func.ADD($session.params.webhook-error-count, 1)
    • Definisci un percorso con condizione che abbia una condizione che imponga che il conteggio degli errori sia inferiore al massimo consentito. (ad es. $session.params.webhook-error-count <= 3). Questo percorso deve avere un'implementazione che invii una notifica all'utente finale informandolo che l'agente riproverà. Per questa route deve essere impostato un target di transizione su PREVIOUS_PAGE o su qualsiasi pagina che possa fare un altro tentativo di chiamare l'webhook.

    • Definisci un percorso con una condizione che preveda che il conteggio degli errori sia superiore al valore massimo consentito (ad esempio $session.params.webhook-error-count > 3). Questo percorso deve avere un'esecuzione che invii una notifica all'utente finale che l'agente non tenterà più di nuovo. Per questo percorso deve essere impostato un target di transizione su una pagina che non attiverà i tentativi di webhook.

  • Il gestore degli eventi webhook deve avere un target di transizione che passa alla pagina di errore del webhook.

Strumenti

Questa sezione fornisce consigli sull'utilizzo di strumenti per migliorare il design degli agenti.

Utilizzare lo strumento di convalida

Devi sempre utilizzare lo strumento di convalida per controllare il tuo agente. Questo strumento rileva alcuni dei problemi descritti in questa guida.

Utilizzare la funzionalità dei casi di test

Devi sempre definire casi di test per il tuo agente. Questi casi di test possono contribuire a evitare le regressioni mentre l'agente si evolve per gestire più scenari.