1. Visão geral
No cenário de varejo dinâmico de hoje, é fundamental oferecer um atendimento excepcional ao cliente e, ao mesmo tempo, permitir experiências de compra personalizadas. Vamos mostrar como criar um aplicativo de chat baseado em conhecimento para responder às perguntas dos 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 (Large Language Model) para validação de relevância e o Agente Builder do Google para inicialização rápida de 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. Ela 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:
- Criar um agente do Vertex AI Agent Builder
- Integrar a ferramenta AlloyDB ao agente
Requisitos
2. Arquitetura
Fluxo de dados: vamos analisar como os dados são processados no sistema:
Ingestão:
Os dados de varejo (inventário, descrições de produtos, interações com clientes) são carregados continuamente no AlloyDB.
Mecanismo de análise:
Usaremos o AlloyDB como mecanismo de análise para realizar o seguinte:
- 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.
- 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.
- Pesquisa vetorial: o mecanismo realiza uma pesquisa de similaridade, comparando o embedding da consulta com os embeddings das 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 respostas em potencial são enviadas ao Gemini para avaliação. O Gemini determina se elas são realmente relevantes e seguras 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 de compras inteligentes. Agora vamos explorar como aproveitamos a magia do Agente Builder para dar vida a esse mecanismo em uma interface de conversa. Confira se você tem o URL do endpoint 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
- No console do Google Cloud, na página de seletor de projetos, selecione ou crie um projeto do Google Cloud.
- Verifique se o faturamento está ativado para seu projeto do Cloud. Saiba como verificar se o faturamento está ativado em um projeto .
- 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.
- 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
- Execute o comando a seguir no Cloud Shell para confirmar se o comando gcloud sabe sobre seu projeto.
gcloud config list project
- Se o projeto não estiver definido, use este comando:
gcloud config set project <YOUR_PROJECT_ID>
- Ative as APIs necessárias. A alternativa ao comando gcloud é pelo console, pesquisando cada produto ou usando este link.
Se alguma API for perdida, você poderá ativá-la durante a implementação.
Consulte a documentação para ver o uso e os comandos gcloud.
Observação importante: você precisa ter concluído 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 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.
- Comece fazendo login na plataforma Agent Builder. Se aparecer a mensagem para ativar a API, clique em "CONTINUAR E ATIVAR A API".
- Clique em "CRIAR APP". e dê um nome descritivo ao agente (por exemplo, "Assistente de varejo de varejo").
- Clique em "Agente" no tipo de aplicativo.
- do Google. Dê um nome descritivo ao agente, como "Assistente de compras de varejo". e definir a região como us-central1
- Insira os detalhes do agente:
- Mude o nome do agente para "Agente de compras de varejo".
- 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.
- Salve-o e deixe as instruções em branco por enquanto.
- Em seguida, clique em Ferramentas no menu de navegação e clique em CRIAR.
Digite o nome da ferramenta: Retail Shopping Tool
Inserir 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:
Esta é a parte em que usamos o endpoint de back-end para ativar o agente. Copie a especificação OpenAPI abaixo e substitua o marcador de posição do URL (entre colchetes) 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".
- 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.
Verifique se a ferramenta "Ferramenta de compras no varejo" está selecionada na seção "Ferramentas disponíveis" e salve o agente novamente.
5. Teste o agente
No painel à direita, você vai encontrar a seção "Agente de visualização", que permite testar o agente.
Como você pode ver na captura de tela abaixo, eu dei as boas-vindas como um usuário e comecei a conversa com um pedido de camisa branca com estampa azul:
Esta é a resposta JSON:
Este é o resultado JSON bruto da função do Cloud que processa a pesquisa de similaridade do AlloyDB. Pronto! Tudo está pronto com o agente agora.
6. Exemplo de fluxo da 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!
Poucos comandos de shot
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 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, a resposta do agente é "Entendo. Você está procurando uma camisa branca com estampas azuis...". Acesse essa resposta ou crie uma nova conversa de teste no painel direito do agente:
- Digite o seguinte em "Insira a entrada do usuário" seção:
Você verá uma resposta como esta:
Além disso, a matriz JSON retornada pelo endpoint da API também vai aparecer.
- 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. Agora clique em "Salvar exemplo" no canto superior direito da seção de visualização. Ela terá esta aparência.
- Salve a conversa com o nome de exibição "Response with images" ou algo semelhante e clique em "Criar".
- 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. Isso está correto?" 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>
- Clique em "Salvar" na parte de cima.
Repita o processo para quantos exemplos quiser com diferentes variações e fluxos de conversa.
Agora teste com uma entrada do usuário:
Outros tipos de respostas:
É 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 o agente, implante-o facilmente em vários canais usando as integrações do Criador de agentes. É possível incorporá-lo ao seu site, integrá-lo a plataformas de mensagens conhecidas ou até criar um app para dispositivos móveis dedicado. Também é possível usar a API Agent Builder diretamente nos nossos aplicativos cliente da Web, como explicamos neste blog.
8. Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta postagem, siga estas etapas:
9. Parabéns
Parabéns! Ao integrar o poder de nosso mecanismo analítico 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 de vetor, demos um grande salto em direção a pesquisas contextuais e vetoriais acessíveis, eficientes, realmente orientadas a significados e agentes.