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 Agenti conversazionali (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.
Mentre l'agente si evolve, Valuta la possibilità di utilizzare la funzionalità per i casi di test. per uno sviluppo basato su test.
Agenti predefiniti
Gli agenti conversazionali (Dialogflow CX) offrono modelli di agenti per aiutarti a iniziare. Agenti predefiniti 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 conversazionali (Dialogflow CX). Questa sezione fornisce le best practice per scegliere la modalità di integrazione.
Integrazioni
Le integrazioni degli agenti conversazionali (Dialogflow CX) forniscono un'interfaccia utente pronta all'uso per l'agente. Se utilizzi un'integrazione, non è necessario chiamare direttamente l'API Conversational Agents (Dialogflow CX), poiché le integrazioni gestiscono questo aspetto 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 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 webhook per collegare il servizio e fornire un agente in grado di gestire scenari dinamici. Questo si applica indipendentemente dal fatto che tu stia utilizzando integrazioni o l'API Conversational Agents (Dialogflow CX).
Risorse agente
Le risorse degli agenti conversazionali (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 per dare una struttura all'agente. Puoi considerare le pagine come nodi in una macchina a stati e i flussi come gruppi di pagine correlate. Puoi controllare le transizioni tra nodi gestori di stato, che vengono chiamati quando viene trovata una corrispondenza di un intent, se viene soddisfatta una condizione o viene richiamato 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 generale per l'agente in cui 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 consentono di mantenere le prestazioni 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":
- Visualizza il saldo corrente
- Ottieni un saldo di risparmio
- Ottieni il saldo del mutuo
- Ricevi il saldo del credito
Se la progettazione dell'agente ha troppe pagine per flusso, combinare pagine correlate e sfruttare molti percorsi per pagina.
Se continui ad avere problemi con i limiti di flusso e pagine, potrebbe essere dovuto all'eccessiva logica di business integrata nell'agente stesso. Valuta la possibilità di spostare questa logica nei webhook.
Di seguito è elencata la granularità del controllo della conversazione delle risorse dell'agente in ordine crescente di granularità:
- 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 il controllo di un intent o di una condizione dell'utente)
Parametri di intent e parametri del modulo
Il modo principale con cui il sistema riceve i dati strutturati dall'utente finale è 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 usare i parametri del modulo per raccogliere queste informazioni.
In alcuni casi, potresti voler acquisire informazioni per l'utente finale durante la transizione da una pagina all'altra. Ad esempio: se l'utente finale richiede un determinato prodotto all'inizio della conversazione, vuoi acquisire il prodotto desiderato durante la transizione alla pagina dell'ordine appropriata. In questo caso, usano i parametri di intent come parte route relative all'intent.
Ci sono anche situazioni in cui utilizzare sia i parametri di intent che i parametri di 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 ordinazione 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, dove l'utente finale non ha fornito la dimensione desiderata quando diventa attiva la pagina dell'ordine della camicia. Se definisci 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 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 inutili duplicati nella progettazione dell'agente.
Riutilizzo dell'intento
Se ti trovi a definire più intent con frasi di addestramento simili, prendi in considerazione la possibilità di riutilizzare gli intent in più pagine. L'ideale è devi definire alcuni intent generici che vengono usati in molte pagine, e alcuni intent specifici usati solo in una singola pagina. In questo modo eviterai inutili duplicati nella progettazione dell'agente.
Ad esempio:
gli intent di conferma sono in genere meglio definiti come intent riutilizzabili.
Un intento confirmation.yes
potrebbe avere frasi di addestramento come:
- sì
- sì
- sì
- OK
- sì
- 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 può essere utilizzato per l'agente in molti scenari.
In alcuni casi,
dovresti anche prendere in considerazione
la creazione di intent di conferma specializzati.
Ad esempio:
quando confermi un ordine,
ti consigliamo di avere un intent order.confirmation.yes
specializzato
con frasi di addestramento come:
- mi sembra che l'ordine vada bene
- 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, le route di intent per tutti e quattro questi intent devono rientrare 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 l'utilizzo 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 alla fine del turno di conversazione. In questa sezione vengono descritte le opzioni per la creazione dei singoli messaggi.
- Completamento dell'inserimento di pagina:
Questo fulfillment viene chiamato quando la pagina diventa inizialmente attiva.
È utile quando vuoi un messaggio che descriva lo scopo della pagina,
e deve essere pronunciato una sola volta mentre la pagina è attiva.
Ad esempio:
- Che 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 una route per intent o una route 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 riempimento del modulo) o alla transizione.
Ad esempio:
- Sì, il tuo piano internazionale include il Giappone. (intent con corrispondenza)
- Confermi di voler acquistare 300 camicie? (condizione di confronto soddisfatti)
- 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:
- Le azioni che stai valutando di acquistare hanno appena aumentato il loro valore del 10%. (evento personalizzato)
- Puoi riformularla? (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?
- Gestori di prompt di ripetizione per i moduli:
Il completamento viene chiamato quando l'agente compila il modulo,
e non comprende la selezione dell'utente finale per il parametro corrente.
Questo completamento è necessario solo se vuoi un messaggio di richiesta di nuovo
in modo che sia diverso dal messaggio 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, dovresti prendere in considerazione uno schema di denominazione che ti aiuti a mantenerli organizzati. È comune segmentare i nomi degli intent con la punteggiatura, dove la specificità aumenta da sinistra a destra. Inoltre, il nome di un intent dovrebbe rispecchiare l'intenzione dell'utente finale per un tono colloquiale.
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
Transizioni definite nei gestori 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, considera che potrebbe esserci una rotta complementare o inversa.
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 degli utenti 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 dell'utente 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 in modo che rispecchino in modo appropriato le tue intenzioni. 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.
Presta attenzione alla bias di intenzione
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 dello stesso ordine di grandezza degli altri intent. Ad esempio:
Frasi di addestramento per l'intento A | Frasi di addestramento per l'intent B | Bias per l'intenzione B |
---|---|---|
20 | 50 | No |
20 | 200 | Limite |
20 | 2000 | Sì |
Utilizzo delle entità e quantità delle frasi di addestramento
Per tutti i tipi di entità utilizzati in un'intenzione:
- Annota ogni esempio dei tipi di entità.
- Per ogni tipo di entità, fornire 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, utilizzare come dati di addestramento gli input dell'utente finale prestando particolare attenzione a quelle più comuni.
Varietà necessaria delle frasi di addestramento
Includi varianti di domande, comandi, verbi e sinonimi di nomi comuni per assicurarti che le frasi coprano un ampio spettro di richieste possibili.
È meglio includere alcune frasi brevi come "pagare la bolletta", nonché frasi e frasi più lunghe 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 non hai una varietà sufficiente, esiste il rischio di overfitting. In altre parole, c'è il rischio che il modello sia troppo stretto agli esempi specifici che fornisci e non generalizza a sufficienza rispetto ad altri esempi.
Varietà di lettere maiuscole
La sensibilità alle 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 agli agenti conversazionali (Dialogflow CX).
NLU avanzata
A differenza del modello NLU standard, il modello NLU avanzato è sensibile alle maiuscole. Me consigliamo di testare e aggiungere i dati di addestramento con lettere maiuscole pertinenti per aumentare tassi di corrispondenza per 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. Consulta le sezione Varietà con lettere maiuscole per maggiori dettagli.
- Riempimento: Ad esempio, "ok, ordina un biglietto" e "ordinare 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 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 del 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 degli agenti conversazionali (Dialogflow CX) considerano il significato semantico quando si associano 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 dei primi "7 anni" dell'esempio precedente.
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
.
Definisci gli intent per gestire le risposte di compilazione dei moduli non conformi
Valuta la possibilità di definire gli intenti per gestire le risposte della compilazione di moduli non conformi. Ad esempio: l'agente potrebbe chiederti "Quali sono le date del viaggio?", seguita dalla risposta dell'utente finale "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 usato 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à, evitare di annotare più parti di una singola frase di addestramento con questo tipo di entità, 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 chiede i parametri del modulo.
Le annotazioni devono includere una serie di valori di entità
Quando definisci frasi di addestramento annotate, dovresti usare nelle frasi vari esempi di valori delle entità. Non devi utilizzare sempre lo stesso esempio di entità per le annotazioni. L'esempio seguente mostra le annotazioni corrette e non valide per un tipo di entità prodotto:
Buono | Negativo |
---|---|
Voglio acquistare una camicia | Voglio acquistare una camicia |
Ordina un nuovo cappello | Ordinare una nuova camicia |
Aggiungere uno smartwatch al carrello | Aggiungi una camicia al mio carrello |
Le entità personalizzate devono includere una certa varietà
Le entità personalizzate devono coprire un'ampia 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 praticamente a qualsiasi cosa. Questo peggiora le prestazioni e la qualità del ML. Quasi tutto in ogni frase di addestramento viene valutato come una possibile corrispondenza.
Le entità mappa e elenco 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 degli utenti 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à dei piani |
---|---|
"Come faccio a effettuare una chiamata internazionale?" | "Piano A" |
"Utilizzo del roaming internazionale dei dati" | "Piano B" |
Dovresti invece usare le frasi di addestramento e la corrispondenza degli intent per acquisire le azioni e le entità al fine di delineare i piani.
Utilizza le entità regexp per acquisire identificatori non basati su parole
Quando acquisisci l'input dell'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}".
Evitare di nidificare entità composte
Non utilizzare più di un livello di nidificazione in entità composte. Ogni livello di nidificazione ne peggiora notevolmente la qualità.
Evitare intent simili
Ogni intent dovrebbe catturare l'intenzione dell'utente finale. Se definisci intent diversi con frasi di addestramento simili, la corrispondenza potrebbe essere inaffidabile, perché il modello NLU non è in grado di determinare con una confidenza sufficiente, a quale intent trovare una corrispondenza.
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" devono appartenere allo stesso intento, perché entrambi richiedono una modifica della data di scadenza. Tuttavia, "Posso effettuare chiamate internazionali 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 desidera una cosa diversa in ciascun caso.
Evita tipi di entità simili
Devi evitare di definire più tipi di entità che hanno voci di entità simili, poiché 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'intento desiderato. Tuttavia, non è sempre l'opzione migliore. Se lo fai molte volte per l'intento, potresti indurre pregiudizi di intent.
- Esegui la pulizia delle frasi di addestramento per l'intento desiderato in modo che tutti riflettano accuratamente l'intenzione. In alcuni casi, intent con frasi di addestramento divergenti possono impedire la corrispondenza per l'intento.
- Se gli intent che non devono corrispondere all'input dell'utente finale hanno frasi di addestramento che potrebbero corrispondere all'input dell'utente finale, elimina queste frasi di addestramento.
Evita caratteri speciali
Caratteri speciali nelle frasi di addestramento
({
, _
, #
, [
e così via) vengono ignorate.
Fanno eccezione le emoticon, che funzionano come previsto.
Evita intercalari
Le parole riempitive sono parole che puoi ignorare e comunque riuscire a comprendere il testo. Ad esempio:
- per favore
- puoi
- mmm
- 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
La Impostazioni ML può essere utilizzato per regolare il modo in cui l'input utente finale viene elaborato. 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 le linee guida per l'utilizzo del fulfillment per rispondere all'utente finale.
Ti diamo 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 in modo da includere un messaggio di evasione degli ordini per l'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 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 di intent ed è stato seguito un percorso che includeva un messaggio di evasione degli ordini e una transizione a una pagina che gestisce le domande sull'account corrente. Tieni presente che l'agente conferma che l'utente finale vuole avere informazioni sul proprio account 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 esserti d\'aiuto in altro modo? |
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. |
Guida la conversazione
L'agente deve sempre guidare la conversazione con l'utente finale. A questo scopo, termina facilmente ogni risposta con una domanda come:
- Posso esserti d\'aiuto in altro modo?
- Cosa vuoi sapere sui beagle?
- Vuoi annullare o inviare l'ordine?
- Come posso aiutarti oggi?
- Viaggia da solo o con qualcuno?
Quando definisci queste domande, fai attenzione a non porne più di una, ad esempio:
- Sei ancora qui? Per quale servizio stai chiedendo informazioni?
- Vuoi ancora questo ordine? Vuoi aggiungere qualcosa?
L'utente finale può 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 sulla gestione degli errori e dell'input imprevisto dell'utente finale.
Creare 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 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 relativi ai webhook
In caso di errore del servizio webhook, è importante che l'agente possa gestire agevolmente l'errore. A questo scopo devi definire i gestori di eventi per le richieste eventi integrati. Ecco un approccio consigliato per la gestione degli errori relativi ai webhook:
- Non fornire una destinazione di transizione gestore dello stato che attiva chiamata webhook, altrimenti il gestore di eventi di errore webhook non verrà richiamato. 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:
Il completamento della voce deve confermare l'errore per l'utente finale, e dovrebbe aumentare un parametro di sessione del contatore di errori utilizzando un preimpostazione dei parametri di completamento. 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 completamento che avvisa l'utente finale che l'agente esegua un nuovo tentativo. 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 una route della condizione con una condizione che viene conteggiata dall'errore è maggiore del limite massimo consentito (ad es.
$session.params.webhook-error-count > 3
). Questo percorso deve avere un completamento che avvisa l'utente finale che l'agente non riproverà più. Questa route deve avere un target di transizione impostato su una pagina che non attiverà nuovi tentativi webhook.
Il gestore di 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 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 l'agente. Questi casi di test possono contribuire a evitare le regressioni mentre l'agente si evolve per gestire più scenari.