1. Présentation
Dans le paysage du commerce de détail actuel, qui évolue rapidement, il est primordial de fournir un service client exceptionnel tout en proposant des expériences d'achat personnalisées. Nous vous emmènerons dans un voyage technique à travers la création d'une application de chat axée sur les connaissances, conçue pour répondre aux questions des clients, guider 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 (grand modèle de langage) pour la validation de la pertinence et Agent Builder de Google pour amorcer rapidement un assistant conversationnel intelligent.
Le défi : les clients modernes du secteur de la vente au détail s'attendent à obtenir des réponses instantanées et des recommandations de produits qui correspondent à leurs préférences uniques. Les méthodes de recherche traditionnelles ne permettent souvent pas d'atteindre ce niveau de personnalisation.
La solution : notre application de chat basée sur les connaissances relève ce défi de front. Elle s'appuie sur une base de connaissances riche issue de vos données de vente au détail pour comprendre l'intention des clients, répondre de manière intelligente et fournir des résultats très pertinents.
Ce que vous allez faire
Dans 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 circulent dans notre système :
Ingestion :
Les données de vente au détail (inventaire, descriptions de 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 du 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 d'embeddings : des embeddings (représentations mathématiques du texte) sont générés à 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 à ceux des descriptions de produits, des avis et d'autres données pertinentes. Cela identifie les 25 "voisins les plus proches" les plus pertinents.
Validation Gemini :
Ces réponses potentielles sont envoyées à Gemini pour évaluation. Gemini détermine si elles sont réellement pertinentes et sûres à partager 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 intégré dans une fonction Cloud Run sans serveur, qui est appelée à partir d'Agent Builder.
Les étapes ci-dessus sont déjà 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 shopping intelligent. Voyons maintenant comment nous exploitons la magie d'Agent Builder pour donner vie à ce moteur dans une interface conversationnelle. Assurez-vous d'avoir l'URL du point de terminaison avant de commencer la partie 2. Voici l'étape que nous allons aborder dans cet atelier :
Interaction conversationnelle :
Agent Builder présente les réponses à l'utilisateur dans un format en 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 fourni avec 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 sur 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>
- Activez les API requises. Vous pouvez également accéder à la console en recherchant chaque produit ou en utilisant ce lien.
Si vous oubliez d'activer une API, vous pourrez toujours le faire au cours de l'implémentation.
Consultez la documentation pour connaître les commandes gcloud ainsi que leur utilisation.
Remarque importante : Assurez-vous également d'avoir terminé la PARTIE 1 de l'atelier pour pouvoir effectuer cette tâche.
4. Création d'agents
Présentation d'Agent Builder
Agent Builder est un outil puissant nécessitant peu de programmation qui nous permet de créer des agents conversationnels rapidement et efficacement. Il simplifie la conception des flux de dialogue, l'intégration des bases de connaissances et la connexion aux API externes. Dans notre cas, nous allons utiliser Agent Builder pour nous connecter de manière fluide au point de terminaison Cloud Functions que nous avons créé dans la partie 1. Cela permettra à notre assistant d'achat d'accéder à notre base de connaissances sur la vente au détail et de répondre intelligemment aux questions des clients.
Créer l'agent
Commençons par créer cet agent pour répondre aux questions des utilisateurs sur les produits vestimentaires.
- 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 "CREATE APP" (CRÉER UNE APPLICATION) et donnez un nom descriptif à votre agent (par exemple, "Assistant d'achat").
- Cliquez sur le type d'application "Agent".

- . Donnez un nom descriptif à votre agent, comme "Assistant d'achat", 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-le à ce stade et ne renseignez pas les instructions pour le moment.
- Cliquez ensuite sur "Outils" dans le menu de navigation, puis sur "CRÉER".

Saisissez le nom de l'outil : outil d'achat pour le commerce
Saisissez la 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 la partie où 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é pour l'URL (entre crochets) 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".
- Revenez à l'agent à ce stade, car nous voulons ajouter la configuration "Outil" aux "Instructions" de l'agent. Ajoutez les éléments ci-dessous à l'espace réservé pour les 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" (Outil d'achat pour le commerce) est sélectionné dans la section "Available Tools" (Outils disponibles), puis enregistrez à nouveau l'agent.
5. Tester l'agent
Dans le volet de droite, vous devriez voir la section "Prévisualiser l'agent" qui vous permet de tester votre agent.
Comme vous pouvez le voir sur la capture d'écran ci-dessous, j'ai salué l'agent en tant qu'utilisateur et commencé ma discussion en demandant une chemise blanche à motifs bleus :

Voici la réponse JSON :

Il s'agit du résultat JSON brut de la fonction Cloud qui traite la recherche de similarités AlloyDB. Et voilà ! Nous avons terminé avec l'agent.
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!
Requêtes few-shot
Imaginons maintenant que vous souhaitiez afficher le résultat dans l'agent conversationnel dans un format graphique spécifique, y compris des images et des liens. Pour ce faire, nous utiliserons des exemples de conversations, également appelés "requêtes few-shot".
Cela signifie que nous voulons ajouter quelques exemples au générateur d'agents pour obtenir un format de résultat cohérent.
Dans l'une des captures d'écran précédentes de la section Tester l'agent, nous voyons la réponse de l'agent : "Je vois. Vous cherchez une chemise blanche à motifs bleus…". Accédez à cette réponse ou créez une conversation de test à partir du volet de droite de l'agent :
- Saisissez ce qui suit dans la section "Saisir l'entrée utilisateur" :

Vous verrez une réponse semblable à celle-ci :

Vous verrez également le tableau JSON renvoyé par le point de terminaison de l'API.
- Cliquez ensuite sur le nom de l'agent (comme indiqué dans l'image ci-dessous, surligné d'une coche rouge) dans la marge de la section d'aperçu. Toutes les fiches de la section d'aperçu du chat seront alors surlignées. Cliquez ensuite sur "Save Example" (Enregistrer l'exemple) en haut à droite de la section d'aperçu. La barre se présente comme suit :

- Enregistrez la conversation avec un nom à afficher tel que "Réponse avec images" ou un nom similaire, puis cliquez sur "Créer".
- Accédez à l'onglet "Réponse" mis en évidence par une coche noire dans l'image ci-dessus, puis remplacez le texte "Je vois. Vous recherchez des sandales jaunes. Est-ce bien cela ?" par :
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" en haut de l'écran.
Répétez le processus pour autant d'exemples que vous le souhaitez, avec différentes variations et différents flux de conversation.
Maintenant, testez-le avec une entrée utilisateur :

Voici d'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'associer à des plates-formes de messagerie populaires ou même créer une application mobile dédiée. Vous pouvez également utiliser l'API Agent Builder directement dans vos applications clientes Web, comme expliqué dans cet article de 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 à Gérer .
- la page 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 pour le commerce de détail. Il offre des expériences personnalisées, répond précisément aux questions et, en fin de compte, améliore la satisfaction client et les ventes. En combinant les capacité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, véritablement axées sur le sens et autonomes.