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 :
- Dans votre navigateur, accédez à la page Détails de l'API/du service Dialogflow.
- 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 :
- Dans la console Google Cloud, accédez à la console Vertex AI Search and Conversation.
- 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.
- Pour créer une application de chat dans Vertex AI Conversation, vous pouvez :
- Accédez à la console Vertex AI Conversation, puis cliquez sur + Nouvelle application en haut de la console.
- 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.
- Dans la console Vertex AI Conversation, sélectionnez Chat comme type d'application à créer.
- Indiquez
Save a Lifepour le nom de l'entreprise. Ce paramètre permet de définir l'entreprise que votre agent représente et son champ d'application. - Spécifiez un nom d'agent de
Blood Donation Agent. - Cliquez sur Continuer.
- Cliquez sur Créer un data store.
- Sélectionnez Cloud Storage comme source de données pour votre data store.
- 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 - Sélectionnez Documents non structurés comme type de données à importer.
- Cliquez sur Continuer.
- Spécifiez le nom du data store sur
Australian Red Cross Lifeblood Unstructured. - Cliquez sur Créer pour créer le datastore.
- Dans la liste des data stores, sélectionnez le
Australian Red Cross Lifeblood Unstructuredque vous venez de créer. - 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.
- 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.
- 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.

- Remplissez le formulaire comme indiqué ci-dessous pour générer le prompt de data store suivant : Ton nom est
Donate, et tu es unchatbotserviable et poli deSave a life, a fictitious organization. Ta tâche est d'aiderhumans with eligibility information.

Activer le remplacement génératif pour l'événement "no-match" du flux de démarrage par défaut
- Passez à l'onglet Build (Créer) et ouvrez la Start Page (Page de démarrage).
- 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.

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.

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

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.

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.

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?

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.

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
- Ouvrez la page de démarrage et cliquez sur Modifier les data stores.
- 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?.

- Cliquez sur le bouton Enregistrer.
- 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.
- 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é).


- 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.anycomme 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 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.
- Dans la console Dialogflow CX, accédez à l'onglet Manage (Gérer), sélectionnez Generators (Générateurs), puis cliquez sur Create (Créer).

- 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)
- Nom à afficher :
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.
- 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.

- 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.

- 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.

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

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.

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

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) ?

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.
- 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-integercomme type d'entité et marquez les paramètres requis. Fournissez les fulfillments du prompt initial, tels queHow old are you?etWhat is your correct weight?. Enregistrez toutes les modifications.

- 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.

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

- 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.

- 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.


9. Félicitations
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 :
- Documentation Dialogflow CX
- Présentation de Vertex AI Conversation
- Créer et utiliser un agent de data store
- Documentation sur Vertex AI Conversation
- L'IA générative dans Google Cloud
Licence
Ce document est publié sous une licence Creative Commons Attribution 2.0 Generic.