Best practice generali di progettazione degli agenti

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

Dovresti vedere anche progettazione agente vocale specifica per la progettazione di agenti vocali, e ai best practice guida all'utilizzo del servizio Dialogflow.

Consigli generali

Crea agenti in modo iterativo

Se il tuo agente è di grandi dimensioni o complesso, costruendo una finestra di dialogo che risponda solo alle richieste di primo livello. Una volta stabilita la struttura di base, eseguire l'iterazione dei percorsi di conversazione per assicurarti di coprire tutti i possibili percorsi che un utente finale può seguire.

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

Dialogflow offre 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 ed spedizioni specifici per la tua attività e creerai rapidamente un agente funzionante.

Integrazioni e connessione dei servizi

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

Integrazioni

Dialogflow integrazioni fornisce un'interfaccia utente pronta all'uso per l'agente. Se utilizzi un'integrazione, non devi chiamare direttamente l'API Dialogflow. poiché le integrazioni gestiscono questo aspetto per te. Queste integrazioni possono fornire un agente di testo che puoi incorporare nel tuo sito web, connettersi ad altre piattaforme di messaggistica, o fornire un'interfaccia di telefonia.

API Dialogflow

Se nessuna delle integrazioni pronte all'uso è adatta, o personalizzare l'interfaccia per il tuo sistema, puoi utilizzare direttamente l'API Dialogflow. 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 connettere il tuo servizio e fornire un agente in grado di gestire scenari dinamici. Questo si applica se utilizzi integrazioni o l'API Dialogflow.

Risorse agente

Le risorse dell'agente Dialogflow 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 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 le proprie impostazioni, e può essere di proprietà da parte di un sottoinsieme di membri del team, il che aiuta a suddividere il lavoro nella progettazione di agenti di grandi dimensioni.

Quando si progetta un agente complesso e di grandi dimensioni, è necessario considerare le "flussi per agente" e "Pagine per flusso" limiti. 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'unica domanda "Equilibrio" dell'output:

  • 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 degli agenti. in ordine crescente di granularità:

  1. Agenti (un agente gestisce tutte le conversazioni)
  2. Flussi (un flusso gestisce uno o più argomenti di conversazione correlati)
  3. Pagine (una pagina gestisce uno o più turni di conversazione correlati)
  4. Route (una route gestisce un controllo di intent o condizione dell'utente)

Parametri di intent e parametri del modulo

Il modo principale con cui il sistema riceve dati strutturati dall'utente finale è parametri. Puoi utilizzare i parametri per intent (parametri di intent) o pagine (parametri del modulo).

Lo scopo principale di alcune pagine è raccogliere informazioni specifiche dall'utente finale. Ad esempio: una pagina potrebbe essere strutturata per raccogliere 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 con intent.

Esistono anche situazioni in cui è ideale utilizzare sia i parametri intent che i parametri del modulo. Ad esempio, se all'inizio della conversazione l'utente finale richiede una camicia di taglia piccola, devi acquisire il parametro della taglia desiderata (small) durante la transizione alla pagina di ordine della camicia. La pagina di ordine 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, ad esempio quando l'utente finale non ha fornito la taglia desiderata quando la pagina di ordine della camicia diventa attiva. Se definisci questo parametro in entrambi i modi, 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 chiama un webhook quando intent corrisponde a un modello o condizione viene rispettato. utilizzare percorsi.

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

Riutilizzo di intent

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 intent confirmation.yes potrebbe avere frasi di addestramento come:

  • esatto
  • OK
  • scommettiamo che
  • assolutamente
  • sì per favore

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

  • no
  • nah
  • no
  • assolutamente
  • non 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 l'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, le route di intent per tutti e quattro questi intent devono rientrare nell'ambito. Ciò garantisce che qualsiasi conferma generica o specifica da parte dell'utente finale verranno gestite 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. Questa sezione descrive ogni opzione 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:
    • Cosa vuoi sapere sul tuo conto corrente?
    • Che tipo di prodotto vuoi acquistare?
    • Devo raccogliere alcune informazioni sulla camicia che vuoi ordinare.
  • Percorsi: Questo fulfillment viene chiamato quando una route per intent o una route della condizione con completamento. Ciò è utile quando si desidera un messaggio che risponda all'utente finale la corrispondenza dell'intenzione, la condizione soddisfatta (che potrebbe essere una condizione di completamento della compilazione del modulo), o la transizione. Ad esempio:
    • Sì, il tuo piano internazionale include il Giappone. (corrispondenza di intent)
    • Confermi di voler acquistare 300 camicie? (condizione di confronto soddisfatti)
    • Ok, il tuo appuntamento è per le 07:00 di domani mattina. (completamento della compilazione del modulo)
    • Ok, parliamo ora di aardvark. (transizione)
  • Gestori di eventi: questo completamento viene chiamato quando viene invocato un evento. È utile quando vuoi un messaggio che risponda all'evento. Ad esempio:
    • L'azione che stai considerando per l'acquisto è appena aumentato del 10%. (evento personalizzato)
    • Puoi riformulare la richiesta? (evento senza corrispondenza)
  • Richieste iniziali per i moduli: Questo completamento viene chiamato quando l'agente esegue la compilazione del modulo. Questi messaggi devono porre una domanda specifica all'utente finale. Ogni parametro del modulo ha il proprio adempimento della richiesta iniziale. Ad esempio:
    • Che taglia di camicia vorresti?
    • Di che colore vuoi la camicia?
  • Gestione degli addetti alla richiesta di un'altra conferma per i moduli: questo completamento viene chiamato quando l'agente sta compilando il modulo e non comprende la selezione dell'utente finale per il parametro corrente. Questo completamento è necessario solo se vuoi un messaggio di richiesta di nuovo in modo che sia diverso dal messaggio iniziale. Se non esistono gestori delle richieste, l'agente utilizzerà solo il prompt iniziale come messaggio di richiesta. Ad esempio:
    • Non ho capito. Puoi darmi un colore valido per la camicia?

Denominazione

Questa sezione fornisce consigli per la denominazione delle risorse degli agenti.

Denominazione degli intent

Se il tuo agente ha molti intent, ti consigliamo di adottare uno schema di denominazione che ti aiuti a organizzarli. È comune segmentare i nomi 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, tieni presente che potrebbe esserci un percorso complementare o inverso.

Ad esempio:

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

Gestione dell'input utente finale

Questa sezione fornisce linee guida per intent e frasi di addestramento, in modo che l'agente possa gestire ed elaborare in modo ottimale input 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. Questa è una linea guida minima. Idealmente, dovresti definire ulteriori dettagli, in particolare per intent head di agenti di grandi dimensioni, dove circa 50 sono auspicabili.

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. La parzialità di intent può verificarsi quando la quantità di frasi di addestramento è diversa di un ordine di grandezza o più.

In alcuni casi, il comportamento desiderato perché potresti definire alcuni intenti che dovrebbero essere abbinate più spesso di altre, perché corrispondono agli input dell'utente finale osservate più spesso nel traffico in tempo reale.

In altri casi, questo comportamento può essere indesiderato perché non vuoi che il tuo sito preveda pregiudizi a favore di queste intenzioni più importanti. 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 Pregiudizi per l'intent B
20 50 No
20 200 Borderline
20 2000

Utilizzo delle entità e quantità delle 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à, fornire almeno cinque frasi di addestramento contenenti esempi annotati.
  • Fornisci un numero di frasi di addestramento pari ad almeno il triplo rispetto ai tipi di entità. Ad esempio: se utilizzi 10 diversi tipi di entità per le annotazioni in un intent, dovresti avere almeno 30 frasi di addestramento.

Le frasi di addestramento devono essere naturali

Le frasi per l'addestramento devono essere conversazionali e naturali; dovrebbero corrispondere a ciò che dicono effettivamente le persone. 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 frasi più brevi, come "paga la mia bolletta", così come frasi e frasi più lunghe come "Ho appena ricevuto per posta una nota che dice che devo pagare il saldo dell'estratto conto". Non esiste una proporzione consigliata di frasi brevi e lunghe. ma dovresti basarti sugli input effettivi dell'utente finale inviati all'agente in fase di produzione.

Definizione di frasi di addestramento che variano per lunghezza, formulazione e struttura delle frasi è importante garantire una buona formazione all'agente. Non è necessario aggiungere varietà per amore della varietà, ma è necessario offrire una varietà sufficiente che il modello NLU sia in grado di rilevare per intenzione da un'ampia gamma di input dell'utente finale. Se la varietà non è 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à all'uso delle maiuscole varia a seconda del Modello NLU utilizzato dall'agente.

NLU standard

Il modello NLU standard non è sensibile alle maiuscole. In rari casi, potresti dover aggiungere di addestramento che variano solo in lettere maiuscole. Generalmente questo si applica in cui ci si aspetta che gli utenti finali forniscano input di testo in maiuscolo.

Alcuni approcci alternativi potrebbero essere:

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:

  • Lettere maiuscole: se utilizzi il modello NLU standard, evita di usare duplicati frasi come "Ordina un biglietto" e "ordinare un biglietto" tranne nei rari casi d'uso diversi. Tuttavia, il modello NLU avanzato è sensibile alle maiuscole e richiede più frasi di addestramento per aumentare le corrispondenze dell'intenzione. Consulta le sezione Varietà con lettere maiuscole per maggiori dettagli.
  • Riempimento: Ad esempio, "ok, ordina un biglietto" e "ordinare 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, 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 i modi positivi e negativi 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

Utilizzare 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 Durata

I modelli di machine learning di Dialogflow prendono in considerazione 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. Significato semantico di "7 anni" non corrisponde a una durata di tempo semplice. Devi selezionare invece "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 una route per intent che può corrispondere a questa risposta, l'agente possa gestire bene la situazione.

Evita @sys.any

Evita di utilizzare il tipo di entità di sistema @sys.any. Deve essere utilizzata solo se hai esaurito completamente tutte le opzioni, incluso l'uso di entità personalizzate. Questo tipo di entità è molto generico 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, poiché 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, devi utilizzare una serie di esempi di valori delle entità nelle frasi. Non devi utilizzare in modo coerente 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 comprare una camicia voglio comprare una camicia
Ordinare un nuovo cappello Ordinare una nuova camicia
Aggiungere uno smartwatch al mio 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. In ogni frase di addestramento è presente quasi tutto verrà valutata come una possibile corrispondenza.

Le entità di mappatura ed elenco devono concentrarsi su valori distinti

Mappa ed elenca i tipi di entità devono avere un ambito limitato che acquisiscono valori distinti di un tipo di informazioni. Mantieni le entità focalizzate, brevi e semplici.

Se i valori delle entità sono complicati, il motivo potrebbe essere che le frasi di addestramento per intenzione 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 internazionale dei dati con il Piano B."

Non creare tipi di entità sia per le azioni che per i piani. 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 input utente finale che coinvolgono identificatori diversi da parole, dovresti usare 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 nelle entità composite. Ogni livello di nidificazione riduce 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, con quale intent trovare una corrispondenza.

Se due frasi di addestramento rappresentano la stessa intenzione, devono appartenere alla stessa intenzione. Ad esempio: "modifica data di scadenza della fattura corrente" e "più tempo per pagare" devono appartenere allo stesso intento, perché entrambi chiedono di modificare la 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.

Usa gli eventi senza corrispondenza in produzione per migliorare i tuoi intenti

Quando esegui l'agente in produzione, è inevitabile che alcuni input dell'utente finale comportino eventi senza corrispondenze. Puoi utilizzare queste opportunità per migliorare l'agente in uno dei tre modi seguenti:

  • Aggiungi l'input utente finale come frase di addestramento all'intento desiderato. Tuttavia, non è sempre l'opzione migliore. Se esegui questa operazione più volte per l'intenzione, potresti ottenere un bias di intenzione.
  • 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, in cui funzionano come previsto.

Evita intercalari

Gli intercalari sono parole che puoi ignorare e riuscire a comprenderlo comunque. Ad esempio:

  • per favore
  • puoi per favore
  • 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 da intercalari.

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, potresti voler perfezionare le impostazioni per migliorare le prestazioni dell'agente.

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 dispone di una route per intent creata automaticamente per 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 vuoi 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.

Una volta completata la compilazione del modulo, ripetere i dati forniti dall'utente finale. Ad esempio:

Dialogo Descrizione
Utente finale: Domani
Agente: Ok, il taglio dei capelli è programmato per domani alle 19:00. Posso esserti d\'aiuto 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.

Guida la conversazione

L'agente deve sempre guidare la conversazione con l'utente finale. Puoi farlo facilmente terminando 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 comunque 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 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

Dovresti creare gestori di eventi per eventi integrati a seconda dei casi. La gestione di questi eventi è simile all'acquisizione delle eccezioni nella programmazione software. A seconda della situazione, potresti voler gestire gli eventi gestori di eventi specifici per i parametri, gestori di eventi specifici per le pagine, o gestori di eventi specifici del flusso.

Gestire gli errori relativi ai webhook

Quando il servizio webhook non funziona, è importante che l'agente possa gestire correttamente l'errore. A questo scopo devi definire i gestori di eventi per le richieste eventi integrati. Ecco un approccio consigliato per gestire gli errori degli 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 webhook dal servizio webhook.
  • Scegli una pagina in cui un contatore di errori può essere inizializzato come 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 relativa al webhook che gestisce gli eventi di errore del 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 condition percorso con una condizione in cui il numero di errori è 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. Questa route deve avere un target di transizione impostato su PREVIOUS_PAGE, o a qualsiasi pagina che possa fare un altro tentativo di chiamare il 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 eventi webhook deve avere un target di transizione che passa alla pagina di errore del webhook.

Strumenti

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

Utilizzare lo strumento di convalida

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

Utilizzare la funzionalità degli scenari di test

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