1. Présentation
Dans le secteur du commerce de détail actuel, où le rythme est effréné, il est essentiel de proposer un service client exceptionnel tout en offrant des expériences d'achat personnalisées. Nous vous guiderons dans un parcours technique visant à créer une application de chat basée sur les connaissances, conçue pour répondre aux questions des clients, faciliter la découverte de produits et personnaliser les résultats de recherche. Cette solution innovante combine la puissance d'AlloyDB pour le stockage des données, un moteur d'analyse interne pour la compréhension contextuelle, Gemini (Large Language Model) pour la validation de la pertinence et l'Agent Builder de Google pour démarrer rapidement un assistant conversationnel intelligent.
Défi : les clients modernes s'attendent à des réponses instantanées et à des recommandations de produits adaptées à leurs préférences uniques. Les méthodes de recherche traditionnelles ne permettent souvent pas d'offrir ce niveau de personnalisation.
La solution:notre application de chat basée sur les connaissances permet de relever ce défi. Il s'appuie sur une base de connaissances riche issue de vos données retail pour comprendre l'intention des clients, y répondre intelligemment et fournir des résultats hyper pertinents.
Ce que vous allez faire
Au cours de cet atelier (partie 2), vous allez :
- Créer un agent Vertex AI Agent Builder
- Intégrer l'outil AlloyDB à l'agent
Conditions requises
2. Architecture
Flux de données: examinons de plus près comment les données transitent par notre système:
Ingestion :
Les données de vente au détail (inventaire, descriptions des produits, interactions avec les clients) sont chargées en continu dans AlloyDB.
Moteur Analytics :
Nous utiliserons AlloyDB comme moteur d'analyse pour effectuer les opérations suivantes:
- Extraction de contexte : le moteur analyse les données stockées dans AlloyDB pour comprendre les relations entre les produits, les catégories, le comportement des clients, etc., le cas échéant.
- Création de représentations vectorielles continues: des représentations vectorielles continues (représentations mathématiques du texte) sont générées à la fois pour la requête de l'utilisateur et pour les informations stockées dans AlloyDB.
- Recherche vectorielle : le moteur effectue une recherche de similarité en comparant l'embedding de la requête aux embeddings des descriptions de produits, des avis et d'autres données pertinentes. Cela permet d'identifier les 25 « voix les plus proches » les plus pertinents.
Validation Gemini:
Ces réponses potentielles sont envoyées à Gemini pour évaluation. Gemini détermine si elles sont vraiment pertinentes et si elles peuvent être partagées en toute sécurité avec l'utilisateur.
Génération de réponses :
Les réponses validées sont structurées dans un tableau JSON, et l'ensemble du moteur est empaqueté dans une fonction Cloud Run sans serveur appelée à partir d'Agent Builder.
Les étapes ci-dessus ont déjà été abordées dans la partie 1 de l'atelier.
Nous avons abordé les détails techniques de la création d'un moteur d'analyse basé sur les connaissances qui alimente notre assistant d'achats intelligents. Voyons maintenant comment tirer parti de la magie d'Agent Builder pour donner vie à ce moteur dans une interface de conversation. Assurez-vous de disposer de l'URL du point de terminaison avant de commencer la deuxième partie. C'est ce que nous allons aborder dans cet atelier :
Interaction conversationnelle:
L'outil de création d'agents présente les réponses à l'utilisateur dans un format de langage naturel, ce qui facilite le dialogue.
3. Avant de commencer
Créer un projet
- Dans la console Google Cloud, sur la page du sélecteur de projet, sélectionnez ou créez un projet Google Cloud.
- Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet .
- Vous allez utiliser Cloud Shell, un environnement de ligne de commande exécuté dans Google Cloud et doté de bq. Cliquez sur "Activer Cloud Shell" en haut de la console Google Cloud.
- Une fois connecté à Cloud Shell, vérifiez que vous êtes déjà authentifié et que le projet est défini avec votre ID de projet à l'aide de la commande suivante :
gcloud auth list
- Exécutez la commande suivante dans Cloud Shell pour vérifier que la commande gcloud connaît votre projet.
gcloud config list project
- Si votre projet n'est pas défini, utilisez la commande suivante pour le définir :
gcloud config set project <YOUR_PROJECT_ID>
- Activer les API requises. L'alternative à la commande gcloud consiste à passer par la console, en recherchant chaque produit ou en cliquant sur ce lien.
Si une API est manquante, vous pouvez toujours l'activer au cours de l'implémentation.
Consultez la documentation pour connaître les commandes gcloud ainsi que leur utilisation.
Remarque importante:Veillez également à suivre la PARTIE 1 de l'atelier pour pouvoir le terminer.
4. Création d'un agent
Présentation d'Agent Builder
Agent Builder est un outil puissant et low-code qui nous permet de créer des agents conversationnels rapidement et efficacement. Il simplifie le processus de conception des flux de discussion, d'intégration des bases de connaissances et de connexion aux API externes. Dans notre cas, nous allons utiliser Agent Builder pour nous connecter facilement au point de terminaison de la fonction Cloud que nous avons créé dans la partie 1. Notre assistant d'achat pourra ainsi accéder à notre base de connaissances sur le commerce et répondre intelligemment aux requêtes des clients.
Créer l'agent
Commençons par créer cet agent pour répondre aux questions des utilisateurs sur les produits textiles.
- Commencez par vous connecter à la plate-forme Agent Builder. Si vous êtes invité à activer l'API, cliquez sur CONTINUER ET ACTIVER L'API.
- Cliquez sur "CRÉER UNE APPLICATION" et attribuez un nom descriptif à votre agent (par exemple, "Assistant Shopping au détail").
- Cliquez sur le type d'application "Agent".
- Attribuez un nom descriptif à votre agent, par exemple "Assistant d'achat en magasin", et définissez la région sur "us-central1".
- Saisissez les informations concernant l'agent:
- Remplacez le nom de l'agent par "Retail Shopping Agent".
- Ajoutez l'objectif ci-dessous :
You are a shopping assistant agent! Your job is to help the customer search for their ideal apparels, allow them to add items to their cart, remove items from their cart, and review items in their cart. Once a user is done searching, open the search results in a user friendly html page.
- Enregistrez-la à ce stade et laissez les instructions vides pour le moment.
- Cliquez ensuite sur Outils dans le menu de navigation, puis sur CRÉER.
Nom de l'outil : Retail Shopping Tool
Saisissez une description de l'outil :
This tool refers to the dataset in the backend as the context information for product inventory. It takes as input the user's search text summarized by the agent and matches with the most appropriate list of items and returns as an array of items.
Saisissez le schéma "OpenAPI" au format YAML:
C'est dans cette partie que nous utilisons le point de terminaison du backend pour alimenter l'agent. Copiez la spécification OpenAPI ci-dessous et remplacez l'espace réservé d'URL (entre chevrons) par le point de terminaison de votre fonction Cloud:
openapi: 3.0.0
info:
title: AlloyDB Product Matcher
description: A Cloud Function to query AlloyDB for product matches based on user search text.
version: 1.0.0
servers:
- url: <<https://us-central1-YOUR_PROJECT_ID.cloudfunctions.net/alloy-gem>>
paths:
/:
post:
summary: Find matching products based on search text.
operationId: apparelSearch
requestBody:
description: JSON object containing the search text.
required: true
content:
application/json:
schema:
type: object
properties:
search:
type: string
description: The user's search query for product matching.
responses:
'200':
description: Successful response with a JSON array of matching products.
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: string
description: Product ID.
category:
type: string
description: Product category.
sub_category:
type: string
description: Product sub-category.
uri:
type: string
description: Product URI or URL.
description:
type: string
description: Product description.
literature:
type: object
description: JSON object containing match information from the ML model.
properties:
MATCH:
type: string
description: Whether the product matches the search query (YES/NO).
PERCENTAGE:
type: string
description: Percentage of match.
DIFFERENCE:
type: string
description: Description of differences between the search and product.
'500':
description: Internal server error.
Conservez les valeurs par défaut des autres configurations, puis cliquez sur "Enregistrer".
- À ce stade, revenez à l'agent, car nous souhaitons ajouter la configuration de l'outil aux instructions de l'agent. Ajoutez ce qui suit à l'espace réservé des instructions (n'oubliez pas que les retraits sont importants pour définir le flux) :
- Greet the user and answer their question to the best of your knowledge.
- Summarize the user's request and ask them to confirm that you understood correctly.
- Check if the request has details like gender, color, material, style and other key apparel details already.
- If not, seek clarifying details.
- If the search request is very broad, then ask the user to narrow down the request with specific details that you believe could be personal preferences.
- Once all the necessary details are met, summarize your final understanding of the request with the user.
- Use ${TOOL: Retail Shopping Tool} to help the user with their task.
- If the request has unrelated input text, gracefully convey that you don't have information on that topic.
- Do not give product availability information outside the source that is provided to you in ${TOOL: Retail Shopping Tool}.
- Do not assist with any information unless you are certain that you know the answer and it is grounded in the source of truth.
- Thank the user for their business and say goodbye.
Assurez-vous que l'outil "Retail Shopping Tool" est sélectionnée dans la colonne "Outils disponibles" puis enregistrez l'agent à nouveau.
5. Tester l'agent
Dans le volet de droite, vous devriez voir la section "Aperçu de l'agent", qui vous permet de tester votre agent.
Comme vous pouvez le voir dans la capture d'écran ci-dessous, j'ai accueilli l'utilisateur et commencé ma discussion par une demande de chemise blanche à imprimé bleu:
Voici la réponse JSON:
Il s'agit du résultat JSON brut de la fonction Cloud qui traite la recherche de similarité AlloyDB. Et voilà ! L\'agent est maintenant en ligne.
6. Exemple de flux de conversation
À ce stade, vous pouvez tester et itérer le flux de votre agent de dialogue (conversation) :
User: I'm looking for women's boots for winter.
Agent: (OpenAPI call to Cloud Function that works with AlloyDB Similarity Search)
Cloud Function: (Processes query, returns JSON array)
Agent: Based on your preferences, here are some options: [Product 1, Product 2, Product 3]. Would you like to see more details about any of these?
User: No, That is all. Bye!
Agent: Have a good day!
Peu d'invites de prises de vue
Imaginons maintenant que vous souhaitiez afficher le résultat dans l'agent conversationnel sous un format graphique spécifique, avec des images et des liens. Nous allons le faire à l'aide d'exemples de conversations, également appelées requêtes few-shot.
Nous souhaitons donc ajouter quelques exemples au générateur d'agents afin d'obtenir un format de résultats cohérent.
Dans l'une de nos captures d'écran précédentes de la section Tester l'agent, la réponse de l'agent est "Je vois. Vous cherchez un t-shirt blanc avec des imprimés bleus…". Accédez à cette réponse ou créez une conversation de test dans le volet de droite de l'agent :
- Saisissez le texte ci-dessous dans le champ "Enter User Input" (Saisir l'entrée utilisateur). :
Vous obtiendrez une réponse semblable à celle-ci :
Vous verrez également le tableau JSON renvoyé par le point de terminaison de l'API.
- Cliquez maintenant sur le nom de l'agent (comme illustré dans l'image ci-dessous, souligné par une coche rouge) dans la marge de la section d'aperçu. Tous les onglets de la section d'aperçu du chat seront mis en surbrillance. Cliquez sur "Enregistrer l'exemple" en haut à droite de la section d'aperçu. La barre se présente comme suit :
- Enregistrez la conversation sous le nom à afficher "Réponse avec images". ou quelque chose de similaire, puis cliquez sur "Créer".
- Accédez maintenant à l'onglet "Response" (Réponse) mis en évidence par une coche noire dans l'image ci-dessus et remplacez le texte « I see. Vous recherchez des sandales jaunes. C'est bien ça ?" par les éléments suivants:
I see you are looking for yellow sandals. Here are a few options for you:
<!DOCTYPE html>
<html>
<body>
<h2>Featured Sandals</h2>
<table style="overflow-x: auto; white-space: nowrap;">
<tr>
<td>
<img src="https://assets.myntassets.com/v1/images/style/properties/d27dbd8e9666b9af2d72fbfde315f76d_images.jpg" alt="Yellow sandals from Estd. 1977" width="300">
</td>
<td>
<img src="https://assets.myntassets.com/v1/images/style/properties/b7a479fe5f56457e930541a789c5df68_images.jpg" alt="Yellow sandals from Gliders" width="300">
</td>
<td>
<img src="https://assets.myntassets.com/v1/images/style/properties/b6c813734b29b89d1055fd000ea50743_images.jpg" alt="Yellow sandals from Rocia" width="300">
</td>
<td>
<img src="https://assets.myntassets.com/v1/images/style/properties/ee0e918c229e76e0e7e61712e9d2ecb3_images.jpg" alt="Yellow flip flops from Numero Uno" width="300">
</td>
<td>
<img src="https://assets.myntassets.com/v1/images/style/properties/5bdd4c9e739205e28ee134ff7849bc60_images.jpg" alt="Yellow flip flops from Numero Uno" width="300">
</td>
</tr>
</table>
</body>
</html>
- Cliquez sur "Enregistrer". au-dessus.
Répétez le processus autant d'exemples que vous le souhaitez, avec différentes variations et différents déroulements de la conversation.
Testez-le avec une entrée utilisateur :
Autres types de réponses:
Et voilà ! Nous avons créé et testé un agent conversationnel pour notre application de vente au détail.
7. Déploiement et intégration
Une fois que vous êtes satisfait de votre agent, vous pouvez facilement le déployer sur différents canaux à l'aide des intégrations d'Agent Builder. Vous pouvez l'intégrer à votre site Web, l'intégrer à des plates-formes de messagerie populaires ou même créer une application mobile dédiée. Nous pouvons également utiliser l'API Agent Builder directement dans nos applications clientes Web, dont nous avons parlé sur ce blog.
8. Effectuer un nettoyage
Pour éviter que les ressources utilisées dans cet article soient facturées sur votre compte Google Cloud, procédez comme suit:
- Dans la console Google Cloud, accédez à la page Gérer
- ressources.
- Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.
9. Félicitations
Félicitations ! En intégrant la puissance de notre moteur d'analyse personnalisé à l'interface intuitive d'Agent Builder, nous avons créé un assistant d'achat intelligent qui offre des expériences personnalisées, répond précisément aux questions et, au final, améliore la satisfaction client et les ventes. En combinant les fonctionnalités d'AlloyDB, de Vertex AI et de Vector Search, nous avons fait un grand pas en avant pour rendre les recherches contextuelles et vectorielles accessibles, efficaces, vraiment axées sur le sens et agissantes.