Questa guida fornisce le best practice generali per la progettazione di tutti i tipi di agenti.
Consulta anche la guida alla progettazione degli agenti vocali, specifica per la progettazione di agenti vocali, e la guida alle best practice per l'utilizzo del servizio Dialogflow.
Prima di creare un agente
Questa sezione fornisce informazioni da considerare prima di iniziare a creare un agente.
Obiettivo
Considera l'obiettivo generale del tuo agente:
- Qual è l'obiettivo della tua attività?
- Cosa si aspettano gli utenti dal tuo agente?
- Con quale frequenza gli utenti interagiranno con il tuo agente?
Piattaforma
Valuta come gli utenti accederanno al tuo agente. Prima di creare contenuti, esamina le piattaforme supportate da Dialogflow. Quando scegli le piattaforme da supportare, prepara i contenuti di conseguenza. Alcune delle integrazioni della piattaforma di Dialogflow supportano i messaggi avanzati, che possono includere elementi come immagini, link e chip di suggerimento.
Crea agenti in modo iterativo
Se l'agente sarà di grandi dimensioni o complesso, inizia creando una finestra di dialogo che risponda solo alle richieste di livello superiore. Una volta stabilita la struttura di base, esegui l'iterazione sui percorsi di conversazione per assicurarti di coprire tutti i possibili percorsi che un utente potrebbe intraprendere.
Agenti predefiniti
Dialogflow offre agenti predefiniti per aiutarti a iniziare. Gli agenti predefiniti coprono casi d'uso comuni come la prenotazione di hotel, la navigazione e gli acquisti online. Questi agenti sono dotati di intent ed entità per coprire le query più comuni degli utenti. Aggiungi risposte specifiche per la tua attività e creerai rapidamente un agente funzionante.
Entità di sistema
Quando un utente effettua una richiesta, ci sono informazioni importanti da analizzare in base a ciò che ha detto. In Dialogflow, queste sono chiamate entità. In particolare, le entità di sistema sono entità predefinite fornite da Dialogflow che gestiscono i tipi di informazioni più comuni.
Small talk
Durante lo sviluppo della finestra di dialogo, potresti aver preso in considerazione la gestione delle richieste fuori tema. Dialogflow offre una funzionalità facoltativa chiamata conversazione informale. Con questa funzionalità attivata, l'agente risponderà a conversazioni generali, risposte emotive e domande sull'agente stesso. Tutte le risposte di conversazione possono essere personalizzate per garantire che l'esperienza, sia essa 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 sulle funzionalità dell'agente tenendo presente il branding. | L'intent di benvenuto dell'agente deve informare l'utente di 2-3 attività con cui l'agente può aiutarlo, oltre a brevi descrizioni (se necessario) di come utilizzare queste funzionalità. |
| Gli agenti devono avere un messaggio di uscita adatto quando un'interazione riuscita è terminata. | Quando un utente completa un'attività nell'agente, quest'ultimo deve riepilogare la transazione/l'attività e dire qualcosa come "Alla prossima" e così via. |
Machine learning e addestramento
| Best practice | Dettagli |
|---|---|
| Gli intent devono avere almeno 10-20 frasi di addestramento (a seconda della complessità dell'intent). | 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 di nomi comuni per assicurarti che le tue frasi coprano un ampio spettro di possibili richieste. |
| Le annotazioni devono essere coerenti. |
|
| 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:
Ad esempio, non utilizzare l'entità di sistema @sys.duration per l'annotazione del primo esempio "7 anni" riportato sopra. Il significato semantico di "7 anni" non corrisponde a una semplice durata temporale. Dovresti invece 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 il machine learning 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 abbinata all'intent sbagliato se altri intent con ML attivato hanno una leggera somiglianza con la query utente. Se riscontri problemi con i falsi positivi, aumenta la soglia di classificazione ML anziché disattivare il ML. |
| Non impostare una soglia di classificazione ML elevata per un agente con pochi dati di addestramento. | Se la soglia è alta e non sono presenti molti dati di addestramento, solo le query degli utenti che hanno corrispondenze quasi esatte con le frasi di addestramento genereranno una corrispondenza con l'intent. Se vuoi una soglia elevata, devi fornire molti dati di addestramento. |
| Gli agenti devono avere un intent di riserva. | Senza intent di riserva, le query degli utenti senza corrispondenza 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 involontariamente agli intenti. |
| Non definire entità che corrispondono praticamente a qualsiasi cosa. | Ciò peggiora le prestazioni e la qualità del ML. Quasi tutto ciò che è presente in ogni frase di addestramento verrà valutato come una possibile corrispondenza. Valuta la possibilità di utilizzare @sys.any. Analogamente, le entità composite non devono contenere un singolo @sys.any come sinonimo. |
| Non definire entità composte da intercalari o testo privo di significato. | Esempi di intercalari e testo privo di significato sono: "hmmm", "vediamo", "per favore", "potresti per favore". Se provi a utilizzare entità come questa per introdurre varietà, non fai altro che peggiorare le prestazioni del ML. Dialogflow migliora già i dati per gestire questa varietà. Devi aggiungere frasi come questa alle frasi di addestramento, non alle entità. |
| Le entità devono avere un ambito limitato che acquisisce valori distinti di un tipo di informazioni. | Mantieni le entità mirate, brevi e semplici. Se i valori delle entità sono complessi, potrebbe essere perché le frasi di addestramento degli intent sono più adatte alla tua situazione. Ad esempio, considera espressioni dell'utente finale come "Come posso 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"). Dovresti 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 ora che devono essere analizzati come entità di sistema @sys.time nelle frasi di addestramento, non fornire la stessa ora in tutte le frasi di addestramento. Le frasi di addestramento devono contenere una serie di esempi di orari, come: "7:00", "8 p.m.", "9:00". |
| Gli intent con molti parametri devono avere anche molte frasi di addestramento. | Come regola generale, cerca di avere un numero di frasi di addestramento almeno tre volte superiore a quello dei parametri e almeno 10-20 frasi di addestramento (a seconda della complessità dell'intent). |
| Ogni parametro deve essere utilizzato in molte frasi di addestramento. | Come regola generale, 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 intenti diversi. | Intenti diversi non devono contenere frasi di addestramento simili, perché ciò impedirebbe 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 riduce notevolmente la qualità. |
| Evita i caratteri speciali nelle frasi di addestramento. | I caratteri speciali nelle frasi di addestramento, come {, _, # e [, verranno ignorati. Le emoji sono un'eccezione e funzionano come previsto. |
Denominazione degli intent
Se l'agente ha molti intent, ti consigliamo di utilizzare uno schema di denominazione che ti aiuti a mantenerli organizzati. È prassi comune segmentare i nomi degli intent con la punteggiatura, dove la specificità aumenta da sinistra a destra. Inoltre, il nome di un intent deve riflettere l'intenzione dell'utente finale per un turno di conversazione.
Esistono molti schemi di denominazione validi, ma ecco un esempio:
- phone-service.order.cancel
- phone-service.order.create
- phone-service.order.change
- tv-service.order.cancel
- tv-service.order.create
- tv-service.order.change
- account.balance.get
- account.balance.pay
- account.address.get
- account.address.update
Funzionalità utili per l'intent
| Best practice | Dettagli |
|---|---|
| Gli agenti devono supportare le richieste contestuali. | Ad esempio, se l'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 nella parte inferiore della 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 riceverà le informazioni di cui ha bisogno. Questa operazione è chiamata compilazione degli slot. |
| Le risposte devono ripetere le informazioni, se necessario, ad esempio per confermare un ordine. | Quando un utente effettua una richiesta, ad esempio un ordine o una modifica delle informazioni, l'agente deve ripetere l'azione per confermarla. Quando crei queste risposte di conferma, assicurati di includere tutte le possibili combinazioni di entità e parametri ripetuti. |
Riparazione della conversazione
| Best practice | Dettagli |
|---|---|
| Gli agenti dovrebbero avere prompt di recupero utili per ogni passaggio della finestra di dialogo. | Ad esempio, se il prompt iniziale è "Che colore vuoi?" e l'utente risponde con "pappagallo della giungla", un intent di riserva/intent di follow-up dovrebbe 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. Questo messaggio deve essere personalizzato in modo da riflettere il tuo brand e fornire informazioni per guidare l'utente a presentare una richiesta valida. |
| Per il fulfillment personalizzato, gli agenti devono avere un intent che consenta agli utenti di ripetere le informazioni. | Un intent può gestire richieste come "ripeti", "fammelo riascoltare", "riproduci di nuovo" e così via. Può trattarsi di un intent di follow-up. |
| Aiuta gli utenti a rispondere correttamente, indirizzandoli a dire esattamente ciò che vorresti sentire come risposta. | Ad esempio, se fornisci delle opzioni, non chiedere "Vuoi A o B?". - because then a user could answer "yes" Instead ask: "I have A and I have 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 l'agente, dovrebbero avere l'impressione di parlare con una persona. Assicurati che le qualità e la personalità che hai scelto siano rappresentate in tutte le tue risposte. |
| Gli agenti devono essere sensibili alle culture, ai generi, alle credenze religiose, alle abilità e alle età. | Gli stereotipi possono offendere gli utenti, anche se usati in modo scherzoso, e potrebbero non tornare più al tuo agente. |
Progettazione per la voce
| Best practice | Dettagli |
|---|---|
| Evita i contenuti che richiedono la visualizzazione o l'interazione con tastiera e mouse. | Non utilizzare link ipertestuali, tabelle, immagini, abbreviazioni. Puoi fare riferimento a un sito web per nome. Quando presenti un elenco di opzioni, restituisci la corrispondenza migliore e chiedi se l'utente vuole ascoltare opzioni alternative. |
| Non creare silenzi imbarazzanti. Termina sempre con una domanda. Guida la conversazione e avvia le interazioni. | |
| Scrivi dialoghi compatti e facili da capire. | Su uno schermo, 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. |
| Utilizza SSML | Utilizza SSML per strutturare e modificare l'intonazione delle frasi, in modo che le voci suonino più naturali. |
Per saperne di più sulla progettazione per la voce, consulta Progettazione di agenti vocali.
Protezione della privacy dei consumatori
| Best practice | Dettagli |
|---|---|
| Disattiva il logging dei dati nelle impostazioni dell'agente per la conformità al GDPR. | Nelle impostazioni dell'agente, puoi disattivare il logging delle interazioni in Dialogflow. Se disattivi questa funzionalità, nessun dato PII verrà archiviato in Dialogflow. Ciò significa anche che alcune funzionalità, come l'analisi, non saranno disponibili. |
| Archivia i dati delle conversazioni in chat in BigQuery per avere il controllo sullo spazio di archiviazione regionale. | Tramite Cloud Logging o utilizzando l'API Dialogflow, puoi inviare espressioni di chat in arrivo a BigQuery. Adottando questo approccio, avrai il controllo sulla regione in cui vuoi archiviare i dati. Inoltre, puoi utilizzare l'API Data Loss Prevention per mascherare le informazioni sensibili. Scopri il progetto per creare un'assistenza clienti basata 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 dell'articolo con la notazione schema.org, come schema.org/Question e schema.org/Answer. |
| Assicurati che il tuo sito web di domande frequenti sia indicizzato dai robot di Google | Il sito web deve consentire i robot di Google 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. |
| Utilizza 1-200 domande frequenti | Per ogni knowledge base, devi avere più di una coppia di domande e risposte e non più di 200. Se necessario, puoi caricare più knowledge base. |
Implementazione delle API Dialogflow
| Best practice | Dettagli |
|---|---|
| Non esporre la chiave privata del account di servizio in codebase client per applicazioni mobile o web. | Questa operazione non è considerata sicura. Chiunque abbia dimestichezza con Chrome DevTools potrebbe rubare la tua chiave ed effettuare chiamate API (a pagamento) tramite il tuo account. Un approccio migliore è consentire sempre a un server proxy API di gestire l'autenticazione di Google Cloud. In questo modo, l'account di servizio non verrà esposto al pubblico e le chiavi potranno essere archiviate in sicurezza.} |
Progettazione per voce e 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 sia con il testo, una risposta di testo includerà il codice SSML non elaborato. Utilizza il 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 con attenzione con qualcuno che non è stato coinvolto nel suo sviluppo. | Se l'app viene utilizzata da qualcuno che non ha familiarità con l'agente, potrai capire quanto è naturale il flusso della conversazione. Chiedi loro di prestare attenzione all'accuratezza, alle lunghe pause, ai percorsi di conversazione mancanti, al ritmo, alle transizioni imbarazzanti e così via. |
| Testa la tua app su tutte le piattaforme che prevedi di supportare. | Se l'agente sarà disponibile su una o più piattaforme, assicurati che la messaggistica avanzata e le risposte vengano visualizzate come previsto su tutte le piattaforme. |
Best practice aziendali
- Consulta il Well-Architected FrameworkGoogle Cloud .
Guide aggiuntive alla progettazione conversazionale
- Consulta la guida alla progettazione conversazionale fornita dal team di Actions on Google.
- Consulta la guida SSML fornita dal team di Actions on Google.