Augmentez la couverture des intents et gérez les erreurs de manière optimale grâce aux créations de remplacement générative

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 plongeurs à réserver des voyages en 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.

Points abordés

  • Activer les API concernées
  • Comment Dialogflow préremplit automatiquement les valeurs des paramètres de formulaire à 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 "no-match" utilisés dans les flux et lors du remplissage des paramètres
  • Configurer votre propre prompt textuel pour gérer les conversations de base et celles spécifiques à l'agent
  • Rédiger de bonnes descriptions d'intent et de paramètres pour générer des gestionnaires de re-prompt pour les paramètres obligatoires (en plus des re-prompts de l'utilisateur)
  • Tester votre agent et simuler des questions de clients qui déclenchent le remplacement génératif

Prérequis

  • Un projet Google Cloud
  • Un navigateur tel que Chrome

2. Configuration

Avant de pouvoir utiliser la fonctionnalité de réponse générative dans Dialogflow CX, vous devez activer l'API Dialogflow.

Activer l'API Dialogflow à l'aide de la console Cloud

  1. Ouvrez la console Google Cloud dans votre navigateur.
  2. Dans la console Google Cloud, accédez à la bibliothèque d'API pour parcourir les API et les services qui peuvent être activés.
  3. Dans la barre de recherche en haut de la page "Bibliothèque d'API", recherchez Dialogflow API, puis cliquez sur le service correspondant.
  4. Cliquez sur le bouton Activer pour activer l'API Dialogflow dans votre projet Google Cloud.

Utiliser la gcloud CLI (autre méthode)

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 s'affiche :

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 améliorer.

Pour télécharger le code source :

  1. Ouvrez un nouvel onglet de navigateur, accédez au dépôt de l'agent et clonez-le à partir d'une ligne de commande.
  2. L'agent initial a été exporté sous forme de package JSON. Décompressez le fichier, examinez les paramètres de l'agent, consultez la définition du 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 ainsi que votre projet Google Cloud pour effectuer les étapes restantes de cet atelier de programmation.

  1. Dans votre navigateur, accédez à la console Dialogflow CX.
  2. Sélectionnez le projet Google Cloud que vous souhaitez utiliser ou créez-en un.
  3. Une liste d'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 de vos paramètres en fonction de vos besoins.

Créer un agent Dialogflow CX

  1. Pour restaurer l'agent téléchargé depuis le dépôt GitHub, vous devez créer un agent. Dans la console Dialogflow CX, cliquez sur Créer un agent en haut à droite de la page.

Créer un agent

  1. Sélectionnez l'option Build your own (Créer votre propre agent).

Choisissez l'option

  1. Remplissez le formulaire avec les paramètres d'agent ci-dessous et cliquez sur Create pour créer l'agent.
  • Choisissez Divebooker comme nom à afficher.
  • Pour l'emplacement, choisissez us-central1.
  • Sélectionnez le fuseau horaire de votre choix.
  • Sélectionnez en - English comme langue par défaut.
  1. Dialogflow ouvre automatiquement l'agent. Ce n'est pas encore fini !

Restaurer l'agent Divebooker

  1. Revenez à la page de la liste des agents et identifiez l'agent que vous venez de créer. Cliquez sur l'option 78d2781c655810e7.png, puis sur le bouton Restaurer.
  2. Sélectionnez l'option Upload (Importer), puis faites glisser ou sélectionnez le fichier ZIP que vous avez téléchargé précédemment depuis le dépôt GitHub.
  3. Cliquez sur le bouton Restaurer pour importer l'agent que nous vous avons fourni.

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, qui est prêt à aider vos clients. Dans la section suivante, vous allez le tester et voir dans quelle mesure il est capable de répondre aux questions des utilisateurs et de les aider à effectuer des réservations.

4. Tester l'agent

Dialogflow fournit un simulateur intégré pour discuter avec vos agents et traquer les bugs. Pour chaque tour, vous pouvez vérifier que les valeurs de l'intent déclenché, de la réponse de l'agent, de la page active et des paramètres de session sont correctes.

Nous allons tester quelques scénarios et, pour chacun d'eux, nous allons examiner la raison pour laquelle l'agent donne une certaine réponse. Commençons par le premier.

Intent non résolu

  1. Dans la console Dialogflow, ouvrez votre agent et cliquez sur Tester l'agent pour ouvrir le simulateur.

Cliquez sur "Tester l'agent" pour ouvrir le simulateur.

  1. Saisissez un message de salutation pour votre agent, par exemple Hello, puis posez la question what is a liveaboard?. La question ne correspond à aucun intent. Un prompt générique du style "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 été appelé en inspectant la réponse d'origine dans le simulateur.

Saluez l'agent et demandez-lui ce qu'est une croisière de plongée.

Faites défiler la réponse JSON presque jusqu'à la fin. Notez que lors de la recherche d'un intent correspondant, Dialogflow constate qu'il s'agit d'un NO_MATCH et déclenche un événement de non-correspondance.

Vérifier que l'événement sys.no-match-default a été déclenché par Dialogflow

  1. Passez à l'onglet Build (Créer) et ouvrez la Start Page (Page de démarrage) du flux Liveaboards (Croisières de plongée).

Passez à l'onglet "Build" (Créer) et ouvrez la page de démarrage du flux "Liveaboards" (Croisières de plongée).

Par défaut, chaque flux dispose de gestionnaires d'événements pour les événements intégrés "no-match" (aucune correspondance) et "no-input" (aucune entrée). Ces gestionnaires d'événements sont automatiquement créés lorsque vous créez un flux et ne peuvent pas être supprimés.

  1. 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 aussi définir différents types de réponses pour fournir à l'utilisateur final bien plus que de simples réponses textuelles.

Examiner les réponses prédéfinies de l'agent

Passons maintenant au scénario idéal.

Le scénario idéal

Dans ce deuxième cas, imaginez que vous êtes un plongeur qui souhaite réserver une croisière de plongée pour un groupe de 12 personnes aux îles Galápagos en juillet de l'année prochaine.

  1. Dans le panneau "Simulator", cliquez sur l'icône Reset (Réinitialiser) pour démarrer une nouvelle conversation avec l'agent.

Réinitialiser pour démarrer une nouvelle conversation

Pensez à passer à une vue verticale pour améliorer l'expérience utilisateur.

  1. Dites à l'agent que vous souhaitez réserver un vol charter pour les îles Galapagos et donnez-lui les détails de votre voyage. Vous n'avez pas besoin d'utiliser exactement les mêmes requêtes que ci-dessous. N'hésitez pas à faire des tests !

Tester le scénario idéal

  1. Ouvrez la page de démarrage et cliquez sur la route head.send.group.request. Faites défiler la page jusqu'à la section Transition, qui indique à Dialogflow vers quelle page transitionner lorsqu'il y a correspondance avec cet intent.

Transition vers la page "Collecter plus d'informations"

  1. Fermez la définition de la route et développez la page Collect Further Info (Collecter plus d'informations). Notez la réponse à l'entrée et la liste des paramètres.

Page "Collecter plus d'informations"

Pour chaque page de Dialogflow CX, vous pouvez définir un formulaire, qui est 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 incluse dans l'entrée initiale et que destination est également un paramètre d'intent. Lorsqu'une page devient initialement active, et au cours de 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 le prompt correspondant est ignoré.

  1. Passez à l'onglet Manage (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 de ces phrases.

Examinez les phrases d'entraînement fournies pour cet intent et les parties annotées de ces phrases.

  1. Prenons l'exemple de la phrase d'entraînement "I need to organize a trip to Costa Rica for 15 divers" (J'ai besoin d'organiser un voyage au Costa Rica pour 15 plongeurs). "Costa Rica" est annoté avec destination et "15" avec number-of-guests. Lorsque vous annotez des mots dans une phrase d'entraînement, Dialogflow reconnaît que ce ne sont que des exemples de valeurs réelles fournies par les utilisateurs finaux au moment de l'exécution. C'est pourquoi, pour la requête initiale "Do you offer charters to the Galapagos Islands?" (Proposez-vous des croisières aux îles Galapagos ?), Dialogflow a extrait le paramètre de destination "Galapagos Islands".

Ensuite, nous allons voir ce qui se passe si nous ne fournissons pas d'entrée valide à l'agent lorsqu'il nous demande de renseigner un paramètre de formulaire.

Entrée non valide

  1. Dans le panneau "Simulator", cliquez sur l'icône Reset (Réinitialiser) pour démarrer une nouvelle conversation avec l'agent.
  2. Exprimez votre intention de faire une réservation de groupe. Cette fois, ne dites pas à l'agent où vous souhaitez aller. Lorsqu'il vous demande votre destination, répondez avec une valeur aléatoire qui n'est ni le Costa Rica, ni les Galapagos, ni le Mexique.

Saisir une destination non valide

  1. Dans l'onglet Manage (Gérer), cliquez sur Entity types (Types d'entités) dans la section Resources. Vous voyez deux onglets. Sous l'onglet "System", vous trouvez les entités système actuellement utilisées par votre agent. L'onglet Custom affiche la liste des entités personnalisées créées pour établir des correspondances avec des données spécifiques à cet agent.

Entité personnalisée de destination

  1. Cliquez sur l'entité destination pour découvrir les valeurs de correspondance. "Europe" ne fait pas partie des entrées et n'est pas non plus un synonyme.
  2. Dans le diagramme de flux, développez la page Collect Further Info (Collecter plus d'informations) qui contient les paramètres du formulaire. Cliquez sur le paramètre destination.
  3. Dans le panneau des paramètres, faites défiler la page jusqu'à la section Reprompt event handlers (Gestionnaires d'événements de re-prompt), puis cliquez sur le gestionnaire d'événements No-match default (Réponse par défaut en cas d'absence de correspondance).

Ce gestionnaire d'événements au niveau des paramètres est spécifiquement destiné à gérer les entrées de l'utilisateur final non valides lors du remplissage du formulaire. Comme "Europe" est une entrée inattendue, un événement sys.no-match-default a été appelé, et le gestionnaire de re-prompt correspondant défini pour cet événement a été appelé. La section Agent says (L'agent dit) liste deux messages de re-prompt alternatifs.

Messages de relance alternatifs statiques lorsque l'utilisateur final saisit une destination non valide.

Bravo ! Ces scénarios de test sont des cas courants que l'agent doit savoir gérer de manière appropriée. Très souvent, les utilisateurs posent des questions auxquelles les bots ne peuvent pas répondre ou font des demandes que les bots ne peuvent pas satisfaire. Il est très complexe de concevoir un flux conversationnel pour la longue traîne, c'est-à-dire en dehors des chemins bien tracés que la plupart des utilisateurs empruntent. Pensez à tout ce qui peut mal se passer dans une conversation et à tous les chemins inattendus ou non pris en charge que les utilisateurs peuvent emprunter.

Grâce aux progrès de la reconnaissance vocale automatique, nous savons presque toujours exactement ce que les utilisateurs ont dit. Cependant, il reste difficile de déterminer ce que les utilisateurs *voulaient* dire. Bien souvent, les énoncés ne peuvent pas être compris isolément ; ils ne peuvent être compris que dans leur contexte. Dans la section suivante de cet atelier de programmation, nous allons découvrir comment les derniers grands modèles de langage (LLM) génératifs de Google peuvent vous aider à relancer le dialogue et à faire avancer la conversation.

5. Activer le remplacement génératif

Qu'est-ce que le remplacement génératif ?

Le remplacement génératif est une fonctionnalité Dialogflow CX qui utilise les grands modèles de langage (LLM) de Google pour générer les réponses d'un agent virtuel.

En quoi cela vous aide-t-il ?

Entre les cas d'utilisation clés, il existe un certain nombre de demandes utilisateur assez courantes, comme répéter ce que l'agent a dit au cas où l'utilisateur n'aurait pas compris, mettre la conversation en attente lorsque l'utilisateur le demande ou la résumer. Lors du premier test, l'agent n'a pas pu répondre à la question "What is a liveaboard?" (Qu'est-ce qu'une croisière de plongée ?) car nous n'avions pas créé d'intent pour ce type de question. Nous n'avions pas non plus conçu le flux pour gérer les questions génériques liées à la plongée sous-marine et aux croisières de plongée.

Même avec des intents robustes, il existe toujours une marge d'erreur. Les utilisateurs peuvent s'écarter du script en restant silencieux (erreur "No Input") ou en disant quelque chose d'inattendu (erreur "No match"). Mieux vaut prévenir que guérir, mais les erreurs sont inévitables. Les prompts génériques tels que "Désolé, je ne sais pas comment vous aider" ou autres solutions minimales viables ne suffisent souvent pas. Les prompts d'erreur doivent s'inspirer du principe de coopération, selon lequel une communication efficace repose sur l'hypothèse d'une coopération sous-jacente entre les participants à la conversation.

Dans la section suivante, nous allons voir 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 le remplacement génératif pour l'événement "no-match" sur l'ensemble du flux

Vous pouvez activer le remplacement génératif sur les gestionnaires d'événements "no-match" 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 no-match (non-correspondance), chaque fois que cet événement se déclenche, Dialogflow tente de générer une réponse qui sera lue à l'utilisateur. Si la génération de la réponse échoue, la réponse d'agent habituelle sera émise à la place.

Vous pouvez activer le remplacement génératif sur les gestionnaires d'événements "no-match", qui peuvent être utilisés dans le fulfillment de flux, de page ou de paramètre.

Nous allons commencer par activer le remplacement génératif pour l'événement no-match-default du flux Liveaboards.

  1. Développez la page de démarrage du flux.
  2. Sous Event handlers (Gestionnaires d'événements), cliquez sur sys.no-match-default.
  3. Cochez la case Enable generative fallback (Activer le remplacement génératif) sous Agent responses (Réponses de l'agent), puis cliquez sur Save (Enregistrer).

Cochez "Activer le remplacement génératif" sous "Réponses de l'agent".

Enregistrer pour activer le remplacement génératif sur la page d'accueil Liveaboards

Activer le remplacement génératif sur des événements no-match spécifiques

Nous devons maintenant activer le remplacement génératif pour gérer les entrées non valides lorsque l'agent demande le nombre de passagers :

  1. Ouvrez la page Collect Further Info (Collecter plus d'informations) qui contient les paramètres du formulaire. Cliquez sur le paramètre number-of-guests.
  2. Accédez au gestionnaire d'événements No-match cible (faites défiler jusqu'à la section Reprompt event handlers, puis cliquez sur le gestionnaire d'événements No-match default).

Accédez au gestionnaire d'événements "No-match" cible (faites défiler jusqu'à la section "Reprompt event handlers", puis cliquez sur le gestionnaire d'événements "No-match default").

  1. Cochez la case Enable generative fallback (Activer le remplacement génératif) sous Agent responses (Réponses de l'agent).

Activer le remplacement génératif pour le paramètre "Nombre d'invités"

  1. Enfin, cliquez sur Enregistrer.
  2. Répétez exactement les mêmes étapes pour activer le remplacement génératif pour destination et email-address.

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ératif avec un prompt textuel qui indique au LLM comment répondre.

6. Configurer le remplacement génératif

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'un prompt textuel qui combine le langage naturel et des informations sur l'état actuel de l'agent et de la conversation. Vous pouvez configurer cette fonctionnalité de plusieurs façons :

  1. Choisissez un prompt spécifique (déjà défini) à utiliser pour générer la réponse.
  2. Définissez un prompt personnalisé.

Choisir un prompt déjà défini

  1. Dans la console Dialogflow CX, cliquez sur Paramètres de l'agent.

Accéder aux paramètres de l'agent

  1. Accédez à l'onglet ML, puis au sous-onglet Generative AI (IA générative).

Sous-onglet "IA générative"

La fonctionnalité comporte deux modèles de requêtes : le modèle Default (qui n'est pas visible) et le modèle Example qui vous guide lorsque vous rédigez vos propres requêtes.

  1. Sélectionnez le modèle Example et cliquez sur le bouton Edit (Modifier) à droite du menu déroulant pour l'inspecter.

Cliquez sur le bouton "Modifier" à droite du menu déroulant des modèles pour l'inspecter.

Avec le prompt prédéfini, l'agent virtuel peut gérer des conversations de base. Exemple :

  • Saluer l'utilisateur au début et à la fin de la conversation
  • Répéter ce que l'agent a dit au cas où l'utilisateur n'aurait pas compris
  • Mettre la conversation en attente si l'utilisateur le demande
  • Résumer la conversation

Essayons de définir un prompt textuel spécifique pour l'agent Divebooker.

7. Définir votre propre prompt

  1. Copiez le prompt ci-dessous et collez-le dans le champ Text prompt.
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:
  1. Sélectionnez Enregistrer en tant que modèle pour enregistrer la nouvelle requête en tant que modèle (choisissez un nouveau nom de modèle), puis cliquez sur Enregistrer en bas à droite du panneau.

Créez un prompt textuel personnalisé pour l'agent et enregistrez-le en tant que modèle.

  1. Pour que le prompt nouvellement créé devienne le prompt actif, vous devez également enregistrer les paramètres.

Enregistrer les nouveaux paramètres

Lorsque vous rédigez votre propre prompt textuel, soyez clair, concis et prescriptif. La façon dont le prompt est formulé peut avoir un impact considérable sur la qualité de la réponse du LLM. Les LLM sont entraînés à suivre des instructions. Par conséquent, plus votre prompt ressemble à une instruction précise, plus vous avez de chances d'obtenir de bons résultats. Créez un prompt, puis itérez pour l'améliorer en fonction des résultats obtenus.

Pour créer des prompts efficaces, suivez les bonnes pratiques suivantes :

  1. Fournissez une description claire et concise de la tâche que le LLM doit effectuer. Ni plus, ni moins. Soyez complet, mais faites court.
  2. De plus, le prompt doit être spécifique et bien défini, en évitant un langage vague ou ambigu.
  3. Divisez les tâches complexes en éléments plus petits et plus faciles à gérer. En décomposant la tâche en étapes plus petites, vous pouvez aider le modèle à se concentrer sur une chose à la fois et à réduire le risque d'erreurs ou de confusion.
  4. Pour améliorer la qualité des réponses, ajoutez des exemples à votre prompt. Le LLM apprend en contexte à partir des exemples de réponses.

Lors de la création d'un prompt, en plus d'une description en langage naturel du type de contexte à générer, vous pouvez utiliser les espaces réservés suivants :

  • $conversation : la conversation entre l'agent et l'utilisateur, à l'exception du tout dernier énoncé de l'utilisateur. Vous pouvez adapter les préfixes de tour (par exemple, "Humain", "IA" ou "Vous", "Agent") dans le prompt textuel.
  • $last-user-utterance Le dernier énoncé de l'utilisateur.
  • $flow-description Description du flux actif.
  • $route-descriptions Les descriptions des intents actifs.

Maintenant que nous avons un prompt textuel initial, nous devons nous assurer que le flux et les intents sont bien décrits.

8. Ajouter des descriptions de flux et d'intents

Ajouter la description du flux

  1. Pour ajouter une description au flux Liveaboards (Croisières de plongée), accédez aux paramètres du flux en plaçant le curseur de la souris sur le flux dans la section Flows.

Accédez aux paramètres du flux en plaçant le curseur de la souris sur le flux dans la section "Flux".

  1. Cliquez sur le bouton des options 78d2781c655810e7.png.
  2. Sélectionnez Paramètres du flux et ajoutez la description suivante (ou une description similaire) : search, find and book liveaboards.

Ajouter une description au flux "Liveaboards"

  1. Cliquez sur Enregistrer.

Ajouter la description de l'intent

  1. Ajoutons maintenant une description pertinente à l'intent head.send.group.request. Passez à l'onglet Manage (Gérer), choisissez Intents dans la section Resources, puis sélectionnez l'intent head.send.group.request.
  2. 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 en tête !

  1. Cliquez sur Enregistrer.

Vous avez terminé. Vous avez activé le remplacement génératif sur les gestionnaires d'événements "no-match" pour le fulfillment de flux et de paramètres. Vous avez également défini votre propre prompt textuel 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 à nouveau votre agent pour voir comment il répond aux mêmes questions difficiles que précédemment.

9. Retester votre 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 Test Agent (Tester l'agent) pour rouvrir le simulateur.

Tester l'agent à nouveau

Demandez à nouveau à l'agent de vous parler des croisières de plongée. À partir de maintenant, notez que chaque dialogue comporte des messages de l'utilisateur ainsi que des réponses générées, mises en évidence dans les cadres rouges.

Retestez l'agent et demandez-lui à nouveau ce qu'est une croisière de plongée.

Avez-vous obtenu une réponse informative au lieu d'un re-prompt générique ? Parfait ! Maintenant que vous lui avez fourni une description claire et concise des tâches que vous souhaitez qu'il effectue (dans le prompt textuel et dans la description du flux), votre bot est désormais beaucoup plus intelligent lorsqu'il s'agit de répondre à des questions détaillées sans créer d'intents spécifiques. Votre client va apprécier que l'agent puisse lui fournir des informations utiles plutôt qu'une réponse inexploitable.

N'hésitez pas à mettre l'agent au défi. Demandez-lui s'il peut vous aider à trouver un cours de plongée sous-marine, car vous n'êtes pas encore certifié.

 Demandez à l'agent s'il peut vous aider à trouver un cours de plongée sous-marine.

C'est exact. Pour le moment, nous n'avons pas conçu l'agent pour qu'il aide les clients à s'inscrire à des cours de plongée. Comment l'agent le sait-il ? Dans le prompt textuel, nous avons clairement indiqué ce que l'agent peut faire et ne pas faire. "At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts"

Maintenant, testez à nouveau le scénario idéal et enrichissez la conversation. Voyons comment l'expérience a évolué.

Testez à nouveau le scénario idéal et soyez créatif dans le dialogue.

Testez à nouveau le scénario idéal et soyez créatif dans le dialogue.

Lorsque Dialogflow trouve une correspondance pour un intent ou tente de collecter un paramètre conformément à la conception du flux, il affiche les réponses définies lors de la conception. Quand l'utilisateur s'écarte du script en demandant un résumé des informations de voyage ou en proposant 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 idéal et j'espère que vous avez eu une conversation agréable et naturelle avec l'agent, aussi proche que possible de l'expérience que vous auriez avec un agent humain.

Malheureusement, les choses peuvent mal tourner dans une conversation. Faisons un autre test. Cette fois, quand l'agent vous demandera le nombre d'invités, indiquez un nombre supérieur à 15.

Indiquez un nombre de personnes supérieur à 15

Indiquez un nombre de personnes supérieur à 15

Voici quelques points à noter :

  1. Pourquoi 20 n'est-il pas un nombre valide ? Parce que nous avons défini une limite au nombre de personnes autorisées dans la description de l'intent : "The agent collects info such as departure period, destination, number of guests ***(min 4 max 15 people)****, contact details*" . La réponse générative renvoyée par le LLM ("Sorry, we can only assist with group bookings of up to 15 guests" (Désolé, nous ne pouvons vous aider que pour les réservations de groupe de 15 personnes maximum)) est parfaitement conforme aux restrictions que nous avons définies concernant le nombre de personnes. Pour renforcer cette contrainte, "number-of-guests" est une entité RegExp personnalisée qui ne correspond qu'aux nombres compris entre 4 et 15.
  2. La conversation se poursuit, car l'utilisateur souhaite tout de même obtenir une offre pour 15 plongeurs. Cela arrive souvent dans les conversations naturelles, car nous changeons d'avis assez fréquemment. Remarquez que l'agent est coopératif et qu'il ramène doucement l'utilisateur sur la bonne voie.

Concevoir des conversations consiste à écrire la moitié du script d'un dialogue, en espérant qu'il soit suffisamment robuste pour que n'importe qui puisse écrire l'autre moitié. Lorsqu'ils conçoivent une conversation pour la "longue traîne", les développeurs doivent imaginer ce que l'utilisateur pourrait dire à chaque étape du dialogue pour définir les routages, les gestionnaires et les paramètres. C'est pourquoi nous avons ajouté la fonctionnalité de remplacement génératif dans Dialogflow CX : pour permettre aux développeurs de se concentrer sur les principes de conception d'une conversation plutôt que sur les détails d'implémentation, et ainsi fournir des expériences conversationnelles robustes aux utilisateurs.

Faisons un dernier test. Mettez à nouveau le bot au défi en lui demandant un lieu qui ne figure pas dans la liste des destinations disponibles, comme les Maldives. Nous examinerons ensuite rapidement ce qui se passe en arrière-plan.

Mettez à nouveau le bot au défi en lui demandant un lieu qui ne figure pas dans la liste des destinations disponibles, comme les Maldives.

Notez que, comme nous avons également activé le remplacement génératif pour l'événement no-match du paramètre destination, une requête est envoyée à un grand modèle de langage pour générer la réponse. Les réponses prédéfinies habituelles (sous "Agent says") sont ignorées.

Les encadrés ci-dessous vont vous aider à mieux comprendre comment les espaces réservés contribuent à façonner la requête envoyée au grand modèle de langage.

Voici le prompt textuel personnalisé que nous avons configuré dans Dialogflow, avec les espaces réservés 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 lue à 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 précédent, la réponse renvoyée à l'utilisateur est générée par le modèle et s'appuie sur les informations que nous avons fournies dans la description de l'intent : "The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands" (La destination doit être l'une des suivantes dans le Pacifique : Costa Rica, Mexique, îles Galápagos).

Modifier la liste des expressions interdites

La fonctionnalité de remplacement génératif peut être configurée de plusieurs manières :

  1. Choisissez un prompt spécifique (déjà défini) à utiliser pour générer la réponse.
  2. Définissez un prompt personnalisé.
  3. Modifiez la liste des expressions interdites.

Jusqu'à présent, nous avons examiné les deux premières méthodes. Examinons la troisième.

  1. Dans Agent Settings (Paramètres de l'agent), accédez à l'onglet ML (Machine learning), puis au sous-onglet Generative AI (IA générative).
  2. Dans la section Banned phrases (Expressions interdites), ajoutez les phrases suivantes à la liste :
  3. Dangerous country
  4. Hateful place
  5. Medical assistance
  6. Cliquez sur Enregistrer.
  7. Cliquez sur l'icône Reset (Réinitialiser) et testez à nouveau le dernier scénario. Au lieu de demander une belle destination de plongée dans le monde, saisissez l'une des expressions interdites.

Tester l'une des expressions interdites

Le prompt et la réponse générée sont comparés à la liste des expressions interdites. Les expressions interdites sont des expressions qui sont interdites pour l'IA générative. Si l'entrée inclut des expressions interdites ou considérées comme dangereuses, la génération échouera et la réponse habituelle (sous "Agent says" dans la même réponse) sera émise à la place.

Excellent ! Nous avons abordé tout un éventail de conversations dans lesquelles les réponses génératives peuvent vraiment faire la différence. N'hésitez pas à continuer les tests.

10. Félicitations

Bravo ! Vous avez terminé cet atelier de programmation. C'est l'heure de se détendre !

Cbo Chill

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ératif, associée à des descriptions de flux et d'intent de qualité, permet à l'agent de fournir des réponses spécifiques et coopératives, plutôt que des messages génériques du style "Je ne sais pas comment vous aider" ou "Vous avez saisi une option non valide". Les prompts d'erreur générés par les grands modèles de langage peuvent orienter en douceur les utilisateurs vers des routages valides ou réinitialiser leurs attentes quant à ce qui est possible ou non.

N'hésitez pas à tester d'autres situations de conversation et à explorer les autres fonctionnalités disponibles en lien avec Dialogflow CX et l'IA générative.

Effectuer un nettoyage

Pour éviter que les ressources utilisées dans cet atelier de programmation soient facturées sur votre compte Google Cloud, vous pouvez effectuer le nettoyage suivant :

  • 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", puis désactivez l'API Dialogflow.

Complément d'informations

Pour en savoir plus sur l'IA conversationnelle et l'IA générative, consultez les guides et ressources suivants :

Licence

Ce document est publié sous une licence Creative Commons Attribution 2.0 Generic.