Best practice per la progettazione di agenti generici

Questa guida fornisce le 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 Dialogflow CX.

Indicazioni generali

Crea 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 livello superiore. Una volta stabilita la struttura di base, esegui l'iterazione sui percorsi di conversazione per assicurarti di coprire tutti i possibili percorsi 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 basato su test.

Agenti predefiniti

Dialogflow CX offre modelli di agenti per aiutarti a iniziare. Agenti predefiniti coprono casi d'uso comuni come servizi finanziari, telecomunicazioni e viaggi. Questi agenti sono dotati di intent ed entità per coprire le query più comuni degli utenti. Aggiungi percorsi e fulfillment specifici per la tua attività e creerai rapidamente un agente funzionante.

Integrazioni e connessione dei servizi

Esistono diversi modi per eseguire l'integrazione con gli agenti Dialogflow CX. Questa sezione fornisce le best practice per scegliere la modalità di integrazione.

Integrazioni

Le integrazioni di Dialogflow CX forniscono un'interfaccia utente pronta all'uso per il tuo agente. Se utilizzi un'integrazione, non è necessario chiamare direttamente l'API Dialogflow CX, poiché le integrazioni se ne occupano per te. Queste integrazioni possono fornire un agente di testo che puoi incorporare nel tuo sito web, connettere ad altre piattaforme di messaggistica o fornire un'interfaccia di telefonia.

API 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 Dialogflow CX. Con questo approccio, dovrai implementare l'interfaccia utente per l'agente o utilizzare un'interfaccia utente esistente.

Webhook

A meno che il tuo agente non possa essere definito completamente con dati statici, devi utilizzare i webhook per connettere il tuo servizio e fornire un agente in grado di gestire scenari dinamici. Questo vale sia che utilizzi le integrazioni sia l'API Dialogflow CX.

Risorse per gli agenti

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

flussi e pagine

I flussi e le pagine forniscono la struttura all'agente. Puoi pensare alle pagine come a nodi in una macchina a stati e ai flussi come a gruppi di pagine correlate. Puoi controllare le transizioni tra i nodi con i gestori di stato, che vengono chiamati quando viene trovato un intent corrispondente, viene soddisfatta una condizione o viene richiamato un evento.

Un agente semplice può 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 aiuta a dividere il lavoro durante la progettazione di agenti di grandi dimensioni.

Quando progetti un agente di grandi dimensioni e complesso, devi considerare i limiti di"flussi per agente" e "pagine per flusso". Questi limiti contribuiscono a mantenere l'agente efficiente.

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

  • Ottieni il saldo del conto corrente
  • Ottieni il saldo dei risparmi
  • Ottieni il saldo del mutuo
  • Ottieni 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 continui ad avere difficoltà con i limiti di flusso e di pagina, è possibile che tu abbia integrato troppa logica di business nell'agente stesso. Valuta la possibilità di spostare questa logica nei webhook.

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

  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. Route (una route gestisce un user intent o un controllo delle condizioni)

Parametri di intent e parametri del modulo

Il modo principale in cui il sistema ottiene dati strutturati dall'utente finale è tramite i parametri. Puoi utilizzare i parametri per gli intent (parametri di intent) o per le pagine (parametri del modulo).

Lo scopo principale di alcune pagine è raccogliere informazioni specifiche dall'utente finale. Ad esempio, una pagina può 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 dell'utente finale durante la transizione da una pagina all'altra. Ad esempio, se l'utente finale richiede un determinato prodotto all'inizio della conversazione, devi acquisire il prodotto desiderato durante la transizione alla pagina per gli ordini appropriata. In questo caso, utilizza i parametri di intent come parte dei percorsi di intent.

Esistono anche situazioni in cui l'utilizzo di entrambi i parametri di intent e dei parametri del modulo è ideale. Ad esempio, se l'utente finale richiede una maglietta di taglia S all'inizio della conversazione, devi acquisire il parametro della taglia desiderata (S) durante la transizione alla pagina per ordinare la maglietta. La pagina per ordinare la maglietta potrebbe richiedere ulteriori informazioni, come il colore desiderato. La pagina per l'ordine della maglietta deve avere parametri del modulo per la taglia e il colore. In questo esempio, il parametro size è già stato fornito ed è propagato, quindi l'agente richiederà solo il colore. Tuttavia, altre conversazioni potrebbero seguire un percorso diverso, in cui l'utente finale non ha fornito la taglia desiderata quando la pagina per ordinare la maglietta diventa attiva. Definendo questo parametro in entrambi i modi, l'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 trovata una corrispondenza con un intent o viene soddisfatta una condizione, utilizza i percorsi.

Se ti capita di utilizzare lo stesso insieme di route su più pagine, utilizza i gruppi di route. In questo modo eviterai inutili duplicazioni nella progettazione dell'agente.

Riutilizzo degli intent

Se ti capita di definire più intent con frasi di addestramento simili, valuta la possibilità di riutilizzare gli intent in più pagine. Idealmente, dovresti definire alcuni intent generici utilizzati in molte pagine e alcuni intent specifici utilizzati solo in una singola pagina. In questo modo eviterai inutili duplicazioni nella progettazione dell'agente.

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

  • sì
  • sì
  • esatto
  • OK
  • sì
  • you bet
  • absolutely
  • sì per favore

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

  • no
  • nah
  • no
  • neanche per sogno
  • non fa per me
  • absolutely not
  • no, grazie

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

In alcuni casi, dovresti anche prendere in considerazione la creazione di intent di conferma specializzati. Ad esempio, quando confermi un ordine, potresti voler avere un intent order.confirmation.yes specializzato con frasi di addestramento come:

  • the order looks good to me
  • Accetto questo ordine

E un intent order.confirmation.no specializzato con frasi di addestramento come:

  • Non voglio questo ordine
  • Non accetto questo ordine

Quando la pagina di conferma dell'ordine è attiva, i percorsi di 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 gli utenti finali potrebbero pronunciare, ma che non devono corrispondere a nessun intent nell'agente.

Fulfillment

Esistono molte opzioni per utilizzare il fulfillment 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 al termine del turno di conversazione. Questa sezione descrive ogni opzione per la creazione dei singoli messaggi.

  • Fulfillment di ingresso alla pagina: questo fulfillment viene chiamato quando la pagina diventa attiva per la prima volta. È utile quando vuoi un messaggio che descriva lo scopo della pagina e deve essere pronunciato 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 maglietta che vuoi ordinare.
  • Percorsi: questo fulfillment viene chiamato quando viene chiamato un percorso di intent o un percorso di condizione con fulfillment. Questo è utile quando vuoi un messaggio che risponda all'utente finale in merito alla corrispondenza dell'intent, alla condizione soddisfatta (che potrebbe essere una condizione di completamento della compilazione del modulo) o alla transizione. Ad esempio:
    • Sì, il tuo piano internazionale include il Giappone. (corrispondenza per intent)
    • Vuoi acquistare 300 magliette? (condizione di confronto soddisfatta)
    • Ok, il tuo appuntamento è per le 07:00 di domani mattina. (completamento della compilazione del modulo)
    • Ok, ora parliamo degli oritteropi. (transizione)
  • Gestori di eventi: questo fulfillment viene chiamato quando viene richiamato un evento. È utile quando vuoi un messaggio che risponda all'evento. Ad esempio:
    • Le azioni che stai pensando di acquistare hanno appena registrato un aumento di valore del 10%. (evento personalizzato)
    • Puoi riformulare? (evento no-match)
  • Prompt iniziali per i moduli: questo fulfillment viene chiamato quando l'agente esegue la compilazione del modulo. Questi messaggi devono porre all'utente finale una domanda specifica. Ogni parametro del modulo ha il proprio fulfillment del prompt iniziale. Ad esempio:
    • Che taglia di camicia vuoi?
    • Di che colore vorresti la maglietta?
  • Gestori di nuovi prompt per i moduli: questo fulfillment viene chiamato quando l'agente sta compilando un modulo e non comprende la selezione dell'utente finale per il parametro corrente. Questo fulfillment è necessario solo se vuoi che il messaggio di nuovo prompt sia diverso dal messaggio del prompt iniziale. Se non esistono gestori di nuovi prompt, l'agente utilizzerà semplicemente il prompt iniziale come messaggio di nuovo prompt. Ad esempio:
    • Non ho capito. Puoi fornire un colore valido per la camicia?

Denominazione

Questa sezione fornisce suggerimenti per la denominazione delle risorse dell'agente.

Denominazione degli intent

Se l'agente ha molti intent, ti consigliamo di utilizzare uno schema di denominazione che ti aiuti a mantenerli organizzati. È prassi comune segmentare i nomi degli intent con la punteggiatura, dove 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 validi, 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 nei gestori dello stato consentono di controllare la conversazione modificando la pagina attiva. Questa sezione fornisce consigli per organizzare le transizioni degli agenti.

Transizioni complementari

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

Ad esempio:

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

Gestione dell'input utente finale

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

Dovresti avere almeno 20 frasi di addestramento per ogni intent. In caso contrario, il modello NLU potrebbe non avere informazioni sufficienti per trovare l'intent appropriato. Questa è una linea guida di base. Idealmente, dovresti definirne di più, soprattutto per gli intent principali di agenti di grandi dimensioni, dove è auspicabile un numero di circa 50.

Tieni presente il bias di intent

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

In alcuni casi, questo è il comportamento desiderato, perché potresti definire alcuni intent che dovrebbero essere abbinati più spesso di altri, in quanto corrispondono a 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 un bias a favore di questi intenti più grandi. In questo caso, riduci il numero di frasi di addestramento per questi intent più grandi in modo che siano dello stesso ordine di grandezza degli altri intent. Ad esempio:

Frasi di addestramento dell'intent A Frasi di addestramento dell'intent B Bias per l'intent B
20 50 No
20 200 Caso limite
20 2000 Sì

Utilizzo delle entità e quantità di frasi di addestramento

Per tutti i tipi di entità utilizzati in un intent:

  • Annota ogni esempio dei tipi di entità.
  • Per ogni tipo di entità, fornisci almeno cinque frasi di addestramento contenenti esempi annotati.
  • Fornisci un numero di frasi di addestramento almeno tre volte superiore a quello dei tipi di entità. Ad esempio, se utilizzi 10 tipi di entità diversi per le annotazioni in un intent, 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. Quando 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à di frasi di addestramento necessarie

Includi varianti di domande, comandi, verbi e sinonimi di nomi comuni per assicurarti che le tue frasi coprano un'ampia gamma di possibili richieste.

È meglio includere alcune frasi più brevi come "paga la mia fattura", nonché frasi e periodi più lunghi come "Ho appena ricevuto un'email che mi informa che devo pagare il saldo dell'estratto conto". Non esiste una proporzione consigliata di frasi brevi e lunghe, ma dovresti basarti sugli input effettivi degli utenti finali inviati al tuo agente in produzione.

Per garantire un buon addestramento dell'agente, è importante definire frasi di addestramento che variano per lunghezza, formulazione e struttura della frase. Non è necessario aggiungere varietà per il gusto di farlo, ma è necessario fornire una varietà sufficiente per consentire al modello NLU di rilevare correttamente l'intent dell'utente finale da un'ampia gamma di input dell'utente finale. Se non hai una varietà sufficiente, c'è il rischio di overfitting. In altre parole, esiste il rischio che il modello sia troppo legato agli esempi specifici che fornisci e non generalizzi sufficientemente ad altri esempi.

Varietà di lettere maiuscole

La sensibilità alle maiuscole/minuscole varia a seconda del 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 l'uso delle maiuscole. In genere, questo vale per le situazioni in cui prevedi che gli utenti finali forniscano input di testo interamente in maiuscolo.

Gli approcci alternativi potrebbero essere:

  • Abbassamento della soglia di classificazione ML
  • Conversione degli input degli utenti finali in minuscolo prima di inviarli a 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 con lettere maiuscole pertinenti per aumentare i tassi di corrispondenza degli intenti.

Varietà di frasi di addestramento non necessaria

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

  • Uso delle 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 degli intenti. Per i dettagli, consulta la sezione sulla varietà di lettere maiuscole.
  • Intercalari: ad esempio, "Ok, ordina un biglietto" e "Ordina un biglietto".
  • Punteggiatura: ad esempio, "puoi aiutarmi?" e "puoi aiutarmi?!"

Coerenza delle annotazioni

La parte della frase di addestramento selezionata per un'annotazione deve includere tutto il testo necessario per trovare una corrispondenza con un'entità, ma non di più. Inoltre, assicurati che parti simili delle frasi di addestramento siano annotate per l'intero intent.

Ad esempio, la tabella seguente mostra i modi corretti e non corretti per annotare 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 Dialogflow CX considerano il significato semantico quando abbinano le 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. Dovresti invece selezionare "7" per l'annotazione e utilizzare l'entità di sistema @sys.number.

Definisci gli 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?", seguito dalla risposta dell'utente finale "Non lo so ancora". Questa risposta non soddisfa il prompt del parametro del modulo, ma se il tuo 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 utilizzato solo se hai esaurito tutte le possibilità, inclusa la creazione di entità personalizzate. Questo tipo di entità è molto ampio e può causare un comportamento indesiderato.

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 non sarà definito.

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

Le annotazioni devono includere una varietà di valori di 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 non buone per un tipo di entità prodotto:

Buono Negativo
Voglio acquistare una camicia Voglio acquistare una camicia
Ordina un nuovo cappello Ordina una nuova maglietta
Aggiungi un orologio al mio carrello Aggiungi una camicia al mio carrello

Le entità personalizzate devono includere una varietà di elementi

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

Evita entità con corrispondenza aggressiva

Non definire entità che corrispondono praticamente a qualsiasi cosa. Ciò peggiora le prestazioni e la qualità del ML. Quasi tutto ciò che è presente in ogni frase di addestramento verrà valutato come una possibile corrispondenza.

Le entità mappa ed elenco devono concentrarsi su valori distinti

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

Se i valori delle entità sono complicati, potrebbe essere perché le frasi di addestramento degli intent sono più adatte alla tua situazione. Ad esempio, considera input utente finale come:

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

Non creare tipi di entità sia per le azioni che per i piani, come i seguenti:

Tipo di entità Actions Tipo di entità Plans
"Come faccio a fare una chiamata internazionale?" "Piano A"
"Utilizzo del roaming dei dati internazionale" "Piano B"

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

Utilizza le entità regexp per acquisire identificatori non di parole

Quando acquisisci l'input utente finale che include identificatori non di parole, devi utilizzare le 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 riduce notevolmente la qualità.

Evita 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, perché il modello NLU non può determinare con sufficiente confidenza quale intent abbinare.

Se due frasi di addestramento rappresentano la stessa intenzione, devono appartenere allo stesso intent. Ad esempio, "modifica la data di scadenza della fattura corrente" e "più tempo per pagare" devono appartenere entrambi allo stesso intent, perché entrambi richiedono una modifica della data di scadenza. Tuttavia, "Posso effettuare una chiamata internazionale con il Piano A?" e "Posso utilizzare il roaming dei dati internazionale con il Piano A?" potrebbero appartenere a intenti diversi, perché l'utente finale vuole una cosa diversa 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.

Utilizza gli eventi di mancata corrispondenza in produzione per migliorare gli intenti

Quando esegui l'agente in produzione, è inevitabile che alcuni input degli utenti finali generino eventi di mancata corrispondenza. Puoi utilizzare queste opportunità per migliorare l'agente in uno dei tre modi seguenti:

  • Aggiungi l'input utente finale come frase di addestramento all'intent desiderato. Tuttavia, questa non è sempre l'opzione migliore. Se lo fai molte volte per l'intent, potrebbe verificarsi un bias dell'intent.
  • Pulisci le frasi di addestramento per l'intent desiderato, in modo che riflettano tutte accuratamente 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 essere abbinati all'input utente finale hanno frasi di addestramento che potrebbero corrispondere all'input utente dell'utente finale, elimina queste frasi di addestramento.

Evita i caratteri speciali

I caratteri speciali nelle frasi di addestramento ({, _, #, [ e così via) vengono ignorati. Un'eccezione è rappresentata dalle emoticon, che funzionano come previsto.

Evita gli intercalari

Gli intercalari sono parole che puoi ignorare senza compromettere la comprensione del testo. Ad esempio:

  • per favore
  • puoi per favore
  • Mmm…
  • che ne dici di

L'utilizzo di intercalari nelle frasi di addestramento non è necessario, ma è innocuo, perché vengono ignorati dal modello NLU. Tuttavia, non devi definire frasi di addestramento che variano solo per gli intercalari.

Non definire mai entità composte da intercalari.

Sperimenta con le impostazioni ML

Le impostazioni ML possono essere utilizzate per regolare il modo in cui viene elaborato l'input utente finale. Nella maggior parte dei casi, le impostazioni predefinite funzionano bene. Tuttavia, potresti voler perfezionare le impostazioni per migliorare le prestazioni dell'agente.

Risposta all'utente finale

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

Dai il benvenuto all'utente finale

Un agente appena creato ha un percorso di intent creato automaticamente per l'intent di benvenuto. Devi modificare questo percorso per includere un messaggio di fulfillment che dia il benvenuto all'utente finale. Questo messaggio deve descrivere l'agente e dare all'utente finale un'idea delle sue capacità.

Conferma le informazioni dell'utente finale

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

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

Dialogo Descrizione
Utente finale: Ho delle domande sul mio conto corrente.
Agente: Ok, cosa vorresti sapere sul tuo conto corrente?
L'input utente finale ha generato una corrispondenza di intent ed è stato seguito un percorso che includeva un messaggio di fulfillment e una transizione a una pagina che gestisce le domande sul conto corrente. 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 tuo appuntamento per il taglio di capelli è fissato per domani alle 19:00. Posso aiutarti in altro modo?
L'utente finale ha fornito il parametro del modulo date, che era l'ultimo parametro del modulo nella pagina attiva. L'agente ha confermato l'ora e la data di un appuntamento per un taglio di capelli.

Guida la conversazione

L'agente deve sempre guidare la conversazione con l'utente finale. Per farlo, basta terminare ogni risposta con una domanda, ad esempio:

  • Posso aiutarti in altro modo?
  • Che cosa vuoi sapere sui beagle?
  • Vuoi annullare o inviare l'ordine?
  • Come posso aiutarti oggi?
  • Viaggi in solitaria o con qualcuno?

Quando definisci queste domande, fai attenzione a non porre più domande come:

  • Sei ancora qui? Per quale servizio stai chiedendo informazioni?
  • Vuoi ancora questo ordine? Vuoi aggiungere qualcosa?

L'utente finale potrebbe rispondere a una sola delle domande e l'agente potrebbe non gestire correttamente la situazione.

Gestione degli errori e degli input imprevisti degli utenti finali

Questa sezione fornisce consigli sulla gestione degli errori e degli input imprevisti degli utenti finali.

Crea gestori di eventi per gli eventi integrati

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

Gestisci gli errori del webhook

Quando il servizio webhook non funziona, è importante che l'agente possa gestire l'errore in modo corretto. A questo scopo, definisci i gestori di eventi per gli eventi integrati specifici del webhook. Ecco un approccio consigliato per la gestione degli errori del webhook:

  • Non fornire una destinazione di transizione dal gestore di stato che attiva la chiamata webhook, altrimenti il gestore di eventi di errore del webhook non verrà richiamato. Imposta invece il target di transizione nella risposta del webhook dal servizio webhook.
  • Scegli una pagina in cui un contatore di errori può essere inizializzato su zero. Questa pagina deve essere attiva prima della pagina che attiva una chiamata webhook. Il fulfillment di ingresso per questa pagina deve inizializzare il contatore degli errori su 0 utilizzando un preset del parametro di fulfillment. Ad esempio:

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

    • Il fulfillment di ingresso deve confermare l'errore per l'utente finale e deve incrementare un parametro di sessione del contatore degli errori utilizzando un preset del parametro di fulfillment. Ad esempio:

      Parametro Valore
      webhook-error-count $sys.func.ADD($session.params.webhook-error-count, 1)
    • Definisci un percorso di condizione con una condizione che il conteggio degli errori sia inferiore al numero massimo consentito. (ad esempio $session.params.webhook-error-count <= 3). Questo percorso deve avere un fulfillment che notifica all'utente finale che l'agente riproverà. Questa route deve avere una destinazione di transizione impostata su PREVIOUS_PAGE o su qualsiasi pagina che possa effettuare un altro tentativo di chiamata al webhook.

    • Definisci un percorso condizionale con una condizione in base alla quale il numero di errori è maggiore del numero massimo consentito (ad esempio, $session.params.webhook-error-count > 3). Questo percorso deve avere un fulfillment che notifica all'utente finale che l'agente non riproverà più. Questo percorso deve avere una destinazione di transizione impostata su una pagina che non attiverà i nuovi tentativi del webhook.

  • Il gestore di eventi del webhook deve avere una destinazione di transizione che rimanda alla pagina di errore del webhook.

Strumenti

Questa sezione fornisce consigli sull'utilizzo degli strumenti per migliorare la progettazione degli agenti.

Utilizza lo strumento di convalida

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

Utilizza la funzionalità degli scenari di test

Devi sempre definire scenari di test per l'agente. Questi scenari di test possono aiutare a prevenire le regressioni mentre l'agente si evolve per gestire più scenari.