Best practice per la progettazione di agenti generici

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

Consulta anche la guida alla progettazione degli agenti vocali, specifica per la progettazione di agenti vocali, e la guida alle best practice per l'utilizzo del servizio Dialogflow.

Prima di creare un agente

Questa sezione fornisce informazioni da prendere in considerazione prima di iniziare a creare un agente.

Obiettivo

Considera l'obiettivo generale del tuo agente:

  • Che cosa sta cercando di ottenere la tua attività?
  • Che cosa si aspettano gli utenti dal tuo agente?
  • Con quale frequenza gli utenti interagiranno con il tuo agente?

Piattaforma

Valuta in che modo gli utenti accederanno al tuo agente. Prima di creare contenuti, consulta le piattaforme supportate da Dialogflow. Quando scegli le piattaforme da supportare, prepara i tuoi contenuti di conseguenza. Alcune integrazioni della piattaforma Dialogflow supportano i messaggi avanzati che possono includere elementi come immagini, link e chip di suggerimento.

Creare agenti in modo iterativo

Se l'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 può intraprendere.

Agenti predefiniti

Dialogflow offre agenti predefiniti per aiutarti a iniziare. Gli agenti predefiniti coprono casi d'uso comuni come prenotazioni di hotel, navigazione e acquisti online. Questi agenti sono dotati di intent ed entità per coprire le query utente più comuni. Aggiungi risposte specifiche per la tua attività e creerai rapidamente un agente funzionante.

Entità di sistema

Quando un utente fa una richiesta, ci sono informazioni importanti da analizzare in ciò che ha detto. In Dialogflow, questi sono chiamati entità. In particolare, le entità di sistema sono entità predefinite fornite da Dialogflow che gestiscono i tipi di informazioni più comuni.

Small talk

Quando sviluppi la tua conversazione, potresti aver preso in considerazione la gestione delle richieste fuori tema. Dialogflow offre una funzionalità facoltativa chiamata small talk. Se questa funzionalità è attivata, l'agente risponderà a conversazioni generali, a risposte emotive e a domande sull'agente stesso. Tutte le risposte di conversazione possono essere personalizzate per garantire che l'esperienza, che sia informale, professionale o una via di mezzo, sia rappresentativa del tuo brand.

Best practice per la progettazione degli agenti

Questa sezione fornisce un elenco di best practice per un agente solido, accurato, performante e utilizzabile.

Saluti e congedi

Best practice Dettagli
Gli intent di benvenuto devono informare gli utenti delle funzionalità dell'agente tenendo presente il branding. L'intent di benvenuto dell'agente deve informare l'utente di 2-3 attività per le quali l'agente può fornire assistenza, nonché brevi descrizioni (se necessario) su come utilizzare queste funzionalità.
Gli agenti devono avere un messaggio di uscita adeguato al termine di un'interazione riuscita. Quando un utente completa un'attività nel tuo agente, deve riassumere la transazione/l'attività e dire qualcosa come "Alla prossima", ecc.

Machine learning e addestramento

Best practice Dettagli
Le finalità devono avere almeno 10-20 frasi di addestramento (a seconda della complessità della finalità). La complessità dell'agente determinerà il numero effettivo di frasi di addestramento che ogni intent deve avere, ma 10-20 (a seconda della complessità dell'intent) è un buon minimo. Più parametri hai negli intent, più frasi devi fornire per addestrare il modello di machine learning.
Le frasi di addestramento devono essere varie. Includi varianti di domande, comandi, verbi e sinonimi per i nomi comuni per assicurarti che le frasi coprano un ampio spettro di possibili richieste.
Le annotazioni devono essere coerenti.
  • Esamina le frasi di addestramento e assicurati che le annotazioni evidenziate rimandino alle entità corrette.
  • Non devi avere testo nelle frasi di addestramento che viene annotato in alcuni casi, ma non in altri.
  • L'intervallo di testo selezionato per un'annotazione deve includere tutto il testo necessario per trovare una corrispondenza con un'entità e non deve includere altro testo.
  • Assicurati che il testo annotato in più frasi di addestramento contenga porzioni simili della frase di addestramento. Ad esempio, considera la frase di addestramento "Imposta la sveglia alle 6 del mattino", in cui "6 del mattino" è annotato come @sys.date. Se hai un'altra frase di addestramento "svegliami alle 7 del mattino", annota "7 del mattino", ma non annotare "svegliami alle 7 del mattino".
Utilizza annotazioni semanticamente significative per le entità di sistema. Il significato semantico di una parte di una frase di addestramento selezionata per un'annotazione può essere influenzato dal resto del testo della frase di addestramento. Ad esempio:
  • Ho 7 anni (il significato semantico del testo annotato è l'età di una persona)
  • Il contratto è valido per 7 anni (il significato semantico del testo annotato è una durata di tempo)
I modelli di machine learning di Dialogflow 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 utilizzare l'entità di sistema @sys.age.
Le entità personalizzate devono coprire un'ampia gamma di esempi. Le entità sono elenchi di elementi. Il machine learning si occuperà delle forme grammaticali, ma devi includere tutti gli elementi possibili. Inoltre, seleziona l'opzione Definisci sinonimi e includi alcune varianti.
Disattiva ML per il minor numero possibile di intent. Le frasi di addestramento per gli intent con ML disattivato non vengono utilizzate durante l'addestramento dell'agente. Una query utente molto simile a una frase di addestramento in un intent con ML disattivato potrebbe essere associata all'intent sbagliato se altri intent con ML attivato hanno una leggera somiglianza con la query utente. Se hai problemi con i falsi positivi, aumenta la soglia di classificazione ML anziché disattivare ML.
Non impostare una soglia di classificazione ML elevata per un agente con pochi dati di addestramento. Se la soglia è elevata e non sono disponibili molti dati di addestramento, solo le query utente che corrispondono quasi esattamente alle frasi di addestramento genereranno una corrispondenza dell'intent. Se vuoi una soglia elevata, devi fornire molti dati di addestramento.
Gli agenti devono avere un intent di fallback. Senza intent di fallback, le query degli utenti non corrispondenti genereranno risposte vuote.
Gli agenti devono fornire esempi negativi. Gli esempi negativi impediscono che le query degli utenti leggermente simili alle frasi di addestramento corrispondano intenzionalmente agli intent.
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. Prendi in considerazione l'utilizzo di @sys.any. Allo stesso modo, le entità composite non devono contenere un singolo @sys.any come sinonimo.
Non definire entità composte da intercalari o testo senza significato. Esempi di parole di riempimento e testo senza significato sono: "mmm", "vediamo", "per favore", "potresti per favore". Se tenti di utilizzare entità come questa per introdurre varietà, non fai altro che peggiorare il rendimento del ML. Dialogflow aumenta già i dati per gestire la varietà di questo tipo. Dovresti aggiungere frasi come questa alle frasi di addestramento, non alle entità.
Le entità 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 espressioni dell'utente finale come "Come faccio a effettuare una chiamata internazionale con il piano A?" e "Utilizzo del roaming dei dati internazionale con il piano B". Non creare entità sia per le azioni ("Come posso effettuare una chiamata internazionale" e "Utilizzo del roaming dei dati internazionale") sia per i piani ("Piano A", "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.
Il testo annotato nelle frasi di addestramento deve essere vario. Ad esempio, se fornisci valori di tempo che devono essere analizzati come entità di sistema @sys.time nelle frasi di addestramento, non fornire lo stesso orario in tutte le frasi di addestramento. Le frasi di addestramento devono contenere una serie di esempi di orari, ad esempio "7:00", "20:00", "9 o'clock".
Gli intent con molti parametri devono avere anche molte frasi di addestramento. Come regola generale, cerca di avere almeno il triplo delle frasi di addestramento rispetto ai parametri e almeno 10-20 frasi di addestramento (a seconda della complessità dell'intent).
Ogni parametro deve essere utilizzato in molte frasi di addestramento. In genere, ogni parametro deve essere utilizzato in almeno 5 frasi di addestramento.
Evita di utilizzare più entità @sys.any in una frase di addestramento. Una frase di addestramento non deve contenere due entità @sys.any consecutive o un totale di tre entità @sys.any. Dialogflow potrebbe non essere in grado di distinguerli.
Non utilizzare frasi di addestramento simili in intent diversi. Intent diversi non devono contenere frasi di addestramento simili, perché ciò impedirà a Dialogflow di imparare a riconoscere queste frasi.
Attiva la correzione ortografica automatica. Se utilizzi l'input di testo, devi attivare la correzione ortografica automatica.
Non nidificare le entità composite Non utilizzare più di un livello di nidificazione nelle entità composite. Ogni livello di nidificazione peggiora notevolmente la qualità.
Evita i caratteri speciali nelle frasi di addestramento. I caratteri speciali nelle frasi di addestramento, come {, _, # e [, verranno ignorati. Le emoji fanno eccezione e funzionano come previsto.

Assegnazione dei nomi degli intent

Se il tuo agente ha molti intent, ti consigliamo di adottare un sistema di denominazione che ti aiuti a tenerli organizzati. È prassi comune segmentare i nomi degli intent con la punteggiatura, dove la specificità aumenta da sinistra verso destra. Inoltre, il nome di un intent deve riflettere l'intenzione dell'utente finale per un turno conversazionale.

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

Funzionalità utili per l'intent

Best practice Dettagli
Gli agenti devono supportare le richieste contestuali. Ad esempio, se il tuo agente gestisce le richieste relative al meteo e un utente chiede "Meteo a San Francisco", assicurati di aggiungere contesti per supportare ulteriori richieste come "E domani?".
Gli agenti devono avere follow-up per sì, no, annulla, avanti, indietro e così via. Gli intent di follow-up vengono utilizzati per rispondere alle risposte comuni. Per aggiungere un intent di follow-up, passa il mouse sopra un intent e fai clic su Aggiungi follow-up.
Gli intent devono avere almeno una risposta di testo. La sezione delle risposte si trova in fondo alla pagina dell'intent. L'aggiunta di varianti mescolerà la risposta scelta, rendendo l'esperienza meno ripetitiva.
Gli agenti devono raccogliere tutte le informazioni necessarie per soddisfare la richiesta di un utente. Valuta la possibilità di rendere obbligatori i parametri necessari. L'agente continuerà a chiedere all'utente finché non otterrà le informazioni di cui ha bisogno. Questa operazione si chiama riempimento degli slot.
Le risposte devono ripetere le informazioni necessarie, ad esempio la conferma di un ordine. Quando un utente effettua una richiesta, ad esempio un ordine o una modifica delle informazioni, l'agente deve ripetere l'azione per conferma. Quando crei queste risposte di conferma, assicurati di includere tutte le combinazioni possibili di entità e parametri ripetuti.

Riparazione della conversazione

Best practice Dettagli
Gli agenti devono disporre di prompt di recupero utili per ogni passaggio della finestra di dialogo. Ad esempio, se il prompt iniziale è "Che colore vuoi?" e l'utente risponde "pappagallo della giungla", un intent di riserva/di follow-up deve riformulare la domanda, ad esempio "Scusa, che colore era?".
Gli agenti devono avere risposte personalizzate e specifiche per il brand nell'intent di riserva predefinito. Quando un utente dice qualcosa che non corrisponde a un intent, viene abbinato l'intent di riserva predefinito. Deve essere personalizzato in modo da riflettere il tuo brand e fornire informazioni per guidare l'utente a effettuare una richiesta valida.
Per l'evasione personalizzata, gli agenti devono avere un intent che consenta agli utenti di ripetere le informazioni. Un intent può gestire richieste come "Ripeti", "Riproduci di nuovo" e così via. Questo può essere un intent di follow-up.
Aiuta gli utenti a rispondere correttamente, guidali a fornire esattamente la risposta che vorresti sentire. Ad esempio, se fornisci delle opzioni, non chiedere "Vuoi A o B?". - perché in questo caso l'utente potrebbe rispondere "Sì". Chiedi invece: "Ho A e ho B. Quale preferisci?

Utente tipo

Best practice Dettagli
Le risposte dell'agente devono avere uno stile e un tono adatti al tuo brand e coerenti in tutto l'agente. Quando gli utenti interagiscono con il tuo agente, dovrebbero avere l'impressione di parlare con una sola persona. Assicurati che le qualità e la personalità che hai scelto siano rappresentate in tutte le tue risposte.
Gli agenti devono essere sensibili a culture, generi, credo religiosi, abilità ed età. Gli stereotipi possono offendere gli utenti, anche nelle battute, e potrebbero non tornare al tuo agente.

Progettare per la voce

Best practice Dettagli
Evita contenuti che richiedono la visualizzazione o l'interazione con tastiera e mouse. Non utilizzare link ipertestuali, tabelle, immagini o abbreviazioni. Puoi fare riferimento a un sito web per nome. Quando presenti un elenco di opzioni, restituisci la corrispondenza migliore e chiedi all'utente se vuole ascoltare opzioni alternative.
Non creare silenzi imbarazzanti. Termina sempre con una domanda. Guidare la conversazione e avviare le interazioni.
Scrivi dialoghi compatti e facili da capire. Su una schermata, il testo può essere lungo e contenere più paragrafi. Puoi saltare le parti che non ti interessano. Tuttavia, ascoltare un agente virtuale che parla troppo a lungo non renderà felici i tuoi utenti.
Utilizzare SSML Utilizza SSML per strutturare e modificare l'intonazione delle frasi, in modo che le voci risultino più naturali.

Per ulteriori informazioni sulla progettazione per la voce, vedi Progettazione di agenti vocali.

Protezione della privacy dei consumatori

Best practice Dettagli
Disattiva la registrazione dei dati nelle impostazioni dell'agente per la conformità al GDPR. Nelle impostazioni dell'agente, puoi disattivare la registrazione delle interazioni in Dialogflow. Se disattivi questa funzionalità, in Dialogflow non verranno memorizzati dati PII. Ciò significa anche che alcune funzionalità, come Analytics, non saranno disponibili.
Archivia i dati delle conversazioni della chat in BigQuery per avere il controllo sull'archiviazione regionale. Tramite Cloud Logging o utilizzando l'API Dialogflow, puoi inviare le chat in arrivo a BigQuery. In questo modo, avrai il controllo sulla regione in cui vuoi archiviare i dati. Inoltre, puoi utilizzare l'API Data Loss Prevention per mascherare le informazioni sensibili. Consulta il progetto per creare un servizio clienti basato sull'AI su Google Cloud.

Utilizzo del connettore della knowledge base

Best practice Dettagli
Quando importi le domande frequenti pubbliche, utilizza un markup HTML5 valido. Ad esempio, utilizza elementi di articoli con la notazione schema.org, come schema.org/Question e schema.org/Answer.
Assicurati che il tuo sito web di domande frequenti sia indicizzato da Google Robots Il sito web deve consentire l'accesso a Google Robots e deve essere aggiunto al motore di ricerca Google tramite lo strumento Google Webmasters. Siti come pages.github non funzioneranno perché non sono sottoponibili a scansione.
Utilizzare 1-200 domande frequenti Devi avere più di una coppia di domande e risposte e non più di 200 per knowledge base. Se ne hai bisogno, puoi caricare più knowledge base.

Implementazione delle API Dialogflow

Best practice Dettagli
Non esporre la chiave privata dell'account di servizio nei codebase client per applicazioni web o mobile. Questo non è considerato sicuro. Chiunque abbia familiarità con gli strumenti di sviluppo di Chrome potrebbe rubare la tua chiave ed effettuare chiamate API (a pagamento) tramite il tuo account. È un approccio migliore lasciare sempre a un server proxy API la gestione dell'autenticazione Google Cloud. In questo modo, il account di servizio non sarà esposto al pubblico e le chiavi potranno essere archiviate in modo sicuro.}

Progettare per la voce e il testo in un unico agente

Best practice Dettagli
Non utilizzare SSML nelle risposte predefinite della piattaforma. Quando l'agente può rispondere sia con la voce che con il testo, la risposta di testo includerà il codice SSML non elaborato. Utilizza testo normale nella risposta predefinita della piattaforma e SSML nelle risposte specifiche della piattaforma. In alternativa, puoi utilizzare un webhook per generare SSML solo quando è necessaria una risposta vocale.

Test

Best practice Dettagli
Testa l'app a fondo con una persona che non è stata coinvolta nel suo sviluppo. Se fai usare l'app a una persona che non ha familiarità con l'agente, potrai capire quanto è naturale il flusso della conversazione. Chiedi loro di verificare l'accuratezza, le lunghe pause, i percorsi conversazionali mancanti, il ritmo, le transizioni goffe e così via.
Testa la tua app su tutte le piattaforme che prevedi di supportare. Se il tuo agente sarà disponibile su una o più piattaforme, assicurati che i messaggi avanzati e le risposte vengano visualizzati come previsto su tutte le piattaforme.

Best practice aziendali

Altre guide alla progettazione delle conversazioni