Criar um assistente inteligente do Shopping com o AlloyDB e a Vertex AI Agent Builder – Parte 2

1. Visão geral

No cenário de varejo acelerado de hoje, é fundamental oferecer um atendimento ao cliente excepcional e experiências de compra personalizadas. Vamos fazer uma jornada técnica pela criação de um aplicativo de chat baseado em conhecimento projetado para responder a perguntas de clientes, orientar a descoberta de produtos e personalizar os resultados da pesquisa. Essa solução inovadora combina o poder do AlloyDB para armazenamento de dados, um mecanismo de análise interno para compreensão contextual, o Gemini (modelo de linguagem grande) para validação de relevância e o Agent Builder do Google para inicializar rapidamente um assistente de conversa inteligente.

O desafio:os clientes do varejo moderno esperam respostas instantâneas e recomendações de produtos que se alinhem às preferências deles. Os métodos tradicionais de pesquisa geralmente não oferecem esse nível de personalização.

A solução:nosso aplicativo de chat baseado em conhecimento enfrenta esse desafio de frente. Ele usa uma base de conhecimento avançada derivada dos seus dados de varejo para entender a intenção do cliente, responder de forma inteligente e oferecer resultados hiper-relevantes.

O que você vai criar

Neste laboratório (Parte 2), você vai:

  1. Criar um agente de criação do Vertex AI Agent Builder
  2. Integrar a ferramenta do AlloyDB ao agente

Requisitos

  • Use um navegador, como o Chrome ou o Firefox.
  • Ter um projeto do Google Cloud com o faturamento ativado.

2. Arquitetura

Fluxo de dados: vamos analisar mais de perto como os dados se movem pelo nosso sistema:

Ingestão:

Os dados de varejo (inventário, descrições de produtos, interações com clientes) são carregados continuamente no AlloyDB.

Analytics Engine:

Vamos usar o AlloyDB como mecanismo de análise para realizar o seguinte:

  1. Extração de contexto: o mecanismo analisa os dados armazenados no AlloyDB para entender as relações entre produtos, categorias, comportamento do cliente etc., conforme aplicável.
  2. Criação de embeddings: embeddings (representações matemáticas de texto) são gerados para a consulta do usuário e para as informações armazenadas no AlloyDB.
  3. Pesquisa vetorial: o mecanismo realiza uma pesquisa de similaridade, comparando o embedding da consulta com os embeddings das descrições, avaliações e outros dados relevantes do produto. Isso identifica os 25 "vizinhos mais próximos" mais relevantes.

Validação do Gemini:

Essas respostas em potencial são enviadas ao Gemini para avaliação. O Gemini determina se eles são realmente relevantes e seguros para compartilhar com o usuário.

Geração de respostas:

As respostas validadas são estruturadas em uma matriz JSON, e todo o mecanismo é empacotado em uma função do Cloud Run sem servidor invocada pelo Agent Builder.

As etapas acima já foram abordadas na parte 1 do laboratório.

Discutimos os detalhes técnicos da criação de um mecanismo de análise orientado por conhecimento que alimenta nosso assistente de compras inteligente. Agora, vamos entender como aproveitar a magia do Agent Builder para dar vida a esse mecanismo em uma interface de conversa. Tenha o URL do endpoint pronto antes de começar a parte 2. Esta é a próxima etapa que abordaremos neste laboratório:

Interação por conversa:

O Agent Builder apresenta as respostas ao usuário em um formato de linguagem natural, facilitando um diálogo de vai e vem.

3. Antes de começar

Criar um projeto

  1. No console do Google Cloud, na página de seletor de projetos, selecione ou crie um projeto do Google Cloud.
  2. Verifique se o faturamento está ativado para seu projeto do Cloud. Saiba como verificar se o faturamento está ativado em um projeto .
  3. Você vai usar o Cloud Shell, um ambiente de linha de comando executado no Google Cloud que vem pré-carregado com bq. Clique em "Ativar o Cloud Shell" na parte de cima do console do Google Cloud.

Imagem do botão "Ativar o Cloud Shell"

  1. Depois de se conectar ao Cloud Shell, verifique se sua conta já está autenticada e se o projeto está configurado com o ID do seu projeto usando o seguinte comando:
gcloud auth list
  1. Execute o comando a seguir no Cloud Shell para confirmar se o comando gcloud sabe sobre seu projeto.
gcloud config list project
  1. Se o projeto não estiver definido, use este comando:
gcloud config set project <YOUR_PROJECT_ID>
  1. Ativar as APIs necessárias A alternativa ao comando gcloud é usar o console. Para isso, pesquise cada produto ou use este link.

Se alguma API for esquecida, você sempre poderá ativá-la durante a implementação.

Consulte a documentação para ver o uso e os comandos gcloud.

Observação importante:além disso, confira se você concluiu a PARTE 1 do laboratório para concluir esta etapa.

4. Criação de agente

Conheça o Agent Builder

O Agent Builder é uma ferramenta eficiente com pouco código que permite criar agentes de conversação com rapidez e eficiência. Ele simplifica o processo de design de fluxos de diálogo, integração de bases de conhecimento e conexão com APIs externas. No nosso caso, vamos usar o Agent Builder para nos conectar perfeitamente ao endpoint do Cloud Functions que criamos na Parte 1, permitindo que nosso assistente de compras acesse nossa base de conhecimento de varejo e responda às consultas dos clientes de forma inteligente.

Como criar o agente

Vamos começar criando esse novo agente para responder às perguntas dos usuários sobre os produtos de vestuário.

  1. Comece fazendo login na plataforma do Agent Builder. Se for necessário ativar a API, clique em CONTINUAR E ATIVAR A API.
  2. Clique em "CRIAR APP" e dê um nome descritivo ao seu agente (por exemplo, "Assistente de compras no varejo").
  3. Clique em "Tipo de app" "Agente".

462bb48664e9a14e.png

  1. . Dê ao agente um nome descritivo, como "Assistente de compras no varejo", e defina a região como us-central1.

10eceef44b1600d1.png

  1. Insira os detalhes do agente:
  2. Mude o nome do agente para "Agente de compras no varejo".
  3. Adicione o "Objetivo" abaixo:
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. Salve e deixe as instruções em branco por enquanto.
  2. Em seguida, clique em "Ferramentas" no menu de navegação e em "CRIAR".

2ffae953bbad38e5.png

Digite o nome da ferramenta:Ferramenta de compras no varejo

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.

Inserir esquema — OpenAPI no formato YAML:

É aqui que usamos o endpoint de back-end para alimentar o agente. Copie a especificação OpenAPI abaixo e substitua o marcador de posição do URL (entre colchetes angulares) pelo endpoint da Função do 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.

Deixe as outras configurações nos valores padrão e clique em "Salvar".

  1. Volte ao agente neste momento porque queremos adicionar a configuração "Ferramenta" às "Instruções" dele. Adicione o texto abaixo ao marcador de posição de instruções. Lembre-se de que os recuos são importantes para definir o fluxo:
- 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.

Verifique se a ferramenta "Retail Shopping Tool" está selecionada na seção "Ferramentas disponíveis" e salve o agente novamente.

5. Testar o agente

No painel à direita, você vai encontrar a seção "Visualizar agente", que permite testar o agente.

Como você pode ver na captura de tela abaixo, eu cumprimentei como usuário e iniciei meu chat com um pedido de camisa branca com estampas azuis:

63ac3ef6d1f0f614.png

Esta é a resposta JSON:

acf3cb0e2be2ed91.png

Este é o resultado JSON bruto da função do Cloud que processa a pesquisa de similaridade do AlloyDB. Pronto! Agora está tudo pronto com o agente.

6. Exemplo de fluxo de conversa

Neste ponto, você pode testar e iterar o fluxo do seu agente de diálogo (conversa):

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!

Comandos de poucos disparos

Agora, digamos que você queira ver o resultado no agente de conversação em um determinado formato gráfico, incluindo imagens e links. Vamos fazer isso usando exemplos de conversas, também conhecidos como comandos de poucos disparos.

Isso significa que vamos adicionar alguns exemplos ao criador de agentes para ter um formato de resultado consistente.

Em uma das capturas de tela anteriores na seção Testar o agente, vemos a resposta do agente como "Entendi. Você está procurando uma camisa branca com estampas azuis...". Acesse essa resposta ou crie uma nova conversa de teste no painel à direita do agente:

  1. Digite o seguinte na seção "Insira a entrada do usuário":

dc8c010c36400e64.png

Você vai receber uma resposta como esta:

e31d9f53bf5564c8.png

Você também vai ver a matriz JSON retornada pelo endpoint de API.

  1. Agora clique no nome do agente (como mostrado na imagem abaixo, destacado com uma marca de seleção vermelha) na margem da seção de prévia. Todas as suas guias na seção de prévia do chat serão destacadas. Clique em "Salvar exemplo" no canto superior direito da seção de visualização. Ela terá esta aparência.

1e0a9f6815f63bf9.png

  1. Salve a conversa com um nome de exibição "Resposta com imagens" ou algo semelhante e clique em "Criar".
  2. Agora, acesse a guia de resposta destacada com uma marca de seleção preta na imagem acima e substitua o texto "Entendi. Você está procurando sandálias amarelas. É isso mesmo?" com o seguinte:
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. Clique em "Salvar" na parte de cima.

Repita o processo para quantos exemplos quiser, com diferentes variações e fluxos da conversa.

Agora, teste com uma entrada do usuário:

450166a929645353.png

Outros tipos de respostas:

be8908c99cd33730.png

É isso. Criamos e testamos um agente de conversação para nosso app de varejo.

7. Implantação e integração

Quando estiver satisfeito com o agente, você poderá implantá-lo facilmente em vários canais usando as integrações do Agent Builder. É possível incorporar o widget no seu site, integrar com plataformas de mensagens conhecidas ou até mesmo criar um app para dispositivos móveis dedicado. Também podemos usar a API Agent Builder diretamente nos aplicativos cliente da Web, conforme abordado neste blog.

8. Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta postagem, siga estas etapas:

  1. No console do Google Cloud, acesse Gerenciar
  2. página recursos.
  3. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir.
  4. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

9. Parabéns

Parabéns! Ao integrar a potência do nosso mecanismo de análise personalizado com a interface intuitiva do Agent Builder, criamos um assistente de compras inteligente para varejo que oferece experiências personalizadas, responde a perguntas com precisão e, por fim, aumenta a satisfação do cliente e as vendas. Ao combinar os recursos do AlloyDB, da Vertex AI e da Pesquisa Vetorial, demos um grande passo para tornar as pesquisas contextuais e vetoriais acessíveis, eficientes, realmente orientadas por significado e com capacidade de ação.