Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Learn why MongoDB was selected as a leader in the 2024 Gartner® Magic Quadrant™
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
Atlaschevron-right

Aplicativo agente Sentiment Chef com Google Cloud e MongoDB Atlas

Stanimira Vlaeva, Abirami Sukumaran16 min read • Published Jun 24, 2024 • Updated Jun 24, 2024
Google cloudIAAtlasJavaScript
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Em alimentação e restauração, as avaliações dos clientes contêm informações valiosas. No entanto, extrair significado de grandes volumes de dados de texto e mídia é um desafio. Nossa equipe lida com esse problema desenvolvendo o Sintament Chef, um agente de restaurantes inteligentes que vai além da simples análise de avaliações. Veja como fizemos.

O problema: entender as avaliações dos clientes

As avaliações de clientes estão em toda parte – nas redes sociais, sites de avaliações e até mesmo diretamente em sites de empresas. Essas avaliações oferecem uma grande quantidade de opiniões, mas muitas vezes elas estão enterradas em parágrafos de texto ou ocultas em vídeos e fotos. Queríamos entender os sentimentos das avaliações e usar a natureza multimodal dos dados a nosso favor, ajudando os clientes a conversar com nosso agente (assistente de bate-papo) para tomar decisões com base no resumo do feedback.
Escolhemos lidar com esse problema no contexto do setor de restauração — o projeto que construímos é uma plataforma de avaliações de restaurantes.

A solução inicial: análise e resumo de argumentos

Nossa primeira etapa foi criar o Sentiment Chef, um aplicativo da web que usava MongoDB Atlas Triggers para capturar novas avaliações de restaurantes e enviá-las para o Google Cloud Functions. Essas funções aproveitaram o poder do Gemini, um modelo de linguagem grande (LLM) de ponta, para analisar o sentimento (positivo, neutro, negativo) e gerar resumos concisos do texto. Também usamos o Gemini para extrair sentimentos e tags de imagens e vídeos anexados às avaliações.
O resultado? Uma ferramenta poderosa que pode avaliar rapidamente o sentimento do cliente e fornecer uma visão geral das principais conclusões das avaliações. Foi um ótimo ponto de partida, mas entendemos que poderíamos fazer muito mais.

Evolução: da análise aos insights acionáveis

Queríamos transformar o Sentiment Chef em um verdadeiro agente de conversação que pudesse ajudar ativamente os usuários a encontrar sua próxima refeição excelente. Para fazer isso, precisamos:
  1. Expandir nossa base de conhecimento: Usamos o Atlas Data API para integrar nossos dados de avaliação de restaurantes com outras informações relevantes, como detalhes de restaurantes, cozinha e dados de localização.
  2. Crie um mecanismo de análise: aproveitamos o BigQuery e seus recursos de aprendizado de máquina para criar um mecanismo que pudesse processar esse conjunto de dados expandido, criar incorporações para pesquisa semântica e gerar respostas diferenciadasàs consultas dos usuários.
  3. Crie um agente de conversação: recorremos ao console do agente Vertex AI para criar uma interface de bate-papo que pudesse interagir com nosso mecanismo de análise, fornecendo aos usuários recomendações personalizadas de restaurantes com base em suas preferências e critérios de pesquisa.

O resultado: um agente de restaurante que consegue

O evoluído Chave de Expressão agora é um chatbot sofisticado que entende linguagem natural e pode responder a perguntas como:
  • Quais são os melhores restaurantes italianos perto de eu com mesas ao ar livre?
  • Procuro um restaurante amigo do veganos com uma ambiente vivo.
  • Você pode recomendar um lugar tranquilo para um jantar romântico?
O agente utiliza os dados armazenados no MongoDB Atlas e os insights gerados pelo nosso mecanismo de análise BigQuery para fornecer respostas precisas e úteis.

Resumo da solução: aplicativo web de análise de sentimentos e agente de chatbot inteligente

O projeto final tem dois componentes principais: um aplicativo web para enviar e analisar avaliações de restaurantes e um agente de chatbot inteligente para interpretar as avaliações.

Análise e resumo de sentimentos com Gemini e MongoDB Atlas Triggers

O Sintament Chef é um aplicativo da web que integra o MongoDB Atlas e o GCP para demonstrar recursos de AI generativa. O objetivo desta etapa é configurar um pipeline sem servidor que receba a avaliação escrita sobre um restaurante por meio do aplicativo da web, processe-a e gere o feedback (positivo, neutro ou negativo) junto com uma classificação (1 a 5) para alimentação, serviço e ambiente — tudo a partir do texto na revisão.
O aplicativo suporta o upload de mídias (imagens e vídeos) para serem anexadas às avaliações. Os arquivos são enviados para um bucket do Google Cloud Storage e analisados pelo Gemini para extrair sentimentos, tags e descrições. O sentimento da mídia contribui para o sentimento geral da avaliação. O texto da avaliação, junto com as tags de imagem e as descrições, são indexados com um índice do Atlas Search. Isso permite que os usuários encontrem facilmente imagens de revisão com a pesquisa de texto.

Agente de restaurante com console de agentes de Vertex AI

O agente de restaurante é um assistente de conversação que ajuda os usuários a encontrar restaurantes que atendam às suas necessidades. O objetivo deste aplicativo é mostrar um agente de restaurante baseado na avaliação do usuário e nas informações do restaurante criadas na Parte 1. Os dados do MongoDB Atlas servem como entrada para o mecanismo de análise que usamos para alimentar o agente de restaurantes! MongoDB Atlas Data API alimenta os dados de restaurantes, avaliações, localizações e classificações para o mecanismo BigQuery Analytics que alimenta o aplicativo Agent Builder Agent. O mecanismo de análise do BigQuery inclui tabelas e modelos (Gemini 1).5 Pro e text-gecko Embeddings) e consultas (pesquisa vetorial e invocação remota do Gemini com generate_text) para alimentar o agente. Usamos funções de cloud sem servidor para invocar o mecanismo de análise na entrada de texto do chat do usuário. O aplicativo de console de agentes Agent Builder invoca o endpoint Cloud Functions (no formato OpenAPI YAML) como a ferramenta para responder às mensagens de chat dos usuários. Toda essa experiência pode ser provisionada de dentro do aplicativo web na Parte 1 usando o endpoint da API Dialogflow CX do agente.

O detalhamento prático

Na seção a seguir, você descobrirá a pilha de tecnologia específica que usamos para implementar o projeto, o fluxo de dados e os links para o repositório de código.

Construindo o aplicativo web Sentiment Chef

A primeira parte do projeto é o aplicativo web Sentiment Chef. O aplicativo permite que os usuários enviem avaliações de restaurantes e analisem seus relacionamentos, classificando-os em três categorias: comida, serviço e ambiente.
Avaliação do cliente com análise de sentido gerada por IA
Finalmente, uma vez que três ou mais revisões são enviadas, o aplicativo gera um resumo. A função de resumo só será executada se o resumo existente tiver mais de sete dias.
O aplicativo Sentiment Chef mostra um resumo gerado por IA das avaliações de restaurantes

Pilha tecnológica

O front-end do aplicativo é construído com o Angular. O aplicativo está hospedado no Firebase Hosting.
O restante das tecnologias é descrito abaixo:
  • MongoDB Atlas — um serviço de banco de dados de nuvem totalmente gerenciado que lida com a implantação, o dimensionamento e as operações do MongoDB
    • MongoDB Atlas Data API — uma interface semelhante ao REST para interagir com os dados do MongoDB, permitindo fácil integração com vários aplicativos e serviços
    • MongoDB Atlas Functions — funções JavaScript sem servidor em execução no MongoDB Atlas
    • MongoDB Atlas Triggers — Triggers orientados por eventos no MongoDB Atlas que trigger funções do Atlas com base em alterações do banco de dados
  • Google cloud
    • API Vertex AI Gemini - gemini-1.0-pro os gemini-1.0-pro-vision modelos e
    • Armazenamento em nuvem do Google
    • Hospedagem do Firebase
O aplicativo aproveita os MongoDB Atlas Triggers e MongoDB Atlas Functions para capturar interações de dados orientadas por eventos dentro de collection de banco de dados. Esses dados são então enriquecidos por meio do Vertex AI Gemini, permitindo análise avançada de sentimento de texto e resumo de texto abrangente.

O fluxo de upload de mídia

Os arquivos de mídia (imagens e vídeos) são enviados para um bucket do Google Cloud Storage usando URLs assinados. Depois que os arquivos são enviados, o aplicativo chama uma função do Google Cloud para extrair metadados usando o Gemini. A saída é uma matriz JSON que representa as tags extraídas, o sentimento e a descrição. Os metadados enriquecidos são enviados de volta para o aplicativo. Após uma revisão ser enviada, os URLs e metadados das imagens são armazenados no Atlas.

O fluxo de envio de avaliações

A avaliação enviada é armazenada em uma coleção do MongoDB Atlas chamada raw_reviews. Um Atlas Trigger encaminha esses dados para uma função do Google Cloud. A função do Google Cloud aprimora o texto de revisão enviando-o para a Vertex AI Gemini usando o SDK Node.js para Vertex AI. Depois que o Gemini faz uma inferência sobre a revisão processada, os resultados da análise de sentimentos são enviados de volta para a função do Google Cloud. Essa função então retorna os dados de sentimento para a Atlas Function, que armazena a avaliação enriquecida na coleção processed_reviews. O aplicativo web tem um observador ativo que é notificado sobre quaisquer novas avaliações processadas, permitindo que ele as exiba imediatamente na interface do usuário.
Você pode explorar o aplicativo Sentiment Chefao vivo e assistir ao vídeo de demonstração. O código completo do projeto está disponível norepositório dedicado do GitHub.

Desenvolvendo o assistente de chat do agente de restaurantes

A segunda parte do projeto é o agente do restaurante. O agente é um assistente de bate-papo que pode responder a perguntas com base nos dados da análise.
O agente aproveita os dados detalhados do MongoDB Atlas e os insights de um mecanismo de análise do BigQuery para fornecer respostas precisas e úteis.

Pilha tecnológica

  • MongoDB Atlas e o MongoDB Atlas Data API
  • Google cloud
    • Modelos de AI generativa da Vertex AI — gemini-1.0-pro, textembedding-gecko
    • Funções do Google Cloud
    • Construtor de agentes de AI da Vertex
    • BigQuery, BQML (Modelos Remotos, Generate_Text, Vector Atlas Search)

Ingestão de dados

Existem várias maneiras de interagir com dados do MongoDB Atlas.
  • MongoDB Atlas Data API
  • Modelo de fluxo de dados do MongoDB para BigQuery:trabalhosde modelo de fluxo de dados do MongoDB para BigQuery para dados de fluxo e lote. Você pode programá-los com base no requisito de trazer os dados operacionais do MongoDB para o BigQuery para o mecanismo de análise.
Nesse cenário, precisamos pré-processar os dados. É por isso que convertemos os dados para o formato JSONL, atualizamos os registros para correção de dados e os disponibilizamos para você ingerir nas tabelas do BigQuery usando os comandos a seguir.
Siga as etapas deste arquivo GitHub — BigQuery Data Ingestion — para configurar o conjunto de dados e as tabelas do BigQuery com os dados necessários para o mecanismo de análise.

Modelos remotos

Nesta parte, interagiremos com modelos de AI Vertex do BigQuery para fazer a análise generativa trabalhar para você exatamente onde os dados residem. Isso exige que criemos uma conexão externa para que o BigQuery possa interagir com a Vertex AI. Go o BigQuery no console do GCP . Agora você deve ver o conjunto de dados e a tabela criados sob sua ID de projeto no painel do Explorador do BigQuery.

Criando conexão externa

  • Clique no botão+ADD ao lado do explorador e selecione "Connections to external data sources" na lista de opções.
  • Selecione o tipo de conexão como “Vertex AI remote models, remote functions and BigLake (Cloud Resource).”
  • Digite um nome de conexão, como bq_llm_connection.
  • Selecione o tipo de localização como "Region " e "us-central1. "
  • Clique no botãoCreate connectione sua conexão externa deverá ser criada imediatamente.
  • Go para conexões externas sob o ID do seu projeto no painel do explorador e clique na conexão que acabamos de criar — ela deve fornecer os detalhes da configuração da conexão.
  • Copiar a ID da conta de serviço.
  • Go até Gerenciamento de Identidade e Acesso e clique no botão GRANT ACCESS.
  • Cole a Conta de serviço da conexão externa que acabamos de copiar na aba “New Principals, atribua o “Vertex AI User,” e salve-o.

Criando modelos remotos

A seguir, você criará um modelo remoto para obter acesso ao modelo de incorporaçãotextembedding-gecko do BigQuery,
  • Expanda seu conjunto de dados “restaurant_review” e navegue até as tabelas que você acabou de criar.
  • À direita, você deve conseguir visualizar o editor SQL. Clique no sinal + para abrir a nova guia editor.
  • Crie o modelo generativo de linguagem grande remota e o modelo de embeddings no BigQuery executando as seguintes queries no Editor SQL do BigQuery:
1--Gemini Remote Model Creation
2CREATE MODEL `restaurant_review.gemini_remote_model`
3REMOTE WITH CONNECTION `us-central1.bq_llm_connection`
4OPTIONS(ENDPOINT = 'gemini-1.5-pro');
5
6--Embeddings Model Creation
7create or replace model restaurant_review.embeddings_model
8REMOTE WITH CONNECTION `us-central1.bq_llm_connection`
9OPTIONS(ENDPOINT = 'textembedding-gecko@latest');
Essas duas DDLs devem criar os modelos remotos que você pode usar para implementar o mecanismo de análise na próxima etapa.

Mecanismo analítico

Esse mecanismo criado sob medida realizará o trabalho pesado de transformar dados brutos em insights aplicáveis. Ele extrai contexto, cria incorporações e direciona o Atlas Search para obter informações relevantes. Construiremos este mecanismo no BigQuery.
Resumindo os parâmetros
Para criar nosso mecanismo de análise “Restaurant Review, precisamos criar uma história resumida de todos os parâmetros que temos dos restaurantes e avaliações da API de dados.
Para fazer isso, execute a seguinte consulta.
1select id, name, address, description, description as content from(
2 SELECT id, name, address, IFNULL (prompt || IFNULL('The grades received as feedback and score against each grade: ' || STRING_AGG(overall_grade_and_score), ' '), 'None') as description FROM (
3select DISTINCT a._id id, a.name, IFNULL(a.address.building, ' ') || ', ' || IFNULL(a.address.street,' ') || ', ' || IFNULL(a.address.zipcode, 0) || ', ' || IFNULL(a.borough, ' ') address,
4'This is a restaurant named: ' || a.name || ' situated at: ' || IFNULL(a.address.building, ' ') || ', ' || IFNULL(a.address.street,' ') || ', ' || IFNULL(a.address.zipcode, 0) || ', ' || ifnull(a.borough, ' ') || '. They serve the cuisine: ' || a.cuisine || '.' || ifnull('Some additional information on this restaurant: ' || a.summary || '.', ' ') || ifnull('Some additional information on this restaurant: ' || b.text || '.', ' ') as prompt, grades.grade || ': ' || SUM(grades.score) OVER (PARTITION BY a._id, grades.grade) as overall_grade_and_score from restaurant_review.restaurants a left outer join restaurant_review.raw_reviews b
5on a._id = b.restaurant_id, UNNEST(grades) AS grades ) GROUP BY id, name, address, prompt
6 )
Esta query processa e resume os dados que ingerimos nas tabelas BigQuery restaurants e raw_reviews.
Convertendo o resumo em incorporações vetoriais e escrevendo o resultado em uma tabela
Converteremos o resumo que criamos na consulta acima em embeddings usando o modelo de embeddings remotos que criamos em uma das etapas anteriores e armazenaremos o resultado em uma tabela separada junto com outras informações importantes.
1CREATE TABLE restaurant_review.restaurant_summary as (
2SELECT id, name, address, description, ml_generate_embedding_result
3FROM ML.GENERATE_EMBEDDING(
4 MODEL `restaurant_review.embeddings_model`,
5 ( select id, name, address, description, description as content from(
6 SELECT id, name, address, IFNULL (prompt || IFNULL('The grades received as feedback and score against each grade: ' || STRING_AGG(overall_grade_and_score), ' '), 'None') as description FROM (
7select DISTINCT a._id id, a.name, IFNULL(a.address.building, ' ') || ', ' || IFNULL(a.address.street,' ') || ', ' || IFNULL(a.address.zipcode, 0) || ', ' || IFNULL(a.borough, ' ') address,
8'This is a restaurant named: ' || a.name || ' situated at: ' || IFNULL(a.address.building, ' ') || ', ' || IFNULL(a.address.street,' ') || ', ' || IFNULL(a.address.zipcode, 0) || ', ' || ifnull(a.borough, ' ') || '. They serve the cuisine: ' || a.cuisine || '.' || ifnull('Some additional information on this restaurant: ' || a.summary || '.', ' ') || ifnull('Some additional information on this restaurant: ' || b.text || '.', ' ') as prompt, grades.grade || ': ' || SUM(grades.score) OVER (PARTITION BY a._id, grades.grade) as overall_grade_and_score from restaurant_review.restaurants a left outer join restaurant_review.raw_reviews b
9on a._id = b.restaurant_id, UNNEST(grades) AS grades ) GROUP BY id, name, address, prompt
10 ))));
Pesquisa de Atlas de similaridade para o texto do usuário e validação LLM da correspondência
Faremos a correspondência do texto do Atlas Search do agente de usuário (que abordaremos em uma etapa seguinte) com as incorporações que temos da tabela que criamos na última etapa.
Vamos presumir que o texto do Atlas Search do usuário seja: "I am looking for Indian cuisine restaurants with good ratings. "
Agora, converteremos isso em incorporações e compararemos com as incorporações na tabela de resumo que criamos na etapa anterior. Isso é feito usando o Vector Atlas Search (Método de distância cosseno). Em seguida, usaremos Gêmeos 1.5 Pro para validar se as correspondências identificadas são relevantes para a pergunta do usuário atribuindo uma porcentagem ou pontuação da relevância da correspondência. Retornaremos as cinco correspondências mais relevantes para o usuário como resposta do chat.
A seguinte query executa exatamente o que explicamos aqui:
1with user_query as (
2 select 'Indian cuisine with the best rating' as query
3)
4select name, description, response,score,perc
5 from (
6SELECT name, description, ml_generate_text_llm_result as response,
7SAFE_CAST(JSON_VALUE(replace(replace(ml_generate_text_llm_result,'```',''),'json',''), '$.match_score') AS FLOAT64) as score,
8SAFE_CAST(JSON_VALUE(replace(replace(ml_generate_text_llm_result,'```',''),'json',''), '$.percentage_match') AS FLOAT64) as perc
9FROM ML.GENERATE_TEXT(MODEL `abis-345004.restaurant_review.gemini_remote_model`,
10 (select name, description, distance, concat('Your objective is to respond with a JSON object of 2 values (percentage_match and match_score) by comparing the result_description: ', description,' against the user_search_query: ', (SELECT query AS content from user_query), ' Your goal is to result: 1) Percentage of match of response to the user_search_query (percentage_match) and 2) Score for the match on a scale of 1 to 10 (match_score). Also remember that the grade and score value in the result_description represents customer feedback for the restaurant and a grade on a scale of A to Z with the corresponding score being the number of votes on it. You can use this information as the restaurant score for comparing against the user_search_query in addition to other details you have in the result_description field. Do not return any other text. Just the JSON object with 2 values - percentage_match and match_score on a scale of 1 to 10.') as prompt from (
11select query, base.id id, base.name name, base.description description, distance
12from VECTOR_SEARCH(
13 TABLE restaurant_review.restaurant_summary,
14 'ml_generate_embedding_result',
15(SELECT text_embedding, content
16 FROM ML.GENERATE_TEXT_EMBEDDING(
17 MODEL `restaurant_review.embeddings_model`,
18 (SELECT query AS content from user_query)) ),top_k => 25) ) X ),
19STRUCT(
20 TRUE AS flatten_json_output))
21) order by perc desc;
A parte em negrito, que é a consulta do usuário, será substituída pelo parâmetro de solicitação quando integrarmos isso em uma função do Cloud.
Funções de nuvem para processar a entrada do usuário
Para orquestrar entre o agente de chat e o mecanismo de análise, criaremos uma função de nuvem que passa o texto do Atlas Search do usuário como uma JSON solicitação , invoca o do BigQuery que SQL mencionamos na última etapa e responde com as cinco principais correspondências relevantes como um de JSON array string. A função será exposta como um ponto de conexão da REST API .
Você pode usar o código-fonte para as funções do Cloud. Você pode navegar até Cloud Functions no console do GCP e criar uma nova função Gen2 Cloud com Java 11 como ambiente de tempo de execução. Substitua o conteúdo do repositório nos arquivos Java e pom.xml, respectivamente.
Você pode implementar diretamente a função Cloud a partir do console de funções Cloud. Seu endpoint deve ficar assim: https://us-central1-*****.cloudfunctions.net/restaurant_agent_from_bq.
Agora que temos o mecanismo de análise pronto e acessível como um endpoint REST, é hora de criarmos o aplicativo Agent Builder Agent para que nossos usuários interajam com o sistema sobre restaurantes.

Agentes de AI da Vertex

O Vertex AI Agent Builder oferece um console para agentes sem código, no qual eles podem criar agentes de AI generativa usando instruções de linguagem natural e exemplos de conversação para os agentes seguirem. O console de agentes apresenta ferramentas para facilitar a criação e a manutenção de agentes, onde os desenvolvedores podem criar agentes de alta qualidade com nível de produção a partir de um protótipo, monitorar o tráfego de produção e melhorar as respostas dos agentes ao longo do tempo.
No nosso caso, usaremos o Agent Builder para nos conectarmos perfeitamente ao endpoint Cloud Function 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.
Construindo o agente
Para criar um novo aplicativo de agente do Agent Builder, consulte as capturas de tela e as etapas em "Construindo um assistente de compras de varejo inteligente (parte 2)" ou a documentação do produto do agente. Nós só visitaremos itens de configuração específicos que são exclusivos do nosso aplicativo aqui:
  • Nome do agente: Smart Restaurant Review
  • Objetivo: Você é um simpático agente de pesquisa e resumo de avaliações de restaurantes. Seu trabalho é responder às perguntas dos clientes sobre o restaurante. Além disso, ajude os clientes a encontrar as melhores combinações de restaurantes para sua pesquisa em nosso banco de dados.
Antes de poder inserir nossas instruções completas na próxima seção, você precisa criar a ferramenta conforme a referenciamos em nossas instruções. Então, salve o agente neste momento e crie a ferramenta. Para fazer isso, clique em Tools e + Create.
  • Nome da ferramenta: Ferramenta de avaliação de restaurantes
  • Tipo: OpenAPI
  • Descrição: esta ferramenta refere-se ao conjunto de dados no backend como a informação de contexto para informações do restaurante. Ele usa como entrada o texto do Atlas Search do usuário resumido pelo agente e corresponde à lista de itens mais apropriada e retorna como uma array de itens.
  • Esquema (YAML):
1openapi: 3.0.0
2info:
3 title: Restaurant Agent from BigQuery
4 description: A Cloud Function to search for restaurants based on user search text.
5 version: 1.0.0
6servers:
7 - url: https://us-central1-YOUR_PROJECT.cloudfunctions.net/YOUR_FUNCTION
8paths:
9 /:
10 post:
11 summary: Find matching restaurants based on search text.
12 operationId: restaurantSearch
13 requestBody:
14 description: JSON object containing the search text.
15 required: true
16 content:
17 application/json:
18 schema:
19 type: object
20 properties:
21 search:
22 type: string
23 description: The user's search query for restaurant matching.
24 responses:
25 '200':
26 description: Successful response with a JSON array of matching restaurants.
27 content:
28 application/json:
29 schema:
30 type: array
31 items:
32 type: object
33 properties:
34 name:
35 type: string
36 description: Restaurant name.
37 description:
38 type: string
39 description: Restaurant description, including location and cuisine.
40 grades:
41 type: object
42 description: Grades received as feedback and score against each grade.
43 properties:
44 A:
45 type: integer
46 description: Number of A grades.
47 B:
48 type: integer
49 description: Number of B grades.
50 P:
51 type: integer
52 description: Number of P grades.
53 C:
54 type: integer
55 description: Number of C grades.
56 '500':
57 description: Internal server error.
Salve a ferramenta.
Lembre-se de que esta é nossa especificação OpenAPI no formato YAML para o endpoint Cloud Functions que criamos na seção anterior. Você pode criar o esquema OpenAPI para qualquer endpoint de sua escolha que seja relevante para seu caso de uso.
Navegue de volta para o agente e edite a seção de instruções para incluir o seguinte:
  • Instruções:
  • Cumprimente o usuário e pergunta como você pode ajudá-lo hoje.
  • Se eles se apresentaram com seu nome ou outro detalhe pessoal, sinta-se à vontade para usar essas informações para abordá-los.
  • Resuma a solicitação do usuário e peça que ele confirme se você entendeu corretamente.
    • Verifique se a solicitação de pesquisa do usuário já tem mais preferências e detalhes de restaurantes.
    • Caso contrário, procure detalhar.
    • Se a solicitação do Atlas Search for muito ampla, peça ao usuário para restringir a solicitação com detalhes específicos que você acredita que podem ser preferências pessoais.
    • Depois de ter todos os detalhes necessários, resuma seu entendimento final da solicitação com o usuário.
  • Use ${TOOL Review Tool} para ajudar o usuário a encontrar o restaurante de seu interesse.
  • Se a solicitação não estiver relacionada aos detalhes do restaurante, comunique normalmente que você não tem informações sobre esse tópico.
  • Não forneça nenhuma informação fora da fonte fornecida a você na ${TOOL Review Tools}.
  • Não ajude com nenhuma informação a menos que tenha certeza de que sabe a resposta.
  • Pergunta se o usuário tem alguma outra query.
    • Em caso afirmativo, repita a etapa acima (etapa 2) novamente.
    • Se não, passe para a próxima etapa.
  • Agradeça ao usuário por seus negócios e se despeça.
Salve o agente para as atualizações mais recentes. Teste seu agente usando a interface de visualização no lado direito do Console do agente.
Console do agente
Aqui está um resumo do exemplo de bate-papo que tive com o agente mais recente que criamos:
Exemplo de conversa
Além disso, se você quiser incorporar esse agente em seu próprio aplicativo da Web, poderá usar a biblioteca do Dialogflow CX para interagir com a API do Dialogflow CX, especificamente o métododetectIntent. Consulte "Building a Smart Retail Shopping Assistant (Part 3)" para criar um endpoint para acessar seu agente de avaliação de restaurantes a partir de seu aplicativo da web!

O que vem a seguir?

Estamos entusiasmados com o potencial do Sentiment Chef e da IA conversacional! Como você deve ter adivinhou, esse caso de uso se aplica a qualquer aplicativo que coleta feedback dos clientes, seja para restaurantes, serviços online ou lojas de varejo. Compreender e responder aos sentimentos abre novas possibilidades para aumentar a satisfação do cliente e refinar as experiências do usuário em vários setores.
Melhorias futuras podem incluir:
  • Solicitações multimodais: permitindo que os usuários façam a pesquisa do Atlas Search com texto e imagens (por exemplo, "Encontre-me um restaurante parecido com esta imagem")
  • Personalização aprimorada: recomendações personalizadas com base nas preferências individuais do usuário e experiências gastronômicas anteriores
  • Integração com sistemas de reservas: Permitindo que os usuários reservem mesas diretamente pela interface de bate-papo
Conte-nos suas ideias e como você está usando AI para aprimorar seus projetos!

Conclusão

Concluindo, criar um resumo de avaliação de restaurante inteligente e um agente de pesquisa com MongoDB, BigQuery, Gemini 1.5 Pro e Agent Builder foi um projeto desafiador, mas satisfatório. Aproveitando o poder da plataforma de dadosdo MongoDB Atlas , os recursos avançados de análise doBigQuery , o raciocínio avançado e os recursos de geração de última geração domodelo Gemini e a experiência de conversação intuitiva doConsole do agente , criamos um agente de conversação que pode fornecer aos usuários informações abrangentes sobre restaurantes. Este agente não apenas aprimora a experiência do cliente, mas também mostra o potencial do AI em revolucionar o setor de hospitalidade.
Esperamos que este artigo tenha inspirado você a explorar as possibilidades das tecnologias de AI e nuvem para seus próprios projetos. Conte-nos o que você construiu com isso!
Se você tiver dúvidas ou quiser se conectar com outros desenvolvedores que estão construindo algo ótimo com o MongoDB, acesse a Comunidade de desenvolvedores a seguir. Para manter-se atualizado com as notícias da GCP e receber atualizações diretamente na sua caixa de entrada ou para participar de discussões ao vivo, AMAs e sessões de roteiro para aprender as últimas diretamente dos Googlers ou para obter créditos gratuitos no QwikLab, inscreva-se no GCP Innovators.

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Tutorial

Anúncio UDF do MongoDB para modelos do BigQuery Dataflow


Apr 02, 2024 | 4 min read
Tutorial

Como criar um sistema RAG usando o Claude 3 Opus e o MongoDB


Aug 28, 2024 | 15 min read
exemplo de código

Trends Analyser


Sep 11, 2024 | 1 min read
Tutorial

Introdução ao Atlas Stream Processing: como criar seu primeiro processador de fluxo


Aug 13, 2024 | 4 min read
Sumário