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

1. Visão geral

No atual cenário acelerado de varejo, é fundamental oferecer um atendimento ao cliente excepcional e proporcionar experiências de compras personalizadas. Vamos guiar você em uma jornada técnica pela criação de um aplicativo de chat baseado em conhecimento projetado para responder 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, Gemini (Large Language Model) para validação de relevância e o Agent Builder do Google para inicializar rapidamente um assistente de conversação inteligente.

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

A solução: nosso aplicativo de chat voltado para conhecimento enfrenta esse desafio de frente. Ele aproveita uma rica base de conhecimento derivada dos dados de varejo para entender a intenção do cliente, responder de maneira inteligente e fornecer resultados extremamente relevantes.

O que você vai criar

Como parte deste laboratório (Parte 2), você vai:

  1. Criar um agente do Vertex AI Agent Builder
  2. Integrar a ferramenta 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 do cliente) são carregados continuamente no AlloyDB.

Mecanismo de análise:

Vamos usar o AlloyDB como mecanismo de análise para fazer 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: os embeddings (representações matemáticas de texto) são gerados para a consulta do usuário e as informações armazenadas no AlloyDB.
  3. Pesquisa vetorial: o mecanismo realiza uma pesquisa de similaridade, comparando o embedding de consultas aos embeddings de descrições de produtos, avaliações e outros dados relevantes. Isso identifica os 25 "vizinhos mais próximos" mais relevantes.

Validação do Gemini:

Essas possíveis respostas 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 que é 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 inteligente de compras. Agora, vamos explorar como aproveitamos a magia do Agent Builder para dar vida a esse mecanismo em uma interface de conversa. Confira se o URL do endpoint está pronto antes de iniciar a Parte 2. A próxima etapa é o que abordamos neste laboratório:

Interação por conversa:

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

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ê usará o Cloud Shell, um ambiente de linha de comando em execução no Google Cloud que vem pré-carregado com o 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 você já está autenticado 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 que o comando gcloud conhece 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. Ative as APIs necessárias. A alternativa ao comando gcloud é usar o console, pesquisando cada produto ou usando este link.

Se alguma API estiver ausente, você poderá ativá-la durante a implementação.

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

Observação importante:verifique se você concluiu a PARTE 1 do laboratório para concluir as tarefas.

4. Criação de agente

Conheça o Agent Builder

O Agent Builder é uma ferramenta potente e com pouco código que nos permite criar agentes de conversação de maneira rápida e eficiente. Ele simplifica o processo de criação 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 se conectar perfeitamente com o endpoint da função do Cloud 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 maneira inteligente.

Como criar o agente

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

  1. Comece fazendo login na plataforma Agent Builder. Se aparecer a mensagem para ativar a API, clique em "CONTINUAR E ATIVAR A API".
  2. Clique em "CRIAR APP". e dê um nome descritivo ao agente (por exemplo, "Assistente de varejo de varejo").
  3. Clique em "Agente" no tipo de aplicativo.

462bb48664e9a14e.png

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

10eceef44b1600d1.png

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

2ffae953bbad38e5.png.

Insira o nome da ferramenta:Retail Shopping Tool

Insira a descrição da ferramenta:

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.

Insira o esquema: OpenAPI no formato YAML:

Essa é a parte em que usamos o endpoint de back-end para capacitar o agente. Copie a especificação OpenAPI abaixo e substitua o marcador de posição de 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 com os valores padrão e clique em "Salvar".

  1. Volte para o agente neste ponto porque queremos adicionar a "Ferramenta" para "Instruções" do agente. Adicione o seguinte ao marcador 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.

Confira se a opção "Ferramenta de compras para varejo" está selecionada em "Ferramentas disponíveis" e salve o agente novamente.

5. Teste o agente

No painel direito, você verá a seção "Agente de visualização" que permite testar seu agente.

Como você pode ver na captura de tela abaixo, saudei um usuário e iniciei meu chat com um pedido de camisa branca com azul:

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! Está tudo certo com o agente.

6. Exemplo de fluxo da conversa

Neste ponto, é possível testar e iterar o fluxo do 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!

Poucos comandos de shot

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

Isso significa que queremos adicionar alguns exemplos ao builder do agente para ter um formato de resultado consistente.

Em uma das capturas de tela anteriores na seção "Testar o agente" veremos 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 direito do agente:

  1. Digite o seguinte em "Insira a entrada do usuário" :

dc8c010c36400e64.png

Você verá uma resposta como esta:

e31d9f53bf5564c8.png

Você também verá a matriz JSON retornada pelo endpoint da API.

  1. Agora clique em "Agent Name" (como na imagem abaixo destacada com uma marca de seleção vermelha) na margem da seção de visualização. Todas as guias na seção de visualização 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 o nome de exibição "Response with images" ou algo semelhante e clique em "Criar".
  2. Agora, acesse a guia de respostas destacada com uma marca de seleção preta na imagem acima e substitua o texto "Estou vendo. Você está procurando sandálias amarelas. Está correto?" pelo 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". no topo.

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

Agora, vá em frente e teste com uma entrada do usuário:

450166a929645353.png

Alguns outros tipos de resposta:

be8908c99cd33730.png

É isso. Criamos e testamos com sucesso um agente de conversa para nosso app de varejo.

7. Implantação e integração

Quando estiver satisfeito com seu agente, você poderá implantá-lo facilmente em vários canais usando as integrações do Agent Builder. Você pode incorporá-lo ao seu site, integrá-lo a plataformas conhecidas de mensagens ou até mesmo criar um app dedicado para dispositivos móveis. Também podemos usar a API Agent Builder diretamente em nossos aplicativos cliente da Web, que são abordados 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. de recursos do Terraform.
  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 o poder de nosso mecanismo de análise personalizado com a interface intuitiva do Agent Builder, criamos um assistente inteligente de compras de 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 salto no sentido de tornar as pesquisas contextuais e vetoriais acessíveis, eficientes, realmente orientadas por significado e agnósticas.