Créer un assistant de shopping intelligent avec AlloyDB et Vertex AI Agent Builder – Partie 2

1. Présentation

Dans le paysage commercial actuel, qui évolue rapidement, il est primordial de fournir un service client d'exception tout en proposant 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 associe la puissance d'AlloyDB pour le stockage de données, un moteur d'analyse interne pour la compréhension contextuelle, Gemini (grand modèle de langage) pour valider la pertinence et Agent Builder de Google pour amorcer rapidement un assistant conversationnel intelligent.

Défi:dans le secteur du commerce d'aujourd'hui, les clients attendent des réponses et des recommandations de produits instantanées qui correspondent à 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 approfondie provenant de vos données sur le commerce pour comprendre l'intention des clients, réagir intelligemment et fournir des résultats ultrapertinents.

Ce que vous allez faire

Dans le cadre de cet atelier (partie 2), vous allez:

  1. Créer un agent Vertex AI Agent Builder
  2. Intégrer l'outil AlloyDB à l'agent

Conditions requises

  • Un navigateur tel que Chrome ou Firefox
  • Un projet Google Cloud avec facturation activée.

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 (inventaire, descriptions des produits, interactions avec les clients) sont chargées en continu dans AlloyDB.

Moteur d'analyse:

Nous utiliserons AlloyDB comme moteur d'analyse pour effectuer les opérations suivantes:

  1. 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.
  2. 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.
  3. Recherche vectorielle: le moteur effectue une recherche de similarités en comparant la représentation vectorielle continue de la requête aux représentations vectorielles continues 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 aspects techniques de la création d'un moteur d'analyse basé sur les connaissances sur lequel s'appuie notre assistant Shopping intelligent. Voyons maintenant comment exploiter 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. La prochaine étape est le sujet de cet atelier:

Interaction conversationnelle:

Agent Builder présente les réponses à l'utilisateur dans un format en langage naturel, ce qui facilite les échanges.

3. Avant de commencer

Créer un projet

  1. Dans la console Google Cloud, sur la page du sélecteur de projet, sélectionnez ou créez un projet Google Cloud.
  2. 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 .
  3. 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.

Image du bouton "Activer Cloud Shell"

  1. 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
  1. Exécutez la commande suivante dans Cloud Shell pour vérifier que la commande gcloud connaît votre projet.
gcloud config list project
  1. Si votre projet n'est pas défini, utilisez la commande suivante pour le définir :
gcloud config set project <YOUR_PROJECT_ID>
  1. 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 vous manquez une API, 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 nécessitant peu de programmation qui nous permet de créer des agents conversationnels rapidement et efficacement. Il simplifie le processus de conception des flux de boîte de dialogue, d'intégration des bases de connaissances et de connexion à des API externes. Dans le cas présent, nous utiliserons Agent Builder pour nous connecter de manière fluide au point de terminaison Cloud Functions que nous avons créé dans la partie 1, afin de permettre à notre assistant Shopping d'accéder à notre base de connaissances sur le retail et de répondre intelligemment aux requêtes des clients.

Créer l'agent

Commençons par créer ce nouvel agent pour répondre aux questions des utilisateurs sur les produits vestimentaires.

  1. Commencez par vous connecter à la plate-forme Agent Builder. Si vous êtes invité à activer l'API, cliquez sur CONTINUER ET ACTIVER L'API.
  2. Cliquez sur CRÉER L'APPLICATION. et attribuez un nom descriptif à votre agent (par exemple, "Assistant Shopping au détail").
  3. Cliquez sur le type d'application "Agent".

462bb48664e9a14e.png

  1. pour en savoir plus. Donnez un nom descriptif à votre agent, tel que "Assistant Shopping pour le commerce". et définissez la région sur "us-central1"

10eceef44b1600d1.png

  1. Saisissez les informations concernant l'agent:
  2. Remplacez le nom de l'agent par "Retail Shopping Agent".
  3. 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.

537a87a842aae897.png

  1. Enregistrez-le maintenant et laissez les instructions vides pour le moment.
  2. Cliquez ensuite sur Outils dans le menu de navigation, puis sur CRÉER.

2ffae953bbad38e5.png

Enter Tool Name (Saisir le nom de l'outil) : Retail Shopping Tool

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

  1. Revenez à l'agent à ce stade, car nous voulons ajouter l'outil configuration dans les "Instructions" de l'agent. Ajoutez le code ci-dessous à l'espace réservé pour les instructions (n'oubliez pas que les retraits sont importants dans la définition du 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 "Preview Agent" (Agent de prévisualisation), 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:

63ac3ef6d1f0f614.png

Voici la réponse JSON:

acf3cb0e2be2ed91.png

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 prêt.

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

Supposons maintenant que vous souhaitiez voir le résultat dans l'agent de conversation dans un certain format graphique, y compris des images et des liens. Pour ce faire, nous utiliserons des exemples de conversations, également connus sous le nom d'invites few-shot.

Cela signifie que nous voulons ajouter quelques exemples au compilateur d'agents pour obtenir un format de résultat cohérent.

Dans l'une des captures d'écran précédentes de l'atelier Tester l'agent nous voyons la réponse de l'agent comme "Je vois. Tu cherches une chemise blanche avec des imprimés bleus...". Accédez à cette réponse ou créez une conversation test à partir du volet droit de l'agent:

  1. Saisissez le texte ci-dessous dans le champ "Enter User Input" (Saisir l'entrée utilisateur). :

dc8c010c36400e64.png

Une réponse semblable à celle-ci s'affiche:

e31d9f53bf5564c8.png

Vous verrez également le tableau JSON renvoyé par le point de terminaison de l'API.

  1. 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 dans la section d'aperçu. La barre se présente comme suit :

1e0a9f6815f63bf9.png

  1. Enregistrez la conversation sous le nom à afficher "Réponse avec images". ou quelque chose de similaire, puis cliquez sur "Créer".
  2. Accédez maintenant à l'onglet de la réponse mis en évidence par une coche noire dans l'image ci-dessus et remplacez le texte « Je vois. 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>
  1. Cliquez sur "Enregistrer". au-dessus.

Répétez le processus pour autant d'exemples que vous le souhaitez avec différents flux et variantes de la conversation.

À présent, testez-le avec une entrée utilisateur:

450166a929645353.png

Autres types de réponses:

be8908c99cd33730.png

Et voilà ! Nous avons réussi à créer et à tester un agent de conversation 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:

  1. Dans la console Google Cloud, accédez à la page Gérer
  2. ressources.
  3. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  4. 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 en rendant les recherches contextuelles et vectorielles accessibles, efficaces, véritablement axées sur le sens et agentsic.