Crea un asistente de Shopping inteligente con AlloyDB y Vertex AI Agent Builder (parte 2)

1. Descripción general

En el vertiginoso panorama minorista actual, es fundamental brindar un servicio al cliente excepcional y, al mismo tiempo, ofrecer experiencias de compra personalizadas. Te llevaremos en un recorrido técnico por la creación de una aplicación de chat basada en conocimiento diseñada para responder preguntas de los clientes, guiar el descubrimiento de productos y personalizar los resultados de la búsqueda. Esta innovadora solución combina la potencia de AlloyDB para el almacenamiento de datos, un motor de análisis interno para la comprensión contextual, Gemini (modelo de lenguaje grande) para la validación de relevancia y Agent Builder de Google para iniciar rápidamente un asistente inteligente de conversación.

El desafío: Los clientes minoristas modernos esperan respuestas instantáneas y recomendaciones de productos que se alineen con sus preferencias únicas. Los métodos de búsqueda tradicionales a menudo no logran proporcionar este nivel de personalización.

La solución: Nuestra aplicación de chat basada en conocimiento aborda este desafío de frente. Aprovecha una base de conocimiento enriquecida derivada de tus datos de comercio minorista para comprender la intención del cliente, responder de forma inteligente y ofrecer resultados hiperrelevantes.

Qué compilarás

Como parte de este lab (parte 2), harás lo siguiente:

  1. Crea un agente de Vertex AI Agent Builder
  2. Integra la herramienta de AlloyDB con el agente

Requisitos

  • Un navegador, como Chrome o Firefox.
  • Un proyecto de Google Cloud con facturación habilitada.

2. Arquitectura

Flujo de datos: Analicemos con más detalle cómo se mueven los datos a través de nuestro sistema:

Transferencia:

Los datos de venta minorista (inventario, descripciones de productos, interacciones con los clientes) se cargan continuamente en AlloyDB.

Motor de Analytics:

Usaremos AlloyDB como motor de análisis para realizar las siguientes acciones:

  1. Extracción de contexto: El motor analiza los datos almacenados en AlloyDB para comprender las relaciones entre los productos, las categorías, el comportamiento del cliente, etc., según corresponda.
  2. Creación de embeddings: Se generan embeddings (representaciones matemáticas del texto) tanto para la búsqueda del usuario como para la información almacenada en AlloyDB.
  3. Vector Search: El motor realiza una búsqueda de similitud, comparando el embedding de la búsqueda con los embeddings de las descripciones, las opiniones y otros datos relevantes del producto. Esto identifica los 25 "vecinos más cercanos" más relevantes.

Validación de Gemini:

Estas posibles respuestas se envían a Gemini para su evaluación. Gemini determina si son realmente relevantes y seguros para compartirlos con el usuario.

Generación de respuestas:

Las respuestas validadas se estructuran en un array JSON, y todo el motor se empaqueta en una función de Cloud Run sin servidores que se invoca desde Agent Builder.

Los pasos anteriores ya se explican en la parte 1 del lab.

Analizamos los detalles técnicos de la creación de un motor de análisis basado en el conocimiento que impulsa nuestro asistente de compras inteligente. Ahora, exploremos cómo aprovechamos la magia de Agent Builder para darle vida a este motor en una interfaz conversacional. Asegúrate de tener lista la URL del endpoint antes de comenzar la parte 2. Este es el siguiente paso que abordaremos en este lab:

Interacción conversacional:

Agent Builder presenta las respuestas al usuario en un formato de lenguaje natural, lo que facilita un diálogo de ida y vuelta.

3. Antes de comenzar

Crea un proyecto

  1. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
  2. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información para verificar si la facturación está habilitada en un proyecto .
  3. Usarás Cloud Shell, un entorno de línea de comandos que se ejecuta en Google Cloud y que viene precargado con bq. Haz clic en Activar Cloud Shell en la parte superior de la consola de Google Cloud.

Imagen del botón Activar Cloud Shell

  1. Una vez que te conectes a Cloud Shell, verifica que ya te autenticaste y que el proyecto se configuró con tu ID del proyecto usando el siguiente comando:
gcloud auth list
  1. En Cloud Shell, ejecuta el siguiente comando para confirmar que el comando gcloud conoce tu proyecto.
gcloud config list project
  1. Si tu proyecto no está configurado, usa el siguiente comando para hacerlo:
gcloud config set project <YOUR_PROJECT_ID>
  1. Habilita las APIs necesarias. La alternativa al comando de gcloud es buscar cada producto en la consola o usar este vínculo.

Si olvidas alguna API, siempre puedes habilitarla durante el curso de la implementación.

Consulta la documentación para ver los comandos y el uso de gcloud.

Nota importante: Además, asegúrate de haber completado la PARTE 1 del lab para poder completar esta.

4. Creación del agente

Presentamos Agent Builder

Agent Builder es una herramienta potente con poco código que nos permite crear agentes conversacionales de forma rápida y eficiente. Simplifica el proceso de diseño de flujos de diálogo, la integración de bases de conocimiento y la conexión a APIs externas. En nuestro caso, usaremos Agent Builder para conectarnos sin problemas con el extremo de Cloud Function que creamos en la Parte 1, lo que permitirá que nuestro asistente de compras acceda a nuestra base de conocimiento minorista y responda a las consultas de los clientes de forma inteligente.

Compila el agente

Comencemos a crear este nuevo agente para responder las preguntas de los usuarios sobre los productos de indumentaria.

  1. Para comenzar, accede a la plataforma de Agent Builder. Si se te solicita que actives la API, haz clic en CONTINUAR Y ACTIVAR LA API.
  2. Haz clic en "CREATE APP" y asígnale a tu agente un nombre descriptivo (p.ej., "Asistente de compras minoristas").
  3. Haz clic en Tipo de app "Agente".

462bb48664e9a14e.png

  1. . Asigna a tu agente un nombre descriptivo, como "Asistente de compras minoristas", y establece la región como us-central1.

10eceef44b1600d1.png

  1. Ingresa los detalles del agente:
  2. Cambia el nombre del agente a "Agente de compras minoristas".
  3. Agrega el siguiente "Objetivo":
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. Guárdalo en este punto y deja las instrucciones en blanco por ahora.
  2. Luego, haz clic en Herramientas en el menú de navegación y en CREAR.

2ffae953bbad38e5.png

Enter Tool Name: Herramienta de compras minoristas

Enter Tool Description:

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.

Enter Schema — OpenAPI in YAML format:

Esta es la parte en la que usamos el extremo de backend para potenciar el agente. Copia la siguiente especificación de OpenAPI y reemplaza el marcador de posición de la URL (entre corchetes angulares) por el extremo de tu Cloud Function:

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.

Deja el resto de la configuración con sus valores predeterminados y haz clic en "Guardar".

  1. Vuelve al agente en este punto porque queremos agregar la configuración de "Herramienta" a las "Instrucciones" del agente. Agrega lo siguiente al marcador de posición de instrucciones (recuerda que las sangrías son importantes para definir el flujo):
- 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.

Asegúrate de que la herramienta "Retail Shopping Tool" esté seleccionada en la sección "Herramientas disponibles" y, luego, vuelve a guardar el agente.

5. Prueba el agente

En el panel de la derecha, deberías ver la sección Preview Agent, que te permite probar tu agente.

Como puedes ver en la captura de pantalla a continuación, me presenté como usuario y comencé mi chat con una solicitud de una camisa blanca con estampados azules:

63ac3ef6d1f0f614.png

Esta es la respuesta JSON:

acf3cb0e2be2ed91.png

Este es el resultado JSON sin procesar de la Cloud Function que procesa la búsqueda de similitud de AlloyDB. Eso es todo. Ya terminamos con el agente.

6. Ejemplo de flujo de conversación

En este punto, puedes probar y repetir el flujo de tu agente de diálogo (conversación):

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!

Instrucciones con pocos ejemplos

Ahora, supongamos que quieres ver el resultado en el agente conversacional en un formato gráfico determinado, que incluya imágenes y vínculos. Lo haremos con ejemplos de conversaciones, también conocidos como instrucciones con ejemplos limitados.

Esto significa que queremos agregar algunos ejemplos al compilador de agentes para tener un formato de resultado coherente.

En una de las capturas de pantalla anteriores de la sección "Test the Agent", vemos la respuesta del agente como "Entiendo. Estás buscando una camisa blanca con estampados azules…". Ve a esa respuesta o crea una nueva conversación de prueba desde el panel derecho del agente:

  1. Escribe lo siguiente en la sección "Ingresa la entrada del usuario":

dc8c010c36400e64.png

Verás una respuesta como la siguiente:

e31d9f53bf5564c8.png

También verás el array JSON que devuelve el extremo de la API.

  1. Ahora, haz clic en el nombre del agente (como se muestra en la siguiente imagen, destacado con una marca de verificación roja) en el margen de la sección de vista previa y se destacarán todas las pestañas de la sección de vista previa del chat. Ahora haz clic en "Save Example" en la esquina superior derecha de la sección de vista previa. Se verá de la siguiente forma:

1e0a9f6815f63bf9.png

  1. Guarda la conversación con un nombre visible como "Respuesta con imágenes" o algo similar, y haz clic en "Crear".
  2. Ahora ve a la pestaña de respuesta destacada con una marca de verificación negra en la imagen anterior y reemplaza el texto "Entiendo. Estás buscando sandalias amarillas. ¿Es correcto?" con lo siguiente:
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. Haz clic en "Guardar" en la parte superior.

Repite el proceso con tantos ejemplos como quieras, con diferentes variaciones y flujos de la conversación.

Ahora, prueba con una entrada del usuario:

450166a929645353.png

Otros tipos de respuestas:

be8908c99cd33730.png

Eso es todo. Creamos y probamos correctamente un agente conversacional para nuestra app de comercio minorista.

7. Implementación e integración

Una vez que estés conforme con tu agente, puedes implementarlo fácilmente en varios canales con las integraciones de Agent Builder. Puedes incorporarlo en tu sitio web, integrarlo en plataformas de mensajería populares o incluso crear una app para dispositivos móviles exclusiva. También podemos usar la API de Agent Builder directamente en nuestras aplicaciones cliente web, lo que ya explicamos en este blog.

8. Limpia

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta publicación:

  1. En la consola de Google Cloud, ve a Administrar .
  2. página de recursos
  3. En la lista de proyectos, elige el proyecto que deseas borrar y haz clic en Borrar.
  4. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrarlo.

9. Felicitaciones

¡Felicitaciones! Al integrar la potencia de nuestro motor de análisis personalizado con la interfaz intuitiva de Agent Builder, creamos un asistente de compras inteligente para el comercio minorista que ofrece experiencias personalizadas, responde preguntas con precisión y, en última instancia, impulsa la satisfacción del cliente y las ventas. Combinando las capacidades de AlloyDB, Vertex AI y Vector Search, dimos un gran paso para que las búsquedas contextuales y de vectores sean accesibles, eficientes, verdaderamente basadas en el significado y con capacidad de agente.