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 s'assurer qu'elles remplissent les 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 lors du fulfillment Dialogflow CX.

Fonctionnalités que vous utiliserez

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

Agents de datastore

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

Grâce à cette fonctionnalité, vous fournissez une URL de site Web, des données structurées ou des données non structurées (datastores). Google analyse ensuite votre contenu et crée un agent virtuel alimenté par des datastores et de grands modèles de langage. Vos clients et utilisateurs finaux peuvent alors discuter avec l'agent et lui poser des questions sur le contenu. Pour en savoir plus sur ce type d'agent, consultez la présentation de Vertex AI Conversation.

Générateurs

Un 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 et des prompts personnalisés pour générer des réponses d'agent au moment de l'exécution. Un générateur peut gérer les réponses génériques qui impliquent des connaissances générales issues d'un grand ensemble de données textuelles sur lequel il a été entraîné ou du contexte de la conversation.

Remplacement génératif

La fonctionnalité 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 de remplissage de formulaire. La fonctionnalité peut être configurée avec un prompt textuel qui indique au LLM comment répondre. Vous pouvez utiliser un prompt textuel prédéfini ou ajouter vos propres prompts. 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. Si vous souhaitez en savoir plus sur le fallback génératif, essayez cet atelier de programmation.

Points abordés

  • Créer un agent de datastore à partir de données non structurées
  • Découvrez comment utiliser des gestionnaires de connaissances pour permettre aux utilisateurs finaux de discuter avec un agent virtuel du contenu ajouté à un datastore.
  • Découvrez comment configurer un prompt textuel de générateur et le contextualiser à l'aide d'espaces réservés de prompt de générateur intégrés.
  • Marquer des mots comme espaces réservés de prompt de générateur, puis les associer à des paramètres de session dans le fulfillment pour utiliser leurs valeurs lors de l'exécution
  • Découvrez comment configurer un générateur pour qu'il gère les réponses qui impliquent des connaissances issues d'un grand ensemble de données textuelles et du contexte de la conversation en cours.
  • Générer un e-mail formel à l'aide de générateurs
  • Tester votre agent et simuler des questions de clients 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

Pour pouvoir créer un agent de data store dans Vertex AI Conversation, vous devez activer les API Dialogflow, Vertex AI Search et Conversation.

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

  1. Dans votre navigateur, accédez à la page Détails de l'API/du service 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 datastore 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 don de sang. Vous utiliserez l'Australian Red Cross Lifeblood comme source de vérité et vous créerez un datastore basé sur des données non structurées provenant du site Web sur l'éligibilité au don de 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 à créer.
  3. Indiquez Save a Life pour le nom de l'entreprise. Ce paramètre permet de définir l'entreprise que votre agent représente et son champ d'application.
  4. Spécifiez un nom d'agent de 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 data store.
  8. Spécifiez le dossier Google Cloud Storage suivant, qui contient des exemples de données pour cet atelier de programmation. 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. Spécifiez le nom du data store sur Australian Red Cross Lifeblood Unstructured.
  12. Cliquez sur Créer pour créer le datastore.
  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 basée sur les connaissances, qui est prête à aider les donneurs potentiels. Prenez donc le temps de célébrer votre réussite.

Toutefois, il reste encore du travail avant que l'agent soit accessible à vos utilisateurs. Dans la section suivante, vous allez utiliser un gestionnaire de connaissances pour permettre à l'agent et aux utilisateurs finaux de discuter des critères d'éligibilité.

4. Configurer l'agent pour qu'il réponde aux questions fréquentes sur l'éligibilité au don de sang

Indiquer le prompt de datastore

Pendant que le processus de collecte de documents s'exécute en arrière-plan, donnons une marque à l'agent en modifiant le prompt de datastore.

  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, ouvrez votre agent, cliquez sur Paramètres de l'agent (en haut à droite de la page), puis accédez à l'onglet ML et enfin à l'onglet IA générative.

Accéder au prompt de datastore

  1. Remplissez le formulaire comme indiqué ci-dessous pour générer le prompt de data store suivant : Ton nom est Donate, et tu es un chatbot serviable et poli de Save a life, a fictitious organization. Ta tâche est d'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 "no-match" du flux de démarrage par défaut

  1. Passez à l'onglet Build (Créer) et ouvrez la Start Page (Page de démarrage).
  2. Cliquez sur le gestionnaire d'événements sys.no-match-default. Si la case n'est pas déjà cochée, activez la fonctionnalité de remplacement génératif.

Activer le remplacement génératif pour les événements "no-match" de flux

Vérifier le datastore de l'agent

Sur la page d'accueil, cliquez sur Modifier les data stores pour examiner les paramètres des data stores.

Modifier les datastores

Le datastore 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 jusqu'à Agent Responses (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 contient la meilleure réponse à la question de l'utilisateur au moment de l'exécution.

La réponse de l'agent contient la meilleure 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 la qualité des réponses.

Cliquez sur Test Agent (Tester l'agent) pour rouvrir le simulateur.

Tester l'agent à nouveau

Posez des questions auxquelles vous vous attendez à trouver des réponses sur la page de questions fréquentes 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?

Vérifier que les réponses proviennent de la base de connaissances

Notez que les réponses sont extraites du site Australian Red Cross Lifeblood. Comme indiqué sur cette page, il existe un âge minimal et maximal pour le don de sang. L'âge minimal est de 18 ans et l'âge maximal est de 75 ans pour les nouveaux donateurs. L'icône en forme d'étoile qui s'affiche dans la réponse de l'agent et dans la réponse JSON d'origine prouve que nous extrayons des informations du data store.

Inspecter la réponse JSON d'origine

Enfin, essayons de mettre l'agent au défi en lui posant une question sans aucun rapport avec le don de sang.

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

Agent : "Désolé, je ne peux pas vous aider à ce sujet. Comment puis-je vous aider à obtenir des informations sur l'éligibilité ?"

Cette réponse contient du contenu généré par l'IA. Elle est dérivée du prompt textuel que Dialogflow a créé à partir du paramètre de connecteur de connaissances fourni précédemment : "Your name is Donate, and you are a helpful and polite chatbot at Save a Life. Your task is to assist humans with eligibility information". (Ton nom est "Donner", et tu es un chatbot serviable et poli de Save a Life. Ta tâche consiste à aider les utilisateurs à obtenir des informations sur l'éligibilité.). Ce prompt textuel contient le nom de l'entreprise, le nom de l'agent et, surtout, son champ d'application, dont se sert Dialogflow pour générer la réponse de l'agent.

Bravo ! Jusqu'à présent, vous utilisez le datastore pour aider les utilisateurs à répondre aux questions fréquentes sur le don de sang. Dans la suite de l'atelier, nous allons voir comment associer un prompt textuel de générateur au même contenu pour prendre des décisions éclairées.

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

Notre prochaine tâche consiste à concevoir l'agent pour déterminer si l'utilisateur est éligible au don de sang. Les donneurs doivent remplir des critères stricts concernant l'âge, le poids, les pathologies existantes, les voyages récents, etc. Dans cet atelier, nous ne tiendrons compte que de l'âge et du poids. Un générateur utilisera 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 nouvelles routes et de nouveaux paramètres

  1. Ouvrez la page de démarrage et cliquez sur Modifier les data stores.
  2. Modifiez la réponse de l'agent existant en $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 à la question fréquente de l'utilisateur

  1. Cliquez sur le bouton Enregistrer.
  2. Nous devons maintenant concevoir l'agent pour qu'il gère les réponses "oui" et "non". Pour commencer, créez un intent confirmation.yes et un intent confirmation.no. Suivez ces consignes concernant la réutilisation des intentions.
  3. Ensuite, sur la page de démarrage, créez un itinéraire pour l'intention confirmation.yes qui passe à une nouvelle page Eligibility Quiz (Questionnaire d'éligibilité).

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

Lorsque confirmation.yes est déclenché, la transition vers une nouvelle page (le quiz d'éligibilité) a lieu.

  1. Comme mentionné précédemment, nous allons simplifier le quiz et ne considérer que l'âge et le poids de l'utilisateur pour déterminer s'il est éligible au don. Ouvrez la page Eligibility Quiz (Questionnaire d'éligibilité) et ajoutez un paramètre de formulaire age-weight. Choisissez @sys.any comme type d'entité. Fournissez "What is your age and weight?" en tant que fulfillment du prompt initial. Nous voulons collecter l'âge et le poids en une seule fois. Enregistrez toutes les modifications.

Créer un paramètre

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

Un 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 lors du fulfillment Dialogflow CX. Il permet de générer des réponses d'agent au moment de l'exécution. Un générateur peut gérer les réponses génériques qui impliquent des connaissances générales issues d'un grand ensemble de données textuelles sur lequel il a été entraîné ou du contexte de la conversation.

Nous allons créer un 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 s'il peut donner son sang.

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

Créer un générateur

  1. Ensuite, saisissez un nom à afficher descriptif et rédigez le prompt textuel. Conservez les paramètres de contrôle 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)

Le prompt textuel est envoyé au modèle génératif lors du fulfillment au moment de l'exécution. Il doit s'agir d'une question ou d'une demande claire pour que le modèle puisse générer une réponse satisfaisante. Vous pouvez utiliser des espaces réservés de prompt de générateur intégrés dans votre prompt textuel :

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

Le prompt textuel que vous avez configuré attend de l'utilisateur qu'il indique son âge et son poids en un seul tour de conversation (le `$last-user-utterance`).

Utilisez le générateur dans le fulfillment et configurez tous les paramètres requis.

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

Ajoutez un itinéraire qui se déclenchera lorsque tous les paramètres auront été renseignés.

  1. Accédez à la section Generators (Générateurs) du volet Fulfillment (Traitement), puis développez-la. Cliquez ensuite sur Add generator (Ajouter un générateur), puis sélectionnez le générateur Blood Donation Eligibility (Éligibilité au don de sang). Une fois que vous avez 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é au don de sang", associez les espaces réservés de prompt 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 l'itinéraire. Vous êtes maintenant prêt à tout tester.

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

7. Retester votre agent

Cliquez sur Test Agent (Tester l'agent) pour rouvrir le simulateur.

Tester l'agent à nouveau

Dans le simulateur, démarrez une nouvelle conversation avec l'agent. Commencez par poser des questions sur les conditions d'âge, puis passez au quiz d'éligibilité. Testez d'abord le chemin "éligible". Pour cela, saisissez un âge compris entre 18 et 75 ans et un poids supérieur à 50 kg.

Chemin éligible

Vérifiez ensuite que la vérification de l'éligibilité échoue si l'un ou les deux critères ne sont pas remplis.

Chemin d'accès non éligible

Super, le générateur fonctionne comme prévu. Vraiment ? Que se passe-t-il si l'utilisateur indique son âge, mais pas son poids (ou inversement) ?

Indiquer l'âge, mais pas le poids

8. Réglage du prompt du générateur

La collecte de l'âge et du poids en une seule fois ne semble pas fonctionner, sauf si les deux informations sont fournies. Nous devons plutôt créer un formulaire qui collecte les deux valeurs en tant que paramètres d'entité. Pour contextualiser le prompt par rapport à toutes les critères d'éligibilité (comme l'âge et le poids), nous pouvons utiliser des espaces réservés en ajoutant un $ avant le mot. Nous associerons ultérieurement ces espaces réservés de prompt de générateur à des 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 Eligibility Quiz (Questionnaire d'éligibilité) et ajoutez deux paramètres de formulaire distincts : un pour le poids et un pour l'âge. Sélectionnez @sys.number-integer comme type d'entité et marquez les paramètres requis. Fournissez les fulfillments du prompt initial, tels que How old are you? et What is your correct weight?. Enregistrez toutes les modifications.

Formulaire d'éligibilité

  1. Avant de pouvoir modifier le prompt textuel du générateur pour ajouter deux nouveaux espaces réservés personnalisés, nous devons d'abord supprimer le générateur de la réponse à la route. Cliquez sur Enregistrer.

Supprimer le générateur

  1. Accédez à l'onglet Manage (Gérer), sélectionnez Generators (Générateurs), puis modifiez le prompt textuel du générateur Blood Donation Eligibility (Éligibilité au don de sang) comme suit : 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 seulement contextualisé le prompt textuel en fonction des paramètres de formulaire d'âge et de poids. Nous avons également modifié la dernière phrase pour pouvoir générer un e-mail formel destiné à l'utilisateur, qui contient le résultat officiel du questionnaire d'éligibilité.

Reconfigurer la requête textuelle

  1. Sur la page Eligibility Quiz (Questionnaire d'éligibilité), sélectionnez la route et développez la section Generators (Générateurs) du volet Fulfillment. Cliquez ensuite sur Add generator (Ajouter un générateur), puis sélectionnez le générateur "Blood Donation Eligibility" (Éligibilité au don de sang). Une fois que vous avez sélectionné le générateur, vous devez associer les nouveaux espaces réservés de prompt 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. Retestez l'agent. La vérification de l'éligibilité tient désormais compte de l'âge et du poids. La formulation est passée d'un ton conversationnel à une réponse plus polie, prête à être envoyée sans aucune intervention humaine potentielle.

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

E-mail indiquant que l'utilisateur est éligible

9. Félicitations

Vous avez terminé cet atelier de programmation.

Bravo ! Vous avez terminé cet atelier de programmation.

Aujourd'hui, nous avons étudié les générateurs dans le contexte de questionnaires d'éligibilité. Vous avez vu que les générateurs utilisent des LLM pour générer des réponses d'agent et que, lorsqu'ils sont alimentés par une base de connaissances, ils peuvent également prendre des décisions éclairées. Il existe certainement de nombreux autres cas d'utilisation qui peuvent être implémentés à l'aide de générateurs et de datastores. Nous avons hâte de les découvrir !

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 :

  • Pour éviter d'encourir des frais inutiles liés à Google Cloud, supprimez votre projet à l'aide de la console Google Cloud si vous n'en avez plus besoin.
  • Si vous avez utilisé un projet Google Cloud existant, supprimez les ressources que vous avez créées pour éviter que des frais ne soient facturés sur votre compte. Pour en savoir plus, consultez la procédure Supprimer une application.
  • Si vous souhaitez désactiver les API Vertex AI Conversation et Dialogflow, accédez à la page Détails de l'API Discovery Engine, cliquez sur Désactiver l'API et confirmez, puis accédez à la page Détails de l'API Dialogflow, cliquez sur Désactiver l'API et confirmez.

En savoir plus

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.