Questa guida fornisce best practice generali per la progettazione di tutti i tipi di agenti.
Dovresti anche consultare 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 il tuo agente sarà grande o complesso, inizia creando un dialogo che risponda solo alle richieste di primo livello. Una volta stabilita la struttura di base, itera sui percorsi di conversazione per assicurarti di coprire tutti i possibili percorsi che un utente finale può intraprendere.
Man mano che l'agente si evolve, valuta la possibilità di utilizzare la funzionalità scenari di test per lo sviluppo basato sui test.
Agenti predefiniti
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 ed entità per coprire le query utente più comuni. Aggiungi percorsi e adempimenti 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 devi chiamare direttamente l'API Dialogflow CX, in quanto le integrazioni gestiscono questa operazione per te. Queste integrazioni possono fornire un agente di testo da incorporare nel tuo sito web, connettersi 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 il tuo agente o utilizzare un'interfaccia utente esistente.
Webhook
A meno che il tuo agente non possa essere definito completamente con dati statici, devi utilizzare webhook per connettere il tuo servizio e fornire un agente in grado di gestire scenari dinamici. Ciò vale sia che tu utilizzi le integrazioni sia l'API Dialogflow CX.
Risorse per gli agenti
Le risorse dell'agente 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
Flussi e 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 i gestori di stato, che vengono chiamati quando viene trovata una corrispondenza con un intent, 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 tenere conto dei limiti di"flussi per agente" e "pagine per flusso". Questi limiti contribuiscono a mantenere efficiente l'agente.
Se la progettazione 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 "Ottieni saldo":
- Controllare il saldo del conto corrente
- Visualizzare il saldo del conto risparmi
- Ottenere il saldo del mutuo
- Ottenere il saldo del credito
Se la progettazione dell'agente ha troppe pagine per flusso, combina le pagine correlate e utilizza molte route per pagina.
Se hai ancora difficoltà con i limiti di flusso e di pagine, potrebbe essere perché hai integrato troppa logica di business nell'agente stesso. Valuta la possibilità di spostare questa logica nei webhook.
Di seguito è riportato l'elenco della granularità del controllo delle conversazioni delle risorse agente in ordine di granularità crescente:
- Agenti (un agente gestisce tutte le conversazioni)
- Flussi (un flusso gestisce uno o più argomenti di conversazione correlati)
- Pagine (una pagina gestisce uno o più turni di conversazione correlati)
- Route (una route gestisce un intent utente o un controllo delle condizioni)
Parametri intent e parametri modulo
Il modo principale in cui il sistema riceve dati strutturati dall'utente finale è tramite i parametri. Puoi utilizzare i parametri per intent (parametri intent) o pagine (parametri modulo).
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 informazioni sull'utente finale durante la transizione da una pagina all'altra. Ad esempio, se l'utente finale richiede un prodotto specifico all'inizio della conversazione, devi acquisire il prodotto desiderato durante la transizione alla pagina dell'ordine appropriata. In questo caso, utilizza i parametri intent come parte delle route intent.
Esistono anche situazioni in cui l'utilizzo sia dei parametri intent che dei parametri modulo è l'ideale. Ad esempio, se l'utente finale richiede una maglietta taglia S all'inizio della conversazione, vuoi acquisire il parametro della taglia desiderata (S) durante la transizione alla pagina dell'ordine della maglietta. La pagina dell'ordine della maglietta potrebbe richiedere ulteriori informazioni, come il colore desiderato. La pagina dell'ordine della maglietta deve avere parametri del modulo per taglia e 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 dell'ordine della 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 route.
Se ti capita di utilizzare lo stesso insieme di percorsi su più pagine, utilizza i gruppi di percorsi. In questo modo eviterai duplicazioni inutili nella progettazione dell'agente.
Riutilizzo degli intent
Se ti ritrovi a 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 in una sola pagina. In questo modo eviterai duplicazioni inutili nella progettazione dell'agente.
Ad esempio,
gli intent di conferma sono in genere definiti al meglio come intent riutilizzabili.
Un intent confirmation.yes potrebbe avere frasi di addestramento come:
- sì
- sì
- sì
- OK
- sì
- puoi scommetterci
- assolutamente
- sì per favore
Un intent 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,
dovresti anche prendere in considerazione la creazione di intent di conferma specializzati.
Ad esempio,
quando confermi un ordine,
potresti voler utilizzare un intent order.confirmation.yes specializzato
con frasi di addestramento come:
- l'ordine mi sembra corretto
- Accetto questo ordine
Inoltre, 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, gli intent per tutti e quattro questi intent devono essere inclusi nell'ambito. Ciò garantisce che qualsiasi conferma generica o specifica da parte dell'utente finale verrà gestita in modo appropriato.
Intent negativo predefinito
Devi compilare l'intent negativo predefinito con frasi che i tuoi utenti finali potrebbero dire, ma che non devono corrispondere a nessun intent nel tuo agente.
Fulfillment
Esistono molte opzioni per utilizzare l'evasione per rispondere all'utente finale. Durante un turno di conversazione, l'agente può aggiungere più messaggi alla coda di risposte 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.
- Evasione dell'inserimento della pagina:
questa evasione viene chiamata quando la pagina diventa inizialmente attiva.
È utile quando vuoi un messaggio che descriva lo scopo della pagina
e deve essere detto una sola volta mentre la pagina è attiva.
Ad esempio:
- Cosa vuoi sapere del tuo conto corrente?
- Che tipo di prodotto vorresti acquistare?
- Ho bisogno di raccogliere alcune informazioni sulla maglietta che vuoi ordinare.
- Route:
Questo fulfillment viene chiamato quando viene chiamata una route di intent o una route di condizione
con fulfillment.
Ciò è 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 del riempimento del modulo),
o alla transizione.
Ad esempio:
- Sì, il tuo piano internazionale include il Giappone. (corrispondenza di intent)
- Vuoi acquistare 300 magliette? (condizione di confronto soddisfatta)
- Ok, l'appuntamento è per le 7:00 di domani mattina. (completamento della compilazione automatica)
- Ok, ora parliamo di 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:
- Il valore dell'azione che stai prendendo in considerazione per l'acquisto è appena aumentato del 10%. (evento personalizzato)
- Puoi riformulare la domanda? (evento senza corrispondenza)
- Prompt iniziali per i moduli:
Questo fulfillment 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 completamento del prompt iniziale.
Ad esempio:
- Che taglia di maglietta vuoi?
- Di che colore vorresti la maglietta?
- Gestori di richiesta di riproposta 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 il messaggio di ripristino
sia diverso dal messaggio del prompt iniziale.
Se non esistono gestori di riproposta,
l'agente utilizzerà il prompt iniziale come messaggio di riproposta.
Ad esempio:
- Non capisco. Puoi fornire un colore valido per la maglietta?
Denominazione
Questa sezione fornisce consigli per la denominazione delle risorse dell'agente.
Denominazione degli intent
Se il tuo agente ha molti intent, ti consigliamo di adottare un sistema di denominazione che ti aiuti a tenerli organizzati. È comune segmentare i nomi delle intenzioni 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 buoni schemi di denominazione, 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 di stato consentono di controllare la conversazione modificando la pagina attiva. Questa sezione fornisce consigli per organizzare le transizioni degli agenti.
Transizioni senza costi
Quando definisci un percorso che attiva una transizione, tieni presente che potrebbe esistere un percorso complementare o inverso.
Ad esempio:
- Se hai una route di intent per confirmation.yes, valuta la possibilità di definire un'altra route 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 gli intent e le frasi di addestramento, in modo che l'agente possa gestire ed elaborare in modo ottimale l'input utentee finale.
Definisci almeno 20 frasi di addestramento
Devi avere almeno 20 frasi di addestramento per ogni intento. In caso contrario, il modello NLU potrebbe non disporre di informazioni sufficienti per corrispondere in modo appropriato all'intent. Queste sono linee guida minime. Idealmente, dovresti definirne di più, soprattutto per gli intent head di agenti di grandi dimensioni, dove è auspicabile un numero pari a circa 50.
Tieni presente il bias di intenzione
Quando una o più intent hanno molte più frasi di addestramento rispetto ad altri intent, il modello NLU tende a favorire gli intent più grandi a causa di dati sbilanciati. Questo bias di 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 devono essere abbinati più spesso di altri, perché corrispondono a input dell'utente finale osservati più frequentemente nel traffico live.
In altri casi, questo comportamento potrebbe essere indesiderabile, perché non vuoi un bias a favore di questi intent più ampi. 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 ciascuno dei tipi di entità, fornisci almeno cinque frasi di addestramento contenenti esempi annotati.
- Fornisci almeno tre volte più frasi di addestramento rispetto ai 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 conversazionali e naturali; devono corrispondere a ciò che le persone dicono realmente. 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 di 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 alcune frasi più brevi come "paga la mia bolletta", nonché frasi e periodi più lunghi come "Ho appena ricevuto una comunicazione via posta che mi dice che devo pagare il saldo del mio estratto conto". Non esiste una proporzione consigliata di frasi brevi e lunghe, ma dovresti basarla sugli input effettivi degli utenti finali inviati al tuo agente in produzione.
Definire frasi di addestramento che variano per lunghezza, formulazione e struttura della frase è importante per garantire un buon addestramento dell'agente. Non è necessario aggiungere varietà per il gusto di farlo, ma è necessario fornire una varietà sufficiente affinché il modello NLU possa rilevare correttamente l'intento dell'utente finale da un'ampia gamma di input dell'utente finale. Se non hai una varietà sufficiente, esiste il rischio di overfitting. In altre parole, esiste il pericolo che il modello sia troppo legato agli esempi particolari che fornisci e non generalizzi a sufficienza ad altri esempi.
Varietà di capitalizzazione
La sensibilità alle maiuscole 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 le maiuscole. Ciò si verifica in genere quando prevedi che gli utenti finali forniscano input di testo in maiuscolo.
Approcci alternativi potrebbero essere:
- Abbassamento della soglia di classificazione ML
- Conversione in minuscolo degli input dell'utente finale prima di inviarli a Dialogflow CX.
NLU avanzata
A differenza del modello NLU standard, il modello NLU avanzato distingue tra maiuscole e minuscole. Ti consigliamo di testare e aggiungere i dati di addestramento pertinenti in maiuscolo per aumentare i tassi di corrispondenza dell'intent.
Varietà non necessaria di frasi di addestramento
Evita variazioni banali nelle frasi di addestramento, in quanto 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 di intent. Per i dettagli, consulta la sezione Varietà di capitalizzazione.
- Parole di riempimento: 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à e non deve includere altro testo. Inoltre, assicurati che le parti simili delle frasi di addestramento siano annotate per l'intero intent.
Ad esempio,
la tabella seguente mostra i modi corretti e errati
per annotare con l'entità di sistema @sys.date:
| Buono | Negativo |
|---|---|
| Partenza 7 settembre | Settembre partenza del 7 |
| Uscita il giorno 4 luglio | Uscita da il 4 luglio |
Utilizza annotazioni semanticamente significative per le entità di sistema
Il significato semantico di una parte di 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 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 di tempo.
Devi 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, il tuo agente potrebbe chiederti "Quali sono le date del tuo viaggio?", seguito dalla risposta dell'utente finale "Non lo so ancora". Questa risposta non soddisfa la richiesta del parametro del modulo, ma se il tuo agente ha una route 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.
Deve essere utilizzato solo se hai esaurito completamente tutte le possibilità,
inclusa la creazione di entità personalizzate.
Questo tipo di entità è molto generico 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 serie di valori di entità
Quando definisci frasi di addestramento annotate, devi utilizzare una serie di esempi di valori di 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 comprare una maglietta | Voglio comprare una maglietta |
| Ordina un nuovo cappello | Ordina una nuova maglietta |
| Aggiungi un orologio al mio carrello | Aggiungi una maglietta al mio carrello |
Le entità personalizzate devono includere una varietà di esempi
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.
Evitare entità che corrispondono in modo aggressivo
Non definire entità che corrispondono praticamente a qualsiasi cosa. Ciò peggiora le prestazioni e la qualità dell'ML. Quasi tutto in ogni frase di addestramento verrà valutato come possibile corrispondenza.
Le entità di mappe ed elenchi devono concentrarsi su valori distinti
I tipi di entità mappa ed elenco devono avere un ambito limitato che acquisisca valori distinti di un tipo di informazione. Mantieni le entità mirate, brevi e semplici.
Se i valori delle entità sono complessi, potrebbe essere perché le frasi di addestramento dell'intent sono più adatte alla tua situazione. Ad esempio, considera l'input utente finale:
- "Come faccio a effettuare una chiamata internazionale con il Piano A?"
- "Utilizzo del roaming dati internazionale con il piano B".
Non creare tipi di entità sia per le azioni sia per i piani, come segue:
| Tipo di entità Azioni | Tipo di entità Piani |
|---|---|
| "Come faccio a effettuare una chiamata internazionale?" | "Piano A" |
| "Utilizzo del roaming dati internazionale" | "Piano B" |
Devi 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 coinvolge 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 le entità composite
Non utilizzare più di un livello di nidificazione nelle entità composite. Ogni livello di nidificazione peggiora 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, perché il modello NLU non può determinare con sufficiente sicurezza a quale intent corrispondere.
Se due frasi di addestramento rappresentano la stessa intenzione, devono appartenere alla stessa intent. Ad esempio, "change current bill due date" (modifica la data di scadenza della fattura corrente) e "more time to pay" (più tempo per pagare) devono appartenere alla stessa intent, perché entrambe richiedono una modifica della data di scadenza. Tuttavia, "Posso effettuare una chiamata internazionale con il piano A?" e "Posso utilizzare il roaming dati internazionale con il piano A?" potrebbero appartenere a intent diversi, perché l'utente finale vuole una cosa diversa in ogni caso.
Evitare tipi di entità simili
Evita di definire più tipi di entità con voci di entità simili, perché ciò può causare ambiguità per il modello NLU.
Utilizza gli eventi di mancata corrispondenza in produzione per migliorare gli intent
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, questa non è sempre l'opzione migliore. Se lo fai molte volte per l'intent, potresti creare un bias dell'intent.
- Pulisci le frasi di addestramento per l'intent desiderato, in modo che riflettano tutte 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 utentee 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.
Evitare gli intercalari
Gli intercalari sono parole che puoi ignorare e continuare a comprendere il testo. Ad esempio:
- per favore
- puoi per favore
- hmmm
- che ne dici
È inutile, ma innocuo, utilizzare parole di riempimento nelle frasi di addestramento, perché vengono ignorate dal modello NLU. Tuttavia, non devi definire frasi di addestramento che variano solo in base alle 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 vengono elaboratinput utenteti finali. Nella maggior parte dei casi, le impostazioni predefinite funzionano bene. Tuttavia, potresti voler perfezionare le impostazioni per migliorare il rendimento dell'agente.
Rispondere all'utente finale
Questa sezione fornisce linee guida per l'utilizzo del fulfillment per rispondere all'utente finale.
Dai il benvenuto all'utente finale
Un agente appena creato ha una route dell'intent creata automaticamente per l'intent di benvenuto. Devi modificare questo percorso per includere un messaggio di evasione che dia il benvenuto all'utente finale. Questo messaggio deve descrivere l'agente e dare all'utente finale un'idea delle sue capacità.
Conferma delle 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 trovata una corrispondenza per un intent 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 domande sul mio conto corrente. Agente: Ok, cosa vorresti sapere del tuo conto corrente? |
L'input utente finale ha generato una corrispondenza di intent ed è stato seguito un percorso che includeva un messaggio di evasione e una transizione a una pagina che gestisce le domande relative al conto corrente. Tieni presente che l'operatore 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 taglio di capelli è programmato per domani alle 19:00. Posso aiutarti in altro modo? |
L'utente finale ha fornito il parametro del modulo della 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. Per farlo, è sufficiente terminare ogni risposta con una domanda come:
- Posso aiutarti in altro modo?
- 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 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 il tuo agente potrebbe non gestire correttamente la situazione.
Gestione degli errori e dell'input imprevisto dell'utente finale
Questa sezione fornisce consigli sulla gestione degli errori e dell'input imprevisto dell'utente finale.
Crea gestori di eventi per gli eventi integrati
Devi creare gestori di eventi per gli eventi integrati a seconda dei casi. La gestione di questi eventi è simile all'intercettazione delle eccezioni nella programmazione software. A seconda della situazione, potresti voler gestire gli eventi con gestori di eventi specifici per i parametri, gestori di eventi specifici per le pagine 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 l'errore in modo controllato. A questo scopo, definisci i gestori di eventi per gli eventi integrati specifici del webhook. Ecco un approccio consigliato per la gestione degli errori 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 la destinazione della transizione nella risposta del webhook dal 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 della voce per questa pagina deve inizializzare il contatore degli errori su
0utilizzando un parametro di completamento preimpostato. Ad esempio:Parametro Valore webhook-error-count0Crea una pagina di errore del webhook che gestisca gli eventi di errore del webhook:
L'evasione della voce deve riconoscere l'errore per l'utente finale e deve incrementare un parametro di sessione del contatore degli errori utilizzando un preset del parametro di evasione. 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 prevede che il conteggio degli errori sia inferiore al massimo consentito. ad esempio
$session.params.webhook-error-count <= 3. Questa route deve avere un fulfillment che avvisi l'utente finale che l'agente riproverà. Questa route deve avere una destinazione di transizione impostata su PREVIOUS_PAGE, o su qualsiasi pagina che possa fare un altro tentativo di chiamare il webhook.Definisci un percorso di condizione che abbia una condizione in cui il conteggio degli errori è maggiore del massimo consentito (ad esempio,
$session.params.webhook-error-count > 3). Questo percorso deve avere un fulfillment che notifichi 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 di webhook.
Il gestore eventi webhook deve avere una destinazione di transizione che esegue la transizione alla pagina di errore del webhook.
Strumenti
Questa sezione fornisce consigli sull'utilizzo degli strumenti per migliorare la progettazione 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 scenari di test per il tuo agente. Questi scenari di test possono contribuire a prevenire le regressioni man mano che l'agente si evolve per gestire più scenari.