1. Présentation
Dernière mise à jour:07/08/2023
Objectifs de l'atelier
Dans cet atelier de programmation, vous allez créer, déployer et configurer un agent virtuel simple dans Dialogflow CX pour aider les amateurs de plongée sous-marine avec des réservations de groupe et des charters privés. L'agent virtuel utilisera l'IA générative et les derniers grands modèles de langage (LLM) génératifs de Google pour générer des réponses d'agent virtuel.
Points abordés
- Activer les API pertinentes
- Comment Dialogflow préremplit-il automatiquement les valeurs des paramètres de formulaire de page à partir des paramètres d'intent ?
- Configurer des gestionnaires d'événements dans Dialogflow
- Activer le remplacement génératif sur les gestionnaires d'événements sans correspondance utilisés dans les flux et lors du remplissage des paramètres
- Comment configurer votre propre requête textuelle pour gérer les situations de conversation basiques ainsi que celles spécifiques à l'agent
- Rédiger des descriptions d'intent et de paramètres appropriés afin de générer des gestionnaires de reprompt pour les paramètres requis (en plus des repromptues définies par l'utilisateur)
- Tester votre agent et simuler les questions des clients déclenchant un remplacement génératif
Prérequis
- Un projet Google Cloud
- Un navigateur tel que Chrome
2. Configuration
Avant de pouvoir utiliser la fonctionnalité de remplacement génératif dans Dialogflow CX, vous devez activer l'API Dialogflow.
Activer l'API Dialogflow à l'aide de la console Cloud
- Ouvrez la console Google Cloud dans votre navigateur.
- Dans la console Google Cloud, accédez à la bibliothèque d'API pour parcourir les API et les services pouvant être activés.
- Dans la barre de recherche en haut de la page de la bibliothèque d'API, recherchez
Dialogflow API
, puis cliquez sur le service obtenu. - Cliquez sur le bouton Activer pour activer l'API Dialogflow dans votre projet Google Cloud.
Utiliser la gcloud CLI (alternative)
Vous pouvez également activer l'API à l'aide de la commande gcloud suivante:
gcloud services enable dialogflow.googleapis.com
Si l'API a bien été activée, un message semblable à celui-ci doit s'afficher:
Operation "operations/..." finished successfully.
Obtenir le code
Vous ne créerez pas l'agent virtuel à partir de zéro. Nous vous fournirons un agent que vous devrez restaurer à partir de la console Dialogflow CX, puis l'améliorer.
Pour télécharger le code source:
- Ouvrez un nouvel onglet dans votre navigateur, accédez au dépôt de l'agent et clonez-le à partir d'une ligne de commande.
- L'agent initial a été exporté en tant que package JSON. Décompressez le fichier, inspectez les paramètres de l'agent, consultez la définition de flux
Liveaboards.json
, puis parcourez les pages, les intents et les entités du flux.
3. Créer un agent
Ouvrir la console Dialogflow
Vous utiliserez la console Dialogflow CX avec votre projet Google Cloud pour effectuer les étapes restantes de cet atelier de programmation.
- Dans votre navigateur, accédez à la console Dialogflow CX.
- Sélectionnez le projet Google Cloud que vous souhaitez utiliser ou créez-en un.
- La liste des agents doit s'afficher dans la console Dialogflow CX.
Si vous utilisez Dialogflow CX pour la première fois, consultez la documentation Dialogflow CX pour en savoir plus sur la configuration de votre projet et des paramètres en fonction de vos besoins.
Créer un agent Dialogflow CX
- Pour restaurer l'agent téléchargé à partir du dépôt GitHub, vous devez créer un autre agent. Dans la console Dialogflow CX, cliquez sur Create new agent (Créer un agent) en haut à droite de la page.
- Sélectionnez l'option Build your own (Créer votre propre agent).
- Remplissez le formulaire avec les paramètres d'agent ci-dessous, puis cliquez sur Créer pour créer l'agent.
- Choisissez le nom à afficher:
Divebooker
- Choisir l'emplacement:
us-central1
- Sélectionnez votre fuseau horaire préféré
- Sélectionner
en - English
comme langue par défaut
- Dialogflow ouvre automatiquement l'agent. Ce n'est pas encore fini !
Restaurer l'agent Divebooker
- Revenez à la page de la liste des agents et identifiez l'agent que vous venez de créer. Cliquez sur l'option , puis sur le bouton Restaurer.
- Sélectionnez l'option Upload (Importer), puis déposez ou sélectionnez le fichier ZIP que vous avez téléchargé à partir du dépôt GitHub.
- Cliquez sur le bouton Restaurer pour importer l'agent que nous vous avons fourni.
Bravo ! Vous avez terminé de créer votre agent virtuel de réservation de plongée, prêt à aider vos clients. Dans la section suivante, vous allez le tester et voir s'il est efficace pour répondre aux questions des utilisateurs et faciliter les demandes de réservation.
4. Tester l'agent
Dialogflow fournit un simulateur intégré pour discuter avec vos agents et détecter des bugs. Pour chaque tour, vous pouvez vérifier les valeurs correctes pour l'intent déclenché, la réponse de l'agent, la page active et les paramètres de session.
Nous allons tester quelques scénarios et, pour chacun d'eux, nous examinerons la raison pour laquelle l'agent donne une certaine réponse. Commençons par le premier.
Intent non résolu
- Dans la console Dialogflow et à partir de votre agent, cliquez sur Test Agent (Agent de test) pour ouvrir le simulateur.
- Saisissez un message d'accueil pour votre agent, par exemple
Hello
, et demandez àwhat is a liveaboard?
. La question ne correspond à aucun intent, une requête générique comme "Désolé, je ne sais pas comment vous aider" s'affiche. Vous pouvez vérifier que l'événement intégré sys.no-match-default a bien été appelé en inspectant la réponse d'origine sur le simulateur.
Faites défiler la page jusqu'à la fin de la réponse JSON. Notez que lors de la recherche d'un intent correspondant, Dialogflow détermine qu'il s'agit d'un NO_MATCH et déclenche un événement de non-correspondance.
- Accédez à l'onglet Build (Créer) et ouvrez la page d'accueil du flux Liveaboards.
Par défaut, chaque flux dispose de gestionnaires d'événements pour les événements intégrés no-match et no-input. Ces gestionnaires d'événements sont créés automatiquement lorsque vous créez un flux et ne peuvent pas être supprimés.
- Cliquez sur le gestionnaire d'événements sys.no-match-default et faites défiler la page jusqu'à la section Réponses de l'agent. Dialogflow fournit une liste de réponses alternatives, mais vous pouvez également définir différents types de messages de réponse, pour fournir à l'utilisateur final bien plus que des réponses textuelles.
Entrons maintenant sur la voie du succès !
Un parcours heureux
Dans ce deuxième cas, imaginons que vous soyez un plongeur souhaitant réserver une croisière de plongée pour un groupe de 12 personnes vers les îles Galápagos, en juillet prochain.
- Dans le panneau du simulateur, cliquez sur l'icône Reset (Réinitialiser) pour démarrer une nouvelle conversation avec l'agent.
- Indiquez à l'agent que vous souhaitez réserver un affrètement pour les îles Galápagos et fournissez-lui des détails sur votre voyage. Vous n'avez pas besoin d'utiliser exactement les mêmes requêtes ci-dessous. Faites des tests !
- Ouvrez la page d'accueil, puis cliquez sur l'itinéraire head.send.group.request. Faites défiler la page jusqu'à la section Transition qui indique à Dialogflow la page à effectuer lorsque cet intent est mis en correspondance.
- Fermez la définition Itinéraire et développez la page Collecter des informations supplémentaires. Notez le fulfillment d'entrée et la liste des paramètres.
Pour chaque page de Dialogflow CX, vous pouvez définir un formulaire, c'est-à-dire une liste de paramètres à collecter auprès de l'utilisateur final de la page. Notez que l'agent n'a pas demandé la destination du voyage, car nous l'avons transmise dans l'entrée initiale et que destination est également un paramètre d'intent. Lorsqu'une page est initialement active, et pendant sa période d'activité, tout paramètre de formulaire portant le même nom qu'un paramètre d'intent est automatiquement défini sur la valeur du paramètre de session, et l'invite correspondante est ignorée.
- Passez à l'onglet Gérer et cliquez sur l'intent head.send group request dans la section Intents. Examinez les phrases d'entraînement fournies pour cet intent et les parties annotées des phrases d'entraînement.
- Prenons l'exemple de l'expression d'entraînement "Je dois organiser un voyage de 15 plongeurs au Costa Rica". "Costa Rica" est annoté avec destination et "15". par le nombre d'invités. Lorsque vous annotez des parties d'une phrase d'entraînement, Dialogflow reconnaît que ces parties ne sont que des exemples de valeurs réelles fournies par les utilisateurs finaux au moment de l'exécution. C'est pourquoi la réponse initiale "Proposez-vous des charters pour les îles Galápagos ?" Dialogflow a extrait le paramètre de destination des "Îles Galápagos".
Nous allons maintenant voir ce qui se passe si nous ne fournissons pas à l'agent une entrée valide lorsqu'il est invité à remplir un paramètre de formulaire.
Saisie non valide
- Dans le panneau du simulateur, cliquez sur l'icône Reset (Réinitialiser) pour démarrer une nouvelle conversation avec l'agent.
- Exprimez votre intention d'effectuer une réservation de groupe. Cette fois, n'indiquez pas à l'agent où vous souhaitez aller ni à quel moment vous êtes invité à répondre à une destination avec une valeur aléatoire autre que le Costa Rica, les Galápagos ou le Mexique.
- Dans l'onglet Gérer, cliquez sur Types d'entités dans la section Ressources. Vous remarquerez deux onglets: sous l'onglet Système, vous trouverez les entités système actuellement utilisées par votre agent. L'onglet Personnalisé fournit la liste des entités personnalisées créées pour faire correspondre les données spécifiques à cet agent.
- Cliquez sur l'entité destination pour connaître les valeurs correspondantes. "Europe" n'est pas l'une des entrées et ce n'est pas non plus un synonyme.
- Sur le diagramme de flux, développez la page Collecter d'autres informations qui contient les paramètres du formulaire. Cliquez sur le paramètre de destination.
- Dans le panneau des paramètres, faites défiler la page jusqu'à la section Reprompt event handlers (Relancer les gestionnaires d'événements), puis cliquez sur No-match default (Gestionnaire d'événements par défaut sans correspondance).
Ce gestionnaire d'événements au niveau des paramètres est spécifiquement destiné à gérer les entrées non valides de l'utilisateur final lors du remplissage du formulaire. Parce que "l'Europe" est une entrée inattendue, un événement sys.no-match-default a été appelé et le gestionnaire de nouvelle invite correspondant défini pour cet événement a été appelé. La section L'agent dit répertorie deux autres messages de demande de confirmation.
Bravo ! Ces scénarios de test représentent des scénarios courants que l'agent doit gérer de manière appropriée. Très souvent, les utilisateurs posent des questions auxquelles les robots ne peuvent pas répondre ou qui formulent des requêtes que les robots ne peuvent pas traiter. Il est très complexe de concevoir une longue traîne, c'est-à-dire des chemins empruntés par la plupart des utilisateurs. Pensez à toutes les choses qui peuvent mal tourner dans une conversation et à tous les chemins inattendus ou non pris en charge par les utilisateurs.
Grâce aux progrès de la reconnaissance vocale automatique, nous savons presque toujours exactement ce que les utilisateurs ont dit. Toutefois, il n'est pas toujours facile de déterminer ce que les utilisateurs signifient pour eux. Souvent, les énoncés ne peuvent pas être interprétés individuellement ; elles ne peuvent être compréhensibles que dans leur contexte. Dans la section suivante de cet atelier de programmation, nous verrons comment les derniers grands modèles de langage génératifs (LLM) de Google peuvent vous aider à redresser le dialogue et à faire avancer la conversation.
5. Activer les créations de remplacement générative
Qu'est-ce que la fonctionnalité de création de remplacement générative ?
La fonctionnalité de remplacement génératif est une fonctionnalité Dialogflow CX qui utilise les grands modèles de langage (LLM) de Google pour générer des réponses d'agent virtuel.
À quoi ça sert ?
Entre les principaux cas d'utilisation, il existe un certain nombre de demandes utilisateur relativement courantes, comme répéter ce que l'agent a dit au cas où l'utilisateur ne comprenait pas, maintenir la ligne lorsque l'utilisateur la demande et résumer la conversation. Lors du premier test effectué, l'agent n'a pas répondu à la question "Qu'est-ce qu'un liveaboard ?". car nous n'avons pas créé d'intent pour celui-ci ni conçu le flux pour traiter ce type de questions génériques liées à la plongée sous-marine et aux plongeurs.
Même avec des intents robustes, il existe toujours une marge d'erreur. Les utilisateurs peuvent quitter le script en restant silencieux (erreur de saisie non autorisée) ou en disant quelque chose d'inattendu (erreur de non-correspondance). Bien qu'il soit préférable d'empêcher les erreurs de se produire plutôt que de les gérer après qu'elles se produisent, les erreurs ne peuvent pas être totalement évitées. Requêtes génériques comme "Désolé, je ne sais pas comment vous aider" ou des solutions similaires minimalement viables ne sont souvent pas assez bonnes. Les invites d'erreur doivent s'inspirer du principe coopératif, selon lequel une communication efficace repose sur l'hypothèse qu'il existe un sous-flux de coopération entre les participants à la conversation.
Dans la section suivante, nous verrons comment configurer la fonctionnalité de remplacement génératif pour étendre la couverture des intents et simplifier la gestion des erreurs afin d'améliorer l'expérience client.
Activer les créations de remplacement générative pour l'événement de non-correspondance de l'ensemble du flux
Vous pouvez activer les créations de remplacement générative sur les gestionnaires d'événements sans correspondance utilisés dans les flux, les pages ou lors du remplissage des paramètres. Lorsque le remplacement génératif est activé pour un événement sans correspondance, Dialogflow tente de générer une réponse générée qui sera dite à l'utilisateur chaque fois que cet événement se déclenche. Si la génération de la réponse échoue, la réponse habituelle de l'agent est émise à la place.
Vous pouvez activer le remplacement génératif dans votre agent sur des gestionnaires d'événements sans correspondance, qui peuvent être utilisés dans le traitement du flux, de la page ou des paramètres.
Nous commencerons à activer les créations de remplacement générative pour l'ensemble de l'événement de non-correspondance par défaut du flux Liveaboards.
- Développez la page d'accueil du flux.
- Cliquez sur sys.no-match-default sous Gestionnaires d'événements.
- Cochez la case Activer les créations de remplacement générative sous Réponses de l'agent, puis cliquez sur Enregistrer.
Activer les créations de remplacement générative sur des événements sans correspondance spécifiques
Nous voulons maintenant activer le remplacement génératif pour gérer les entrées non valides lorsque l'agent demande le nombre de passagers:
- Ouvrez la page Collecter d'autres informations qui contient les paramètres du formulaire. Cliquez sur le paramètre number-of-guests.
- Accédez au gestionnaire d'événements cible No-match (Aucune correspondance). Faites défiler la page jusqu'à la section Reprompt event handlers (Relancer les gestionnaires d'événements), puis cliquez sur le gestionnaire d'événements No-match default (Gestionnaire d'événements par défaut sans correspondance).
- Cochez la case Activer les créations de remplacement générative sous Réponses de l'agent.
- Enfin, cliquez sur Enregistrer.
- À présent, répétez les étapes exactes pour activer la création de remplacement générative pour la destination et l'adresse e-mail
Bravo ! Vous avez activé le remplacement génératif pour gérer les intents inattendus et les valeurs de paramètres non valides. Nous allons maintenant voir comment configurer la fonctionnalité de remplacement générative avec une requête textuelle qui indique au LLM comment répondre.
6. Configurer les créations de remplacement générative
La fonctionnalité de remplacement génératif transmet une requête à un grand modèle de langage pour produire la réponse générée. La requête prend la forme d'une requête textuelle qui combine du langage naturel et des informations sur l'état actuel de l'agent et de la conversation. Cette fonctionnalité peut être configurée de plusieurs manières:
- Choisissez une requête spécifique (déjà définie) à utiliser pour générer la réponse.
- Définissez une requête personnalisée.
Choisir une requête déjà définie
- Dans la console Dialogflow CX, cliquez sur Agent Settings (Paramètres de l'agent).
- Accédez à l'onglet ML, puis au sous-onglet Generative AI.
Cette fonctionnalité est prête à l'emploi avec deux modèles de requêtes : le modèle Default (Par défaut) (qui n'est pas visible) et le modèle Example qui vous guide dans la rédaction de vos propres requêtes.
- Sélectionnez le modèle Example et cliquez sur le bouton Edit (Modifier) à droite du menu déroulant pour l'inspecter.
Avec l'invite prédéfinie, l'agent virtuel peut gérer des situations de conversation de base. Exemple :
- Accueillez et dites au revoir à l'utilisateur.
- Répétez ce que l'agent a dit au cas où l'utilisateur n'a pas compris.
- Restez en ligne lorsque l'utilisateur le demande.
- Résumez la conversation.
Essayons de définir une requête textuelle spécifique pour l'agent Divebooker.
7. Définir votre propre requête
- Copiez la requête ci-dessous et collez-la dans la zone Requête textuelle.
You are a friendly agent that likes helping traveling divers. You are under development and you can only help $flow-description At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts. Currently you can $route-descriptions The conversation between the human and you so far was: ${conversation USER:"Human:" AGENT:"AI"} Then the human asked: $last-user-utterance You say:
- Sélectionnez Save as a new template (Enregistrer en tant que nouveau modèle) pour stocker la nouvelle requête en tant que nouveau modèle (choisissez un nouveau nom de modèle), puis cliquez sur Save (Enregistrer) en bas à droite du panneau.
- Pour activer l'invite que vous venez de créer, vous devez également enregistrer les paramètres.
Lorsque vous rédigez votre propre requête textuelle, soyez clair, concis et prescriptif. La façon dont la requête est élaborée au LLM peut avoir une incidence considérable sur la qualité de la réponse du LLM. Les LLM sont entraînés à suivre les instructions. Par conséquent, plus votre requête ressemble à une instruction précise, meilleurs seront vos résultats. Créez une requête en fonction des résultats obtenus, puis itérez pour l'améliorer.
Pour créer des requêtes efficaces, suivez les bonnes pratiques suivantes:
- Fournissez une description claire et concise de la tâche que vous souhaitez que le LLM effectue. Pas plus, ni moins. Soyez concis et complet.
- De plus, la requête doit être spécifique et bien définie, en évitant un langage vague ou ambigu.
- Divisez les tâches complexes en éléments plus petits et plus faciles à gérer. En décomposant la tâche en plus petites étapes, vous pouvez aider le modèle à se concentrer sur une seule chose à la fois et réduire le risque d'erreurs ou de confusion.
- Pour améliorer la qualité des réponses, ajoutez des exemples dans votre requête. Le LLM apprend en contexte à partir des exemples sur la façon de répondre.
Lors de la création d'une requête, en plus d'une description en langage naturel indiquant le type de contexte à générer, les espaces réservés suivants peuvent être utilisés:
$conversation
: conversation entre l'agent et l'utilisateur, à l'exclusion du tout dernier énoncé de l'utilisateur. Vous pouvez adapter les préfixes de virage (par exemple, "humain", "IA" ou "Vous", "Agent") dans la requête textuelle.$last-user-utterance
Dernier énoncé de l'utilisateur.$flow-description
Description du flux actif.$route-descriptions
: descriptions des intents actifs.
Maintenant que nous disposons d'une requête textuelle initiale, la prochaine étape consiste à s'assurer que le flux et les intents ont des descriptions correctes.
8. Ajouter des descriptions de flux et d'intents
Ajouter la description du flux
- Pour ajouter une description au flux Liveaboards, accédez aux paramètres du flux en pointant sur le flux dans la section Flows (Flux).
- Cliquez sur le bouton Options.
- Sélectionnez Flow settings (Paramètres du flux) et ajoutez la description suivante (ou une description similaire):
search, find and book liveaboards
.
- Cliquez sur Enregistrer.
Ajouter la description de l'intent
- Ajoutons maintenant une bonne description à l'intent head.send.group.request. Passez à l'onglet Manage (Gérer), sélectionnez Intents dans la section Resources (Ressources), puis sélectionnez l'intent head.send.group.request.
- Ajoutez la description suivante:
assist users with group or full charter reservations. Initially collect travel details including departure period, destination, number of guests (min 4 max 15 people), contact details. The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands
Notez que la description contient des informations importantes, comme le nombre minimal et maximal de passagers autorisés sur un bateau. Gardez cela à l'esprit.
- Cliquez sur Enregistrer.
Et voilà ! Vous avez activé le remplacement génératif sur les gestionnaires d'événements sans correspondance pour le traitement des flux et des paramètres. Vous avez également défini votre propre requête textuelle que la fonctionnalité de remplacement génératif transmet à un grand modèle de langage pour produire des réponses génératives.
Dans la section suivante, vous allez tester de nouveau votre agent pour voir comment il peut répondre aux mêmes questions difficiles que précédemment.
9. Tester de nouveau l'agent
Maintenant que vous avez configuré et activé le remplacement génératif sur l'agent virtuel, vous pouvez poser des questions difficiles similaires et voir comment il gère les réponses.
Cliquez sur Tester l'agent pour rouvrir le simulateur.
Demandez à nouveau à l'agent des informations sur les plongeons en bateau. À partir de maintenant, notez que les messages générés par l'utilisateur et les réponses générées sont encadrés en rouge pour chaque boîte de dialogue.
Avez-vous obtenu une bonne réponse plutôt qu'une réponse générique ? Parfait ! Après avoir fourni une description claire et concise des tâches que l'agent doit effectuer (dans la requête textuelle et dans la description du flux), votre bot est désormais beaucoup plus intelligent pour répondre à des questions détaillées sans créer d'intents spécifiques. Votre client appréciera que l'agent lui réponde de façon plus éclairée, et non pas une réponse impossible à mettre en pratique.
Ne soyez pas timide et mettez l'agent au défi : demandez-lui s'il peut vous aider à trouver un cours de plongée sous-marine puisque vous n'êtes pas encore un plongeur certifié.
En effet, pour l'instant, nous n'avons pas conçu l'agent pour qu'il vous aide aux cours de plongée. Comment l'agent peut-il le savoir ? Dans la requête textuelle, nous avons clairement indiqué ce que l'agent peut ou ne peut pas faire. "Pour le moment, vous ne pouvez pas aider vos clients en leur proposant des cours de plongée et des cours de plongée sur terre. Vous ne pouvez pas recommander les magasins de plongée ni les complexes de plongée locaux."
Maintenant, testez à nouveau le scénario heureux et enrichissez la conversation. Voyons comment l'expérience a changé.
Lorsque Dialogflow établit une correspondance avec un intent ou tente de collecter un paramètre conformément à la conception du flux, il affiche les traitements définis au moment de la conception. Lorsque l'utilisateur s'ouvre sur le script en demandant un résumé des détails du voyage ou une proposition de fournir son numéro de téléphone, la fonctionnalité de remplacement génératif entre en jeu.
Bravo ! Vous avez retesté le scénario heureux et j'espère que vous avez eu une conversation agréable et naturelle avec l'agent aussi proche que possible de votre expérience avec un agent réel.
Malheureusement, des problèmes peuvent survenir dans une conversation. Faisons un autre test, cette fois, lorsqu'on vous demande le nombre de personnes, dites un nombre supérieur à 15.
Voici quelques points à souligner:
- Pourquoi le nombre 20 n'est-il pas valide ? Parce que nous avons défini une limite sur le nombre de clients autorisé dans la description de l'intent : "L'agent collecte des informations telles que la période de départ, la destination et le nombre de clients***(4 min 4 max 15 personnes)*** *, coordonnées*" pour en savoir plus. La réponse générative renvoyée par le LLM : "Désolé, nous ne pouvons vous aider que pour les réservations de groupe pouvant accueillir jusqu'à 15 personnes". est parfaitement en adéquation avec les restrictions que nous avons imposées concernant le nombre d'invités. Pour renforcer cette exigence, le nombre d'invités est une entité d'expression régulière personnalisée qui ne correspond qu'aux nombres compris entre 4 et 15.
- La conversation se poursuit, car au final, l'utilisateur est toujours désireux d'obtenir une offre pour 15 plongeurs. Cela arrive fréquemment au cours de conversations naturelles, et nous changeons d'avis assez souvent ! Notez que l'agent est coopératif et oriente doucement l'utilisateur vers le bon chemin.
La conception de conversation implique la rédaction d’un script d’une moitié d’une boîte de dialogue, en espérant qu’elle soit suffisamment robuste pour que n’importe qui puisse intervenir et jouer l’autre moitié. Lors de la conception pour la longue traîne, les développeurs doivent se concentrer sur ce que l'utilisateur pourrait dire à chaque étape de la boîte de dialogue pour définir vos routes, gestionnaires et paramètres. C'est pourquoi nous avons ajouté la fonctionnalité de remplacement génératif à Dialogflow CX: pour permettre aux développeurs de se concentrer sur les principes de conception des conversations plutôt que sur les détails de l'implémentation afin d'offrir des expériences de conversation robustes aux utilisateurs.
Faisons un autre test, mais cette fois-ci, défiez à nouveau le bot avec un lieu qui ne figure pas dans la liste des destinations disponibles, comme les Maldives. Nous verrons ensuite rapidement ce qui se passe dans les coulisses.
Comme nous avons également activé le remplacement génératif sur l'événement no-match
pour le paramètre de destination, une requête est envoyée à un grand modèle de langage pour produire la réponse générée. Les réponses recommandées habituelles (sous "L'agent dit" ne sont pas prises en compte).
Les zones de texte ci-dessous vous aideront à mieux comprendre comment les espaces réservés contribuent à façonner la requête envoyée au grand modèle de langage.
Voici l'invite de texte personnalisée que nous avons configurée dans Dialogflow avec les espaces réservés mis en évidence en gras:
You are a friendly agent that likes helping traveling divers. You are under development and you can only help $flow-description At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts. Currently you can $route-descriptions The conversation between the human and you so far was: ${conversation USER:"Human:" AGENT:"AI"} Then the human asked: $last-user-utterance You say:
Dans la zone de texte ci-dessous, j'ai inclus l'entrée reçue par le grand modèle de langage et la sortie qui contient la réponse générée qui sera renvoyée à l'utilisateur:
llm_input: You are a friendly agent that likes helping traveling divers. You are under development and you can only help search, find and book liveaboards. At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts. Currently you can assist users who are looking for a group reservation or a full charter. Initially collect travel details including departure period, destination, number of guests (min 4 max 15 people), contact details. The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands. The conversation between the human and you so far was: Human: Hi, my name's Alessia AI Hi Alessia, what can I help you with today? Human: Can you help me find a nice boat for myself and my family? AI To assist you with that I need to collect the details of your travel and then we'll get back to you with an offer shortly. Where would you like to go? We can organize a charter in Costa Rica, Galapagos Islands and several locations around Mexico Then the human asked: The kids want to go to the Maldives llm_output: You say: I'm sorry Alessia, we can only help you with liveaboards in Costa Rica, Galapagos Islands and several locations around Mexico.
Comme pour le test effectué précédemment, la réponse renvoyée à l'utilisateur est générée par le modèle et repose sur les informations que nous avons fournies dans la description de l'intent : "The destination must be of the following in the Pacific: Costa Rica, Mexique, Galápagos (Îles)".
Modifier la liste des expressions interdites
La fonctionnalité de remplacement générative peut être configurée de plusieurs manières:
- Choisissez une requête spécifique (déjà définie) à utiliser pour générer la réponse.
- Définissez une requête personnalisée.
- Modifiez la liste des expressions interdites.
Jusqu'à présent, nous avons examiné les deux premières méthodes. Examinons la troisième option.
- Dans Agent Settings (Paramètres de l'agent), accédez à l'onglet ML (ML), puis au sous-onglet Generative AI (IA générative).
- Dans la section Banned phrases (Expressions interdites), ajoutez les phrases suivantes à la liste:
Dangerous country
Hateful place
Medical assistance
- Cliquez sur Enregistrer.
- Cliquez sur l'icône Réinitialiser et testez à nouveau le dernier scénario. Au lieu de proposer une belle destination de plongée autour du monde, saisissez l'une des expressions interdites.
La requête et la réponse générée sont comparées à la liste des expressions interdites. Les expressions interdites sont celles qui sont interdites dans le cadre de l'IA générative. Si l'entrée comprend des expressions interdites ou jugées non sécurisées, la génération échouera et la réponse prescrite habituelle (sous "Agent dit dans le même traitement") sera émise à la place.
Excellent ! Nous avons abordé différents types de situations dans lesquelles les réponses génératives peuvent vraiment faire la différence. N'hésitez pas à poursuivre les tests !
10. Félicitations
Bravo ! Vous avez terminé cet atelier de programmation. Détendez-vous !
Vous avez créé un agent virtuel et activé le remplacement génératif sur les gestionnaires d'événements no-match
utilisés dans les flux et lors du remplissage des paramètres.
La fonctionnalité de remplacement générative, combinée à une bonne description du flux et des intents, peut fournir des réponses spécifiques et coopératives de l'agent, par opposition aux invites génériques telles que "Désolé, je ne sais pas comment vous aider". ou "Désolé, vous avez saisi une option non valide". Les invites d'erreur générées par les grands modèles de langage peuvent orienter doucement les utilisateurs vers des chemins de réussite, ou réinitialiser leurs attentes sur ce qui est possible et ce qui ne l'est pas.
N'hésitez pas à tester d'autres situations de conversation et à explorer les autres fonctionnalités disponibles liées à Dialogflow CX et à l'IA générative.
Effectuer un nettoyage
Vous pouvez effectuer le nettoyage suivant pour éviter que les ressources utilisées dans cet atelier de programmation soient facturées sur votre compte Google Cloud:
- Accédez à la console Dialogflow CX et supprimez tous les agents que vous avez créés.
- Dans la console Google Cloud, accédez à la page "API et services" et désactivez l'API Dialogflow.
Complément d'informations
Poursuivez votre apprentissage sur l'IA conversationnelle et l'IA générative grâce à ces guides et ressources:
- Documentation sur Dialogflow CX
- Documentation de la création de remplacement générative
- IA générative dans Google Cloud
- Présentation de PaLM
Licence
Ce document est publié sous une licence Creative Commons Attribution 2.0 Generic.