Ce guide présente les bonnes pratiques générales pour concevoir tous les types d'agents.
Consultez également le guide de conception d'un agent vocal, qui est spécifiquement destiné à la conception d'agents vocaux, ainsi que le guide des bonnes pratiques pour utiliser le service Dialogflow.
Avant de créer un agent
Cette section fournit les points à prendre en compte avant de commencer à créer un agent.
Objectif
Considérez l'objectif général de votre agent :
- Quelle est la finalité recherchée par votre entreprise ?
- Quelles seront les attentes des utilisateurs vis-à-vis de l'agent ?
- À quelle fréquence les utilisateurs interagiront-ils avec l'agent ?
Plate-forme
Déterminez la façon dont les utilisateurs accéderont à votre agent. Consultez la liste des plates-formes compatibles avec Dialogflow avant de créer du contenu. Lorsque vous aurez décidé quelles plates-formes utiliser, préparez le contenu en conséquence. Certaines intégrations de plate-forme Dialogflow acceptent des messages enrichis pouvant inclure des éléments tels que des images, des liens et des suggestions.
Créer des agents de manière itérative
Si vous souhaitez concevoir un agent complexe ou de grande taille, commencez par créer une boîte de dialogue qui ne traite que les requêtes de niveau supérieur. Une fois la structure de base établie, perfectionnez le fil de la conversation pour vous assurer que toutes les voies qu'un utilisateur pourrait emprunter sont envisagées.
Agents prédéfinis
Dialogflow propose des agents préconçus pour vous aider à démarrer. Les agents prédéfinis couvrent les cas d'utilisation courants tels que la réservation d'hôtel, la navigation et les achats en ligne. Ces agents sont fournis avec des intents et des entités couvrant les requêtes utilisateur les plus répandues. Ajoutez des réponses spécifiques à votre entreprise et vous disposerez rapidement d'un agent opérationnel.
Entités système
Lorsqu'un utilisateur effectue une requête, certaines informations clés doivent être analysées. Dans Dialogflow, ces informations sont appelées entités. Plus spécifiquement, les entités système sont des entités prédéfinies fournies par Dialogflow qui traitent les types d'informations les plus courants.
Small Talk
Lors du développement de la boîte de dialogue, vous avez peut-être envisagé de traiter les requêtes hors sujet. Dialogflow propose une fonctionnalité facultative appelée Small Talk. Lorsque cette fonctionnalité est activée, l'agent répond aux conversations générales, aux réponses émotionnelles et aux questions sur l'agent lui-même. Toutes les réponses Small Talk peuvent être personnalisées pour que l'expérience, qu'elle soit occasionnelle, professionnelle ou hybride, soit représentative de votre marque.
Bonnes pratiques relatives à la conception d'un agent
Cette section décrit la liste des bonnes pratiques à suivre pour obtenir un agent robuste, précis, performant et facile d'utilisation.
Messages d'accueil et d'au revoir
Bonnes pratiques | Détails |
---|---|
Les intents d'accueil doivent informer les utilisateurs des capacités de l'agent en tenant compte de la marque. | L'intent d'accueil de l'agent doit présenter à l'utilisateur 2 ou 3 tâches pouvant être effectuées par l'agent, ainsi que de brèves descriptions (le cas échéant) de la manière d'utiliser ces fonctionnalités. |
Les agents doivent afficher un message de sortie approprié à la fin d'une interaction. | Lorsqu'un utilisateur termine une tâche dans l'agent, ce dernier doit résumer la transaction/tâche et dire quelque chose comme "À bientôt", etc. |
Machine learning et entraînement
Bonnes pratiques | Détails |
---|---|
Les intents doivent comporter au moins 10 à 20 expressions d'entraînement (en fonction de la complexité de l'intent). | La complexité de l'agent détermine le nombre réel d'expressions d'entraînement que chaque intent doit contenir, mais 10 à 20 expressions (en fonction de la complexité de l'intent) constituent le minimum. Plus vous avez de paramètres dans les intents, plus vous devez fournir d'expressions pour entraîner le modèle de machine learning. |
Les expressions d'entraînement doivent être variées. | Incluez des variantes de questions, de commandes, de verbes et de synonymes pour les noms communs afin de vous assurer que les expressions couvrent un large éventail de requêtes possibles. |
Les annotations doivent être cohérentes. |
|
Utilisez des annotations sémantiquement pertinentes pour les entités système. | La signification sémantique d'une partie de phrase d'entraînement sélectionnée pour une annotation peut être affectée par le reste du texte de la phrase d'entraînement. Par exemple:
Par exemple, n'utilisez pas l'entité système @sys.duration pour annoter le premier exemple "7 ans" ci-dessus. La signification sémantique de "7 ans" ne correspond pas à une simple durée. Utilisez plutôt l'entité système @sys.age . |
Les entités personnalisées doivent couvrir un large éventail d'exemples. | Les entités sont des listes d'éléments. Le machine learning prend en charge les formes grammaticales, mais vous devez inclure tous les éléments possibles. Vérifiez également l'option de définition des synonymes et incluez quelques variantes. |
Activez le ML pour un maximum d'intents. | Les expressions d'entraînement pour lesquelles le ML est désactivé ne sont pas utilisées lors de l'entraînement de votre agent. Lorsqu'une requête utilisateur est très semblable à une expression d'entraînement d'un intent pour lequel le ML est désactivé, elle peut être associée au mauvais intent si d'autres intents avec le ML désactivé ressemblent légèrement à la requête utilisateur. Si vous rencontrez des problèmes de faux positifs, augmentez le seuil de classification du ML plutôt que de désactiver le ML. |
Ne définissez pas un seuil de classification du ML élevé pour un agent ne disposant que de peu de données d'entraînement. | Si le seuil est élevé et que vous disposez de peu de données d'entraînement, seules les requêtes utilisateur correspondant presque exactement aux expressions d'entraînement donneront lieu à une correspondance d'intent. Vous devez fournir une grande quantité de données d'entraînement si vous souhaitez utiliser un seuil élevé. |
Les agents doivent disposer d'un intent de remplacement. | Sans intent de remplacement, les requêtes utilisateur sans correspondance génèrent des réponses vides. |
Les agents doivent fournir des exemples négatifs. | Les exemples négatifs empêchent les correspondances involontaires entre les intents et les requêtes utilisateur ressemblant légèrement aux expressions d'entraînement. |
Ne définissez pas d'entités pouvant correspondre à pratiquement n'importe quoi. | Cela dégrade les performances et la qualité du ML. Chaque terme ou presque de chaque expression d'entraînement sera évalué comme une correspondance possible. Utilisez plutôt @sys.any . De même, les entités composites ne doivent pas contenir @sys.any comme synonyme. |
Ne définissez pas d'entités composées d'expressions de remplissage ou de texte dénué de sens. | Exemples d'expressions de remplissage et de texte dénué de sens : "hummm", "voyons voir", "s'il vous plaît", "pourriez-vous", etc. Lorsque vous essayez d'utiliser ce genre d'entités pour apporter de la variété, vous ne faites que dégrader les performances du ML. Dialogflow étend déjà les données afin de gérer une telle variété. Ajoutez plutôt ce type d'expressions à vos expressions d'entraînement, et non à vos entités. |
Les entités doivent avoir une portée limitée qui capture les différentes valeurs possibles d'un type d'information. | Veillez à ce que vos entités soient ciblées, simples et concises. Si les valeurs de votre entité sont complexes, cela peut être dû au fait que des expressions d'entraînement de l'intent sont mieux adaptées à votre situation. Considérons par exemple des expressions utilisateur telles que "Comment puis-je passer un appel international avec le forfait A ?" ou "Utiliser l'itinérance des données à l'international avec le forfait B". Évitez de créer des entités à la fois pour les actions ("Comment puis-je passer un appel international" et "Utiliser l'itinérance des données à l'international") et pour les forfaits ("Forfait A", "Forfait B"). Utilisez plutôt d'un côté des expressions d'entraînement et des correspondances d'intent pour capturer les actions, et de l'autre, des entités pour capturer les forfaits. |
Le texte annoté dans les expressions d'entraînement doit être varié. | Par exemple, si vous fournissez dans les expressions d'entraînement des valeurs temporelles devant être analysées comme des entités système @sys.time , ne renseignez pas la même heure dans chacune de ces expressions. Vos expressions d'entraînement doivent comporter des exemples variés, tels que "7h", "20h00", "21 heures". |
Les intents comportant de multiples paramètres doivent également contenir un grand nombre d'expressions d'entraînement. | En règle générale, essayez d'avoir au moins trois fois plus d'expressions d'entraînement que de paramètres et un minimum de 10 à 20 expressions d'entraînement. |
Utilisez chaque paramètre dans plusieurs expressions d'entraînement. | En règle générale, chaque paramètre doit être utilisé dans au moins cinq expressions d'entraînement. |
Évitez d'utiliser plusieurs entités @sys.any au sein d'une expression d'entraînement. |
Une expression d'entraînement ne doit pas contenir deux entités @sys.any consécutives, ni un total de trois entités @sys.any. Dialogflow pourrait ne pas être en mesure de les distinguer. |
N'utilisez pas d'expressions d'entraînement semblables dans des intents distincts. | Des intents distincts ne doivent pas contenir d'expressions d'entraînement semblables, car cela empêcherait Dialogflow d'apprendre à reconnaître ces expressions. |
Activez la correction orthographique automatique. | Si vous utilisez la saisie de texte, activez la correction orthographique automatique. |
N'imbriquez pas d'entités composites. | N'utilisez pas plus d'un niveau d'imbrication dans les entités composites. Chaque niveau d'imbrication dégrade considérablement la qualité. |
Évitez les caractères spéciaux dans les expressions d'entraînement. | Dans les expressions d'entraînement, les caractères spéciaux tels que { , _ , # ou [ sont ignorés. Les emoji constituent toutefois une exception et fonctionnent comme prévu. |
Nommer les intents
Si votre agent dispose de nombreux intents, vous devez envisager un schéma de nommage qui vous aidera à les organiser. Il est courant de segmenter les noms d'intents avec des signes de ponctuation, avec une spécificité croissante de gauche à droite. De plus, un nom d'intent doit refléter l'intention de l'utilisateur final pour un tour de conversation.
Il existe de nombreux schémas de nommage. En voici un exemple :
- 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
Fonctionnalités d'intent utiles
Bonnes pratiques | Détails |
---|---|
Les agents doivent accepter les requêtes contextuelles. | Par exemple, si l'agent traite des requêtes relatives à la météo et qu'un utilisateur demande "Météo à San Francisco", veillez à ajouter des contextes pour accepter d'autres requêtes telles que "Et demain ? |
Les agents doivent contenir des suivis pour "oui", "non", "annuler", "suivant", "retour", etc. | Les intents de suivi sont utilisés pour répondre aux réponses courantes. Pour ajouter un intent de suivi, passez la souris sur un intent et cliquez sur Ajouter un suivi. |
Les intents doivent disposer d'au moins une réponse textuelle. | La section Réponse se trouve au bas de la page de l'intent. Lorsque vous ajoutez des variations, la réponse est choisie de façon aléatoire parmi les différentes variantes possibles, ce qui offre une expérience moins répétitive. |
Les agents doivent recueillir toutes les informations nécessaires pour répondre à la requête d'un utilisateur. | Envisagez de définir les informations nécessaires en tant que paramètres requis. L'agent continuera de questionner l'utilisateur tant qu'il n'aura pas obtenu toutes les informations dont il a besoin. Ce processus s'appelle le remplissage de cases. |
Les réponses doivent répéter les informations nécessaires (par exemple pour confirmer une commande). | Lorsqu'un utilisateur effectue une requête, comme passer une commande ou modifier des informations, l'agent doit en répéter les termes à des fins de confirmation. Lors de la création des réponses de confirmation, veillez à inclure toutes les combinaisons possibles d'entités et de paramètres répétés. |
Réparation de la conversation
Bonnes pratiques | Détails |
---|---|
Les agents doivent disposer d'invites de récupération utiles pour chaque étape de la boîte de dialogue. | Supposons par exemple que l'invite initiale soit "Quelle couleur voulez-vous ?" et que l'utilisateur réponde "perroquet de la jungle". Un intent de remplacement/suivi devrait, par exemple, reformuler la question comme suit : "Pardon, de quelle couleur s'agit-il ? |
Les agents doivent disposer de réponses personnalisées et spécifiques à la marque dans l'intent de remplacement par défaut. | Lorsqu'un utilisateur dit quelque chose qui ne correspond pas à un intent, l'intent de remplacement par défaut est mis en correspondance. Il doit être personnalisé pour refléter votre marque, et pour fournir des informations permettant à l'utilisateur d'effectuer une requête valide. |
Pour un fulfillment personnalisé, les agents doivent disposer d'un intent permettant aux utilisateurs de répéter des informations. | Un intent peut gérer des requêtes, telles que "pourriez-vous répéter", "veuillez répéter", "recommencez", etc. Il peut s'agir d'un intent de suivi. |
Aidez les utilisateurs à réussir et dirigez-les de manière à ce qu'ils répondent exactement à votre question. | Par exemple, si vous fournissez des options, ne posez pas la question "Aimeriez-vous A ou B ?". En effet, un utilisateur pourrait répondre "oui" au lieu de : "J'ai les réponses A et B. Lequel préférez-vous ? |
Personna
Bonnes pratiques | Détails |
---|---|
Les réponses de l'agent doivent avoir un style et un ton qui correspondent à votre marque et être cohérentes dans tout l'agent. | Lorsque les utilisateurs s'entretiennent avec l'agent, ils doivent avoir l'impression de parler à une seule personne. Assurez-vous que les qualités et la personnalité choisies sont représentées dans toutes les réponses. |
Les agents doivent tenir compte de facteurs tels que la culture, le sexe, les croyances religieuses, les capacités et l'âge. | Les stéréotypes, même pour plaisanter, peuvent offenser les utilisateurs, qui peuvent ne pas revenir consulter l'agent. |
Conception de la voix
Bonne pratique | Détails |
---|---|
Évitez les contenus nécessitant une visualisation, ou l'interaction avec le clavier et la souris. | N'utilisez pas de liens hypertexte, de tableaux, d'images, d'abréviations. Vous pouvez faire référence à un site Web par son nom. Lors de la présentation d'une liste d'options, renvoyez la meilleure correspondance et demandez à l'utilisateur s'il souhaite entendre d'autres options. |
Ne créez pas de silences gênants. Terminez toujours par une question. Dirigez la conversation et impliquez les interactions. | |
Écrivez des dialogues compacts faciles à comprendre. | Sur un écran, le texte peut être long et contenir plusieurs paragraphes. Vous pouvez ignorer les parties qui ne vous intéressent pas. En revanche, écouter un agent virtuel parler trop longtemps ne rendra pas vos utilisateurs satisfait. |
Utiliser SSML | Utilisez la structure SSML pour structurer et modifier l'intonation de vos phrases, afin que vos voix sonnent plus naturelles. |
Pour en savoir plus sur la conception de fonctions vocales, consultez la section Conception de l'agent vocal.
Protection de la confidentialité du consommateur
Bonne pratique | Détails |
---|---|
Désactivez la journalisation des données dans les paramètres de l'agent pour la conformité au RGPD. | Dans les paramètres de l'agent, vous pouvez désactiver la journalisation des interactions dans Dialogflow. Si vous désactivez cette fonctionnalité, aucune donnée d'information personnelle ne sera stockée dans Dialogflow. Cela signifie également que certaines fonctionnalités, telles que les analyses, ne seront pas disponibles. |
Stockez les données de conversation du chat dans BigQuery pour contrôler le stockage régional. | Via Cloud Logging ou à l'aide de l'API Dialogflow, vous pouvez envoyer des énoncés de chat entrant à BigQuery. En adoptant cette approche, vous aurez le contrôle de la région dans laquelle vous souhaitez stocker les données. Vous pouvez également utiliser l'API Data Loss Prevention pour masquer des informations sensibles. Consultez le plan de création d'un service client alimenté par l'IA sur GCP. |
Utiliser le connecteur de base de connaissances
Bonne pratique | Détails |
---|---|
Lorsque vous importez des questions fréquentes publiques, utilisez un balisage HTML5 valide. | Par exemple, utilisez des éléments d'article avec la notation schema.org, telle que schema.org/Question et schema.org/Answer. |
Vérifiez que les questions fréquentes de votre site Web sont indexées par Google Robots. | Le site Web doit autoriser les Google Robots et doit être ajouté au moteur de recherche Google via l'outil Google pour les webmasters. Les sites tels que pages.github ne fonctionneront pas, car ils ne sont pas navigables. |
Utilisez des questions fréquentes de 1 à 200 | Vous avez besoin de plus d'une paire de questions-réponses, et pas plus de 200 par base de connaissances. Vous pouvez charger plusieurs bases de connaissances si vous en avez besoin de plus. |
Mise en œuvre des API Dialogflow
Bonne pratique | Détails |
---|---|
N'exposez pas votre clé privée de compte de service dans le codebase client des applications mobiles ou Web. | Ceci n'est pas considéré comme sûr. Toute personne disposant des outils de développement Chrome peut voler votre clé et passer des appels d'API (payants) via votre compte. Il est préférable de toujours autoriser un serveur proxy d'API à gérer l'authentification Google Cloud. Ainsi, le compte de service ne sera pas exposé au public et les clés seront stockées de manière sécurisée.} |
Conception de la voix et du texte dans un seul agent
Bonne pratique | Détails |
---|---|
N'utilisez pas SSML dans les réponses par défaut de la plateforme. | Lorsque votre agent peut répondre à la fois avec la voix et le texte, une réponse textuelle inclut le code SSML brut. Utilisez du texte brut dans les réponses par défaut de la plateforme et SSML dans les réponses spécifiques à une plateforme. Vous pouvez également utiliser un webhook pour générer un code SSML uniquement lorsqu'une réponse vocale est nécessaire. |
Test
Bonnes pratiques | Détails |
---|---|
Testez soigneusement votre application sur une personne qui n'a pas été impliquée dans son développement. | Tester l'application sur une personne qui n'a jamais eu affaire à l'agent vous donnera des indications sur le degré de fluidité de la conversation. Demandez-lui d'évaluer des facteurs comme la précision des énoncés, la longueur des pauses, les ruptures dans le fil de la conversation, le rythme, les transitions maladroites, etc. |
Testez votre application sur l'ensemble des plates-formes que vous prévoyez d'utiliser. | Si l'agent est disponible sur plusieurs plates-formes, assurez-vous que les messages et réponses enrichis s'affichent correctement sur chacune d'entre elles. |
Bonnes pratiques d'entreprise
- Consultez le framework d'architecture Google Cloud.
Guides de conception de conversation supplémentaires
- Consultez le guide de conception de conversation fourni par l'équipe Actions on Google.
- Consultez le guide SSML fourni par l'équipe Actions on Google.