Prise de décision éclairée à l'aide des générateurs et des datastores Dialogflow CX

1. Présentation

Dernière mise à jour:10/10/2023

Ce que vous allez faire

Dans cet atelier de programmation, vous allez utiliser Vertex AI Conversation et Dialogflow CX pour créer, déployer et configurer un agent virtuel afin d'aider les personnes qui souhaitent donner leur sang et de s'assurer qu'elles répondent aux critères d'éligibilité requis. L'agent utilisera des données publiques réelles et les grands modèles de langage (LLM) génératifs de Google pendant le fulfillment Dialogflow CX.

Fonctionnalités que vous utiliserez

Pour cet atelier de programmation, vous allez configurer et utiliser trois fonctionnalités distinctes:

Agents de data store

La fonctionnalité Vertex AI Conversation crée un agent Dialogflow spécial, appelé agent de data store.

Avec cette fonctionnalité, vous fournissez une URL de site Web, des données structurées ou des données non structurées (data stores), puis Google analyse votre contenu et crée un agent virtuel alimenté par des data stores et de grands modèles de langage. Vos clients et utilisateurs finaux peuvent alors discuter avec l'agent et poser des questions sur le contenu. Consultez l'introduction à Vertex AI Conversation pour en savoir plus sur ce type d'agent.

Alternateurs

La fonctionnalité générateur est une fonctionnalité Dialogflow CX qui permet aux développeurs d'utiliser les derniers grands modèles de langage (LLM) génératifs et les requêtes personnalisées de Google pour générer des réponses d'agent au moment de l'exécution. Un générateur peut gérer des réponses génériques impliquant des connaissances générales à partir d'un grand ensemble de données textuels sur lesquels il a été entraîné ou du contexte de la conversation.

Création de remplacement générative

La fonctionnalité de création de remplacement génératif utilise les derniers grands modèles de langage (LLM) génératifs de Google pour générer des réponses d'agent virtuel lorsque l'entrée de l'utilisateur final ne correspond pas à un intent ou à un paramètre pour le remplissage de formulaire. Cette fonctionnalité peut être configurée à l'aide d'une requête textuelle qui indique au LLM comment répondre. Vous pouvez utiliser une requête textuelle prédéfinie ou ajouter vos propres requêtes. 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. Si vous souhaitez en savoir plus sur les créations de remplacement générative, consultez cet atelier de programmation.

Points abordés

  • Créer un agent de data store à partir de données non structurées
  • Utiliser des gestionnaires de connaissances pour permettre aux utilisateurs finaux de discuter avec un agent virtuel sur le contenu ajouté à un datastore
  • Comment configurer une requête de texte de générateur et la rendre contextuelle à l'aide d'espaces réservés d'invites de générateur intégrés
  • Comment marquer des mots comme espaces réservés d'invites de générateur et les associer ultérieurement à des paramètres de session dans le fulfillment pour utiliser leurs valeurs lors de l'exécution
  • Comment configurer un générateur pour gérer les réponses impliquant des connaissances issues d'un ensemble de données textuel volumineux et le contexte de la conversation en cours.
  • Comment générer un e-mail formel à l'aide de générateurs
  • Tester votre agent et simuler les questions d'un client qui déclenchent des réponses générées

Prérequis

  • Un projet Google Cloud
  • Un navigateur tel que Chrome

2. Activer les API

Avant de pouvoir créer un agent de data store dans Vertex AI Conversation, vous devez activer Dialogflow, ainsi que les API Vertex AI Search and Conversation.

Pour activer l'API Dialogflow, procédez comme suit:

  1. Dans votre navigateur, accédez à la page Informations sur le service de l'API Dialogflow.
  2. Cliquez sur le bouton Activer pour activer l'API Dialogflow dans votre projet Google Cloud.

Pour activer l'API Vertex AI Search and Conversation, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la console Vertex AI Search and Conversation.
  2. Lisez et acceptez les conditions d'utilisation, puis cliquez sur Continuer et activer l'API.

3. Créer une application de chat et un data store pour votre application

Vous allez maintenant créer une application de chat pour votre agent virtuel et la configurer avec une source de données. L'objectif de l'agent que vous allez créer est d'aider les clients qui ont des questions sur l'éligibilité au sang. Vous utiliserez l'Australian Red Cross Lifeblood comme source d'informations fiables et vous créerez un data store basé sur des données non structurées provenant du site Web d'éligibilité au sang.

  1. Pour créer une application de chat dans Vertex AI Conversation, vous pouvez:
    1. Accédez à la console Vertex AI Conversation, puis cliquez sur + Nouvelle application en haut de la console.
    2. Accédez à la console Dialogflow CX, cliquez sur + Créer un agent, puis sélectionnez l'option Générer automatiquement. Vous serez ensuite redirigé vers l'étape suivante dans la console Vertex AI Conversation.
  2. Dans la console Vertex AI Conversation, sélectionnez Chat comme type d'application que vous souhaitez créer.
  3. Dans le champ Nom de l'entreprise, saisissez Save a Life. Ce paramètre permet de définir l'entreprise représentée par l'agent et son champ d'application.
  4. Dans le champ Agent name (Nom de l'agent), indiquez Blood Donation Agent.
  5. Cliquez sur Continuer.
  6. Cliquez sur Créer un data store.
  7. Sélectionnez Cloud Storage comme source de données pour votre datastore.
  8. Spécifiez le dossier Google Cloud Storage suivant, qui contient des exemples de données pour cet atelier de programmation, et notez que le préfixe gs:// n'est pas obligatoire:
    cloud-samples-data/dialogflow-cx/arc-lifeblood
    
  9. Sélectionnez Documents non structurés comme type de données à importer.
  10. Cliquez sur Continuer.
  11. Dans le champ Nom du data store, saisissez Australian Red Cross Lifeblood Unstructured.
  12. Cliquez sur Créer pour créer le data store.
  13. Dans la liste des data stores, sélectionnez le Australian Red Cross Lifeblood Unstructured que vous venez de créer.
  14. Cliquez sur Créer pour créer votre application de chat.

Félicitations ! Vous avez terminé de créer votre application de chat alimentée par les connaissances, qui est prête à aider les donateurs potentiels, alors prenez un moment pour célébrer votre réussite !

Toutefois, il reste encore beaucoup à faire pour rendre l'agent accessible à vos utilisateurs. Dans la section suivante, vous allez utiliser un gestionnaire de connaissances pour permettre les conversations entre l'agent et les utilisateurs finaux sur les critères d'éligibilité.

4. Configurer l'agent pour répondre aux questions fréquentes sur l'éligibilité au sang

Fournir l'invite de date du magasin

Pendant que le processus de collecte de documents s'exécute en arrière-plan, attribuons une marque à l'agent en modifiant l'invite du data store.

  1. Dans la console Vertex AI Conversation, cliquez sur le nom de votre application de chat. Vous serez alors redirigé vers la console Dialogflow CX pour effectuer d'autres tests et personnalisations.
  2. Dans la console Dialogflow CX et à partir de votre agent, cliquez sur Agent settings (Paramètres de l'agent) en haut à droite de la page, accédez à l'onglet ML, puis ouvrez l'onglet Generative AI (IA générative).

Accéder à l'invite de data store

  1. Remplissez le formulaire ci-dessous pour générer l'invite de data store suivante: votre nom est Donate, et vous êtes un chatbot serviable et courtois chez Save a life, a fictitious organization. Votre tâche consiste à aider humans with eligibility information.

Remplissez le formulaire pour générer votre requête

Activer le remplacement génératif pour l'événement de non-correspondance du flux de démarrage par défaut

  1. Accédez à l'onglet Build (Compiler) et ouvrez la page d'accueil.
  2. Cliquez sur le gestionnaire d'événements sys.no-match-default. Activez la fonctionnalité de remplacement génératif, sauf si la case est déjà cochée.

Activer le remplacement génératif en cas d'absence de correspondance du flux

Vérifier le data store de l'agent

Sur la page d'accueil, cliquez sur Modifier les datastores pour accéder aux paramètres du datastore.

Modifier les data stores

Le data store que vous avez créé précédemment a déjà été sélectionné pour vous par Dialogflow.

Associer le data store que vous avez créé

Faites défiler la page jusqu'à Réponses de l'agent sous Fulfillment. Un fulfillment est la réponse de l'agent à l'utilisateur final. Dialogflow a prérempli le champ L'agent dit avec le paramètre $request.knowledge.answers[0], qui au moment de l'exécution contient la première réponse à la question de l'utilisateur.

La réponse de l'agent contient la première réponse à la question de l'utilisateur

5. Tester l'agent

Une fois que les documents sont disponibles et prêts à être utilisés par votre agent, vérifiez à quel point les réponses sont pertinentes.

Cliquez sur Tester l'agent pour rouvrir le simulateur.

Tester de nouveau l'agent

Posez les questions que vous vous attendez à trouver sur la page FAQ du site Web:

  • What age do I need to be to donate?
  • Can pregnant women donate?
  • I've just come back from a trip to Africa. Can I donate?
  • How can I schedule an appointment?

Les réponses de vérification proviennent de la base de connaissances

Notez que les réponses proviennent du site australien de la Croix-Rouge australienne sur Lifeblood. Comme indiqué sur cette page, des âges minimal et maximal s'appliquent aux dons de sang. L'âge minimum est de 18 ans et l'âge maximum est de 75 ans pour les nouveaux donateurs. Une autre preuve du fait que nous extrayons des informations du data store est fournie par la petite icône en forme d'étoile apparaissant sur la réponse de l'agent et par la réponse JSON d'origine.

Inspecter la réponse JSON d'origine

Enfin, essayons de poser une question sans rapport avec le don du sang à l'agent.

Utilisateur : "Quel temps fait-il à Melbourne ?"

Agent : "Je suis désolé, je ne peux pas vous aider à ce sujet. Que puis-je faire pour vous aider concernant les informations d'éligibilité ?"

Cette réponse contient du contenu généré par IA et provient de la requête textuelle que Dialogflow a créée à partir du paramètre de connecteur de connaissances fourni précédemment : "Vous vous appelez Donate, et vous êtes un chatbot serviable et poli chez Save a Life. Votre tâche consiste à aider des êtres humains à obtenir les informations d'éligibilité. Cette requête textuelle contient le nom de l'entreprise, le nom de l'agent et surtout, le champ d'application utilisé par Dialogflow pour générer la réponse de l'agent.

Bravo ! Jusqu'à présent, vous utilisez le magasin de données pour aider les personnes à répondre aux questions fréquentes sur le don du sang. Dans la prochaine partie de l'atelier de programmation, nous verrons comment lier une requête de texte d'un générateur au même contenu afin de prendre des décisions éclairées.

6. Configurer l'agent pour le questionnaire d'éligibilité

La tâche suivante consiste à concevoir l'agent pour déterminer si l'utilisateur est autorisé à donner son sang. Les donateurs doivent respecter des exigences strictes, telles que l'âge, le poids, les conditions existantes, les derniers voyages, etc. Dans le cadre de cet atelier de programmation, nous ne prendrons en compte que l'âge et le poids. Un générateur utilise les grands modèles de langage (LLM) de Google pour prendre des décisions éclairées de manière dynamique, en fonction du contexte de la conversation et de la base de connaissances.

Configurer de nouveaux paramètres et routes

  1. Ouvrez la page d'accueil et cliquez sur Modifier les data stores.
  2. Remplacez la réponse de l'agent existant par $request.knowledge.answers[0] Would you like to take the eligibility quiz to find out if you can donate blood, and start changing lives?.

Enrichir la réponse de l'agent aux questions fréquentes de l'utilisateur

  1. Cliquez sur le bouton Enregistrer.
  2. Nous devons maintenant concevoir l'agent pour gérer "yes" (oui). et "non" des réponses. Pour commencer, créez un intent confirmation.yes et un intent confirmation.no. Suivez ces consignes concernant la réutilisation de l'intent.
  3. Ensuite, sur la page d'accueil, créez une route pour l'intent confirmation.yes qui passe à une nouvelle page Quiz d'éligibilité.

Créer une route pour l'intent confirmation.yes

Lorsque confirmation.yes est déclenchée pour passer au quiz d'éligibilité sur une nouvelle page.

  1. Comme indiqué précédemment, nous allons simplifier le questionnaire et prendre en compte uniquement l'âge et le poids de l'utilisateur pour déterminer s'il peut faire un don ou non. Ouvrez la page Quiz d'éligibilité, ajoutez un nouveau paramètre de formulaire age-weight et sélectionnez @sys.any comme type d'entité. Indiquez "What is your age and weight?" comme traitement initial de la requête. Nous souhaitons recueillir à la fois l'âge et le poids. Enregistrez toutes les modifications.

Créer un paramètre

Créer et configurer le générateur d'éligibilité

La fonctionnalité générateur est une fonctionnalité Dialogflow CX qui permet aux développeurs d'utiliser les derniers grands modèles de langage (LLM) génératifs de Google pendant le fulfillment Dialogflow CX. Générateurs permettant de générer des réponses de l'agent au moment de l'exécution Un générateur peut gérer des réponses génériques impliquant des connaissances générales à partir d'un grand ensemble de données textuels sur lesquels il a été entraîné ou du contexte de la conversation.

Nous allons créer un nouveau générateur qui comparera les informations fournies par l’utilisateur (comme son âge et son poids) aux critères d’éligibilité pour déterminer si l’utilisateur peut faire un don.

  1. Dans la console Dialogflow CX, accédez à l'onglet Gérer, sélectionnez Generators, puis cliquez sur Create new (Créer).

Créer un générateur

  1. Ensuite, indiquez un nom à afficher descriptif et rédigez la requête textuelle. Conservez les paramètres de contrôle de la qualité du modèle par défaut. Cliquez ensuite sur Save (Enregistrer) pour créer le générateur.
    • Nom à afficher : Blood Donation Eligibility
    • Requête textuelle: Check the users eligibility against the following criteria: the minimum age is 18 and the maximum age is 75. Weight should be above 50 Kg. The user age and weight is $last-user-utterance. Be nice and tell the user if they are eligible to donate (also tell them why not in case)

La requête textuelle est envoyée au modèle génératif lors du fulfillment au moment de l'exécution. La question ou la demande doit être claire pour que le modèle génère une réponse satisfaisante. Vous pouvez utiliser des espaces réservés spéciaux de générateur intégré dans votre requête textuelle:

  • $conversation : conversation entre l'agent et l'utilisateur, à l'exclusion du tout dernier énoncé de l'utilisateur.
  • $last-user-utterance Dernier énoncé de l'utilisateur.

La requête textuelle que vous avez configurée s'attend à ce que l'utilisateur fournisse son âge et son poids lors d'un tour de conversation (le "$last-user-utterance").

Utiliser le générateur dans le fulfillment et configurer tous les paramètres requis

  1. Sur la page Quiz d'éligibilité, ajoutez une route qui se produira lorsque tous les paramètres auront été renseignés. Saisissez la condition requise $page.params.status = "FINAL", puis cliquez sur Enregistrer.

Ajoute un nouvel itinéraire qui se produira lorsque tous les paramètres auront été renseignés

  1. Accédez à la section Generators (Générateurs) du volet Fulfillment et développez-la. Ensuite, cliquez sur Add generator (Ajouter un générateur) et sélectionnez le générateur Éligibilité aux dons de sang. Après avoir sélectionné le générateur, vous devez définir le paramètre de sortie qui contiendra le résultat du générateur après l'exécution.

Sélectionnez le générateur "Éligibilité aux dons de sang", associez des espaces réservés d'invites aux paramètres de session et définissez le paramètre de sortie.

  1. Utilisez le paramètre de sortie dans la réponse de l'agent et enregistrez la route. Vous êtes maintenant prêt à tout tester.

Utiliser le paramètre de sortie dans la réponse de l'agent

7. Tester de nouveau l'agent

Cliquez sur Tester l'agent pour rouvrir le simulateur.

Tester de nouveau l'agent

Dans le simulateur, démarrez une nouvelle conversation avec l'agent. Renseignez-vous d'abord sur les critères d'âge, puis passez au questionnaire d'éligibilité. Tester les éléments "éligibles" chemin d'accès. Saisissez donc un âge compris entre 18 et 75 ans et un poids supérieur à 50 kg.

Chemin éligible

Vérifiez ensuite l'éligibilité si l'une des conditions ou les deux ne sont pas remplies.

Chemin non éligible

Parfait, le générateur fonctionne comme prévu ! Ou est-ce bien le cas ? Que se passe-t-il si l'utilisateur fournit l'âge mais pas le poids (ou inversement) ?

Indiquez l'âge, mais pas le poids

8. Réglage des invites de générateurs

Pour que la collecte de l'âge et du poids ait été effectuée auparavant, cela ne semble pas fonctionner, sauf si ces informations sont renseignées. Nous devons plutôt créer un formulaire qui collecte les deux valeurs en tant que paramètres d'entité. Pour que l'invite contextualise tous les critères d'éligibilité (tels que l'âge et le poids), nous pouvons utiliser des espaces réservés en ajoutant un $ avant le mot. Plus tard, nous associerons ces espaces réservés d'invites de générateur aux paramètres de session dans le fulfillment. Ils seront remplacés par les valeurs des paramètres de session lors de l'exécution.

  1. Ouvrez la page Quiz d'éligibilité et ajoutez deux paramètres de formulaire distincts: un pour le poids et un pour l'âge. Choisissez @sys.number-integer comme type d'entité et marquez les paramètres comme obligatoires. Fournissez les traitements de requête initiaux tels que How old are you? et What is your correct weight?. Enregistrez toutes les modifications.

Formulaire d'éligibilité

  1. Avant de pouvoir modifier la requête de texte du générateur, puisque nous allons ajouter deux nouveaux espaces réservés personnalisés, nous devons d'abord supprimer le générateur du traitement de la route. Cliquez sur Enregistrer.

Retirer le générateur

  1. Accédez à l'onglet Gérer, sélectionnez Generators, puis remplacez la requête textuelle du générateur Éligibilité aux dons de sang par: Check the users eligibility against the following criteria: the minimum age is 18 and the maximum age is 75. The weight must be at least 50 kg. The user is $age years old and weighs $weight Kg. Craft an email and politely explain to the user if they're eligible to donate and if not why.. Cliquez sur Enregistrer.

Notez que nous n'avons pas simplement rendu l'invite textuelle contextuelle des paramètres du formulaire d'âge et de poids, nous avons également modifié la dernière phrase pour pouvoir générer un e-mail formel à l'attention de l'utilisateur contenant le résultat officiel du questionnaire d'éligibilité.

Reconfigurer la requête textuelle

  1. Sur la page Quiz d'éligibilité, sélectionnez la route et développez la section Generators (Générateurs) du volet Fulfillment. Ensuite, cliquez sur Ajouter un générateur et sélectionnez le générateur d'éligibilité aux dons de sang. Après avoir sélectionné le générateur, vous devez associer les nouveaux espaces réservés d'invites aux paramètres de session correspondants. De plus, vous devez redéfinir le paramètre de sortie. Cliquez sur Enregistrer.

Mettre à jour les liaisons du générateur

  1. Testez à nouveau l'agent. La vérification d'éligibilité prend désormais en compte à la fois l'âge et le poids, et la formulation est passée d'un ton conversationnel à une réponse plus polie, prête à être envoyée sans intervention humaine potentielle.

E-mail indiquant que l'utilisateur n'est pas éligible

E-mail indiquant que l'utilisateur est éligible

9. Félicitations

Bravo ! Vous avez terminé cet atelier de programmation.

Bravo ! Vous avez terminé cet atelier de programmation.

Aujourd'hui, nous nous sommes intéressés aux générateurs dans le cadre de questionnaires d'éligibilité. Vous avez vu que les générateurs utilisent les LLM pour générer des réponses d'agents. Lorsqu'ils sont alimentés par une base de connaissances, ils peuvent également prendre des décisions éclairées. Il existe bien d'autres cas d'utilisation qui peuvent être implémentés en exploitant des générateurs et des data stores, et nous sommes impatients de les découvrir !

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:

En savoir plus

Poursuivez votre apprentissage sur l'IA conversationnelle et l'IA générative grâce à ces guides et ressources:

Licence

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