Creare un assistente Shopping intelligente con AlloyDB e Vertex AI Agent Builder - Parte 2

1. Panoramica

Nel panorama della vendita al dettaglio odierno, in rapida evoluzione, è fondamentale offrire un'assistenza clienti eccezionale e, al contempo, consentire esperienze di acquisto personalizzate. Ti accompagneremo in un percorso tecnico per la creazione di un'applicazione di chat basata sulla conoscenza, progettata per rispondere alle domande dei clienti, guidare la scoperta dei prodotti e personalizzare i risultati di ricerca. Questa soluzione innovativa combina la potenza di AlloyDB per l'archiviazione dei dati, un motore di analisi interno per la comprensione contestuale, Gemini (modello linguistico di grandi dimensioni) per la convalida della pertinenza e Agent Builder di Google per il bootstrapping rapido di un assistente conversazionale intelligente.

La sfida: i clienti del retail moderno si aspettano risposte immediate e consigli sui prodotti in linea con le loro preferenze uniche. I metodi di ricerca tradizionali spesso non riescono a fornire questo livello di personalizzazione.

La soluzione: la nostra applicazione di chat basata sulla conoscenza affronta questa sfida in modo diretto. Sfrutta una knowledge base completa derivata dai dati di vendita al dettaglio per comprendere l'intento del cliente, rispondere in modo intelligente e fornire risultati estremamente pertinenti.

Cosa creerai

Nell'ambito di questo lab (parte 2):

  1. Creerai un agente Vertex AI Agent Builder.
  2. Integrerai lo strumento AlloyDB con l'agente.

Requisiti

  • Un browser, ad esempio Chrome o Firefox.
  • Un progetto Google Cloud con la fatturazione abilitata.

2. Architettura

Flusso di dati: esaminiamo più da vicino il modo in cui i dati si spostano nel nostro sistema:

Importazione:

I dati di vendita al dettaglio (inventario, descrizioni dei prodotti, interazioni con i clienti) vengono caricati continuamente in AlloyDB.

Motore di analisi:

Utilizzeremo AlloyDB come motore di analisi per eseguire le seguenti operazioni:

  1. Estrazione del contesto: il motore analizza i dati archiviati in AlloyDB per comprendere le relazioni tra prodotti, categorie, comportamento dei clienti e così via, a seconda dei casi.
  2. Creazione di embedding: vengono generati embedding (rappresentazioni matematiche del testo) sia per la query dell'utente sia per le informazioni archiviate in AlloyDB.
  3. Ricerca vettoriale: il motore esegue una ricerca di somiglianza, confrontando l'embedding della query con gli embedding delle descrizioni dei prodotti, delle recensioni e di altri dati pertinenti. In questo modo vengono identificati i 25 "vicini più prossimi" più pertinenti.

Convalida di Gemini:

Queste potenziali risposte vengono inviate a Gemini per la valutazione. Gemini determina se sono effettivamente pertinenti e sicure da condividere con l'utente.

Generazione della risposta:

Le risposte convalidate vengono strutturate in un array JSON e l'intero motore viene inserito in una Cloud Run Function serverless richiamata da Agent Builder.

I passaggi precedenti sono già trattati nella parte 1 del lab.

Abbiamo discusso i dettagli tecnici della creazione di un motore di analisi basato sulla conoscenza che alimenta il nostro assistente per lo shopping intelligente. Ora, esploriamo come sfruttare la magia di Agent Builder per dare vita a questo motore in un'interfaccia conversazionale. Prima di iniziare la parte 2, assicurati di avere a portata di mano l'URL dell'endpoint. Il passaggio successivo è quello che trattiamo in questo lab:

Interazione conversazionale:

Agent Builder presenta le risposte all'utente in un formato di linguaggio naturale, facilitando un dialogo di andata e ritorno.

3. Prima di iniziare

Crea un progetto

  1. Nella console Google Cloud, nella pagina del selettore di progetti, seleziona o crea un progetto Google Cloud.
  2. Verifica che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata per un progetto .
  3. Utilizzerai Cloud Shell, un ambiente a riga di comando in esecuzione in Google Cloud che viene fornito con bq precaricato. Fai clic su Attiva Cloud Shell nella parte superiore della console Google Cloud.

Immagine del pulsante Attiva Cloud Shell

  1. Una volta eseguita la connessione a Cloud Shell, verifica che il tuo account sia già autenticato e che il progetto sia impostato sul tuo ID progetto utilizzando il seguente comando:
gcloud auth list
  1. Esegui il seguente comando in Cloud Shell per verificare che il comando gcloud conosca il tuo progetto.
gcloud config list project
  1. Se il progetto non è impostato, utilizza il seguente comando per impostarlo:
gcloud config set project <YOUR_PROJECT_ID>
  1. Abilita le API richieste. L'alternativa al comando gcloud è tramite la console, cercando ogni prodotto o utilizzando questo link.

Se manca un'API, puoi sempre abilitarla durante l'implementazione.

Consulta la documentazione per i comandi e l'utilizzo di gcloud.

Nota importante: inoltre, per completare questa procedura, assicurati di aver completato la PARTE 1 del lab.

4. Creazione dell'agente

Introduzione ad Agent Builder

Agent Builder è uno strumento low-code potente che ci consente di creare agenti conversazionali in modo rapido ed efficiente. Semplifica il processo di progettazione dei flussi di dialogo, integrazione delle knowledge base e connessione alle API esterne. Nel nostro caso, utilizzeremo Agent Builder per connetterci senza problemi all'endpoint della funzione Cloud Functions che abbiamo creato nella parte 1, consentendo al nostro assistente per lo shopping di accedere alla nostra knowledge base di vendita al dettaglio e rispondere in modo intelligente alle query dei clienti.

Creazione dell'agente

Iniziamo a creare questo nuovo agente per rispondere alle domande degli utenti sui prodotti di abbigliamento.

  1. Inizia accedendo alla piattaforma Agent Builder. Se ti viene chiesto di attivare l'API, fai clic su CONTINUA E ATTIVA L'API.
  2. Fai clic su "CREA APP" e assegna all'agente un nome descrittivo (ad es. "Assistente per lo shopping al dettaglio").
  3. Fai clic su Tipo di app "Agente".

462bb48664e9a14e.png

  1. . Assegna all'agente un nome descrittivo, ad esempio "Assistente per lo shopping al dettaglio", e imposta la regione su us-central1.

10eceef44b1600d1.png

  1. Inserisci i dettagli dell'agente:
  2. Modifica il nome dell'agente in "Agente per lo shopping al dettaglio".
  3. Aggiungi il seguente "Obiettivo":
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. Salva a questo punto e lascia vuote le istruzioni per il momento.
  2. Quindi fai clic su Strumenti nel menu di navigazione e poi su CREA.

2ffae953bbad38e5.png

Inserisci il nome dello strumento: strumento per lo shopping al dettaglio

Inserisci la descrizione dello strumento:

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.

Inserisci lo schema: OpenAPI in formato YAML:

In questa parte utilizziamo l'endpoint di backend per alimentare l'agente. Copia la seguente specifica OpenAPI e sostituisci il segnaposto dell'URL (racchiuso tra parentesi angolari) con l'endpoint della 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.

Lascia le altre configurazioni ai valori predefiniti e fai clic su "Salva".

  1. A questo punto torna all'agente perché vogliamo aggiungere la configurazione "Strumento" alle "Istruzioni" dell'agente. Aggiungi quanto segue al segnaposto delle istruzioni (ricorda che i rientri sono importanti per definire il flusso):
- 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.

Assicurati che lo strumento "Strumento per lo shopping al dettaglio" sia selezionato nella sezione "Strumenti disponibili", quindi salva di nuovo l'agente.

5. Test dell'agente

Nel riquadro a destra dovresti vedere la sezione Anteprima agente che ti consente di testare l'agente.

Come puoi vedere nello screenshot di seguito, ho salutato come utente e ho iniziato la chat con una richiesta di una camicia bianca con stampe blu:

63ac3ef6d1f0f614.png

Ecco la risposta JSON:

acf3cb0e2be2ed91.png

Questo è il risultato JSON non elaborato della Cloud Function che elabora la ricerca di somiglianza di AlloyDB. Questo è tutto. Ora l'agente è pronto.

6. Flusso di conversazione di esempio

A questo punto, puoi testare ed eseguire l'iterazione del flusso dell'agente conversazionale (conversazione):

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!

Prompt di pochi esempi

Supponiamo ora di voler visualizzare il risultato nell'agente conversazionale in un determinato formato grafico, incluse immagini e link. Lo faremo utilizzando esempi di conversazioni, noti anche come prompt di pochi esempi.

Ciò significa che vogliamo aggiungere alcuni esempi ad Agent Builder per avere un formato di risultato coerente.

In uno degli screenshot precedenti nella sezione "Test dell'agente", vediamo la risposta dell'agente come "Capisco. Stai cercando una camicia bianca con stampe blu...". Vai a questa risposta o crea una nuova conversazione di test dal riquadro a destra dell'agente:

  1. Digita quanto segue nella sezione "Inserisci input utente":

dc8c010c36400e64.png

Verrà visualizzata una risposta simile alla seguente:

e31d9f53bf5564c8.png

Verrà visualizzato anche l'array JSON restituito dall'endpoint API.

  1. Ora fai clic sul nome dell'agente (come mostrato nell'immagine di seguito evidenziata con un segno di spunta rosso) dal margine della sezione di anteprima e tutte le schede nella sezione di anteprima della chat verranno evidenziate. Ora fai clic su "Salva esempio" nell'angolo in alto a destra nella sezione di anteprima. L'aspetto sarà simile al seguente:

1e0a9f6815f63bf9.png

  1. Salva la conversazione con un nome visualizzato "Risposta con immagini" o simile e fai clic su "Crea".
  2. Ora vai alla scheda della risposta evidenziata con un segno di spunta nero nell'immagine sopra e sostituisci il testo "Capisco. Stai cercando sandali gialli. È corretto?" con quanto segue:
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. Fai clic su "Salva" in alto.

Ripeti la procedura per tutti gli esempi che vuoi con diverse varianti e flussi della conversazione.

Ora prova con un input utente:

450166a929645353.png

Alcuni altri tipi di risposte:

be8908c99cd33730.png

È tutto. Abbiamo creato e testato correttamente un agente conversazionale per la nostra app di vendita al dettaglio.

7. Deployment e integrazione

Una volta che sei soddisfatto dell'agente, puoi eseguirne facilmente il deployment su vari canali utilizzando le integrazioni di Agent Builder. Puoi incorporarlo nel tuo sito web, integrarlo con le piattaforme di messaggistica più diffuse o persino creare un'app mobile dedicata. Possiamo anche utilizzare l'API Agent Builder direttamente nelle nostre applicazioni client web, come descritto in questo blog.

8. Libera spazio

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo post, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Gestisci
  2. risorse.
  3. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  4. Nella finestra di dialogo, digita l'ID progetto, quindi fai clic su Chiudi per eliminare il progetto.

9. Complimenti

Complimenti! Integrando la potenza del nostro motore di analisi personalizzato con l'interfaccia intuitiva di Agent Builder, abbiamo creato un assistente per lo shopping al dettaglio intelligente che offre esperienze personalizzate, risponde alle domande in modo accurato e, in definitiva, aumenta la soddisfazione dei clienti e le vendite. Combinando le funzionalità di AlloyDB, Vertex AI e Vector Search, abbiamo fatto un passo da gigante verso la creazione di ricerche contestuali e vettoriali accessibili, efficienti, realmente basate sul significato e agentiche.