Parte 1 - Criando com a Vonage e o Couchbase para transformar a comunicação e os dados
Vamos imaginar uma mudança de paradigma na forma como percebemos o papel da IA no local de trabalho. Em vez de a IA substituir funções, o que aconteceria se ela viesse para aprimorar o trabalho das pessoas nessas mesmas funções? Em outras palavras, em vez de temer que a IA torne os empregos redundantes, usamos a IA para melhorar nossos próprios fluxos de trabalho e nos tornarmos mais produtivos.
Isso parece exagerado? Não precisa ser.
Nesta série de postagens em duas partes do blog, vamos descobrir como aproveitar a precisão e a clareza da pesquisa vetorial para criar uma experiência de suporte ao cliente que capacite os agentes de suporte. O resultado final será melhorar sua eficácia, não substituí-los.
Por que focar nos agentes de suporte ao cliente? Bem, porque eles, mais frequentemente do que muitas outras funções, passam o dia inteiro precisando acessar grandes quantidades de conhecimento em uma ampla variedade de tópicos e alternar entre os tópicos de forma rápida e eficiente. Eles precisam fazer tudo isso e, ao mesmo tempo, manter a simpatia e a acessibilidade com os clientes que estão entrando em contato com eles, muitas vezes em um estado de angústia. Os agentes de suporte ao cliente fazem esse trabalho todos os dias.
Poderíamos criar uma experiência para eles que lhes fornecesse acesso a um contexto útil com mais rapidez e menos esforço para cada ticket de cliente em que estivessem trabalhando? Sim, e é exatamente isso que vamos fazer.
tl;dr Caso queira pular direto para a implementação, você pode encontrar um exemplo totalmente funcional desse aplicativo em GitHub juntamente com instruções detalhadas do README.
Aqui está o que vamos construir juntos -
Um aplicativo Ruby on Rails que permite que os agentes de suporte ao cliente:
-
- Receber e responder aos clientes no painel do aplicativo via WhatsApp
- Veja as respostas de consultas resolvidas anteriormente que se relacionam com o tíquete aberto atual para fornecer um contexto crítico
- Marque os tíquetes como resolvidos e adicione a resposta resolvida à base de conhecimento para contextualizar futuras consultas dos clientes
Tudo isso será desenvolvido usando três serviços:
-
- Couchbase CapellaUm banco de dados como serviço (DBaaS) totalmente gerenciado para armazenar informações de usuários e tíquetes, juntamente com as incorporações de vetores que representam a base de conhecimento das soluções resolvidas
- API de mensagens da VonageA API de comunicação multicanal que permite conversas bidirecionais no WhatsApp, SMS, Facebook Messenger e outros provedores
- API de incorporação da OpenAIO OpenAI oferece um serviço que converte os dados fornecidos em representações vetoriais desses dados para permitir a pesquisa vetorial
Não tem certeza do que é pesquisa vetorial e incorporação vetorial? Dê uma olhada em esta postagem do blog que explica tudo e como começar em 5 minutos. Quando terminar de lê-lo, volte aqui e continue a jornada!
Pronto para começar a construir? Vamos a isso!
Andaimes do aplicativo Rails
A primeira etapa de qualquer novo aplicativo Rails começa com o amado trilhos novos no terminal, e este projeto não é diferente.
Vá em frente e inicialize um novo aplicativo executando o seguinte em sua linha de comando:
1 |
trilhos novo whatsapp_support_aplicativo -css vento de cauda |
Esse comando criará um aplicativo Rails totalmente novo com TailwindCSS instalado. Usaremos o Tailwind para estilizar o frontend do aplicativo.
Em seguida, quando o comando terminar de ser executado, mude para o novo diretório e vamos instalar as dependências adicionais de que precisaremos, ou seja, o Vonage Ruby SDK, o Couchbase Ruby ORM e um popular Ruby OpenAI SDK:
1 |
feixe adicionar Vonage couchbase-orm rubi-openai |
Neste ponto, vá em frente e execute instalação do pacote para instalar essas dependências.
Agora, vamos criar o inicializador para os clientes Vonage e OpenAI em nosso aplicativo:
1 2 |
toque configuração/inicializadores/Vonage.rb toque configuração/inicializadores/openai.rb |
Enquanto estivermos criando arquivos no diretório config, vamos adicionar também o arquivo de configuração em que definiremos nossas configurações de conexão com o Couchbase:
1 |
toque configuração/couchbase.yml |
Depois de criarmos os arquivos para os inicializadores, podemos criar os arquivos que conterão nossos futuros Models e Controllers:
1 2 3 4 5 |
toque aplicativo/controladores/controlador_de_mensagens.rb toque aplicativo/controladores/controlador de painel.rb toque aplicativo/modelos/ingresso.rb toque aplicativo/modelos/usuário.rb toque aplicativo/modelos/agente.rb |
Os únicos arquivos que ainda precisam ser criados neste momento são as exibições de front-end, que serão criadas mais tarde no arquivo Criação do front-end para o aplicativo seção.
Nesse ponto, sua estrutura de arquivos deve ser parecida com esta, incluindo também todos os arquivos padrão do Rails que não são mencionados abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
whatsapp_support_app/ aplicativo/ controladores/ controlador_aplicativo.rb controlador_de_mensagens.rb controlador de painel.rb modelos/ registro_do_aplicativo.rb ingresso.rb usuário.rb agente.rb configuração/ inicializadores/ Vonage.rb openai.rb couchbase.yml aplicativo.rb ambiente.rb rotas.rb |
A última parte que adicionaremos neste momento é um arquivo para armazenar nossas credenciais e outras informações confidenciais que não queremos verificar no Git ou disponibilizar publicamente:
1 |
toque .env |
Com esse último arquivo, estamos prontos para seguir em frente e criar nossa conta do Couchbase Capella, nosso cluster e nosso bucket para armazenar dados de tíquetes e usuários.
Configuração do Couchbase Capella
O Capella é um banco de dados como serviço (DBaaS) totalmente gerenciado, oferecido a você pelo Couchbase. Ele oferece uma plataforma de dados completa para ajudar a atender a muitas de suas necessidades, desde o armazenamento em cache até a pesquisa de texto completo e a análise de big data com Colunar. Para este aplicativo, vamos aproveitar o banco de dados de documentos JSON da Capella, juntamente com seus recursos de pesquisa vetorial.
Cada documento hospedado no Capella será um ingresso ou um usuário:
-
- A usuário O documento conterá o número de telefone do WhatsApp para o qual o usuário enviou a mensagem.
- A ingresso O documento terá a consulta original, a ID do usuário que fez a consulta, o status do tíquete (ou aberto ou resolvido), eventualmente um resumo da solução e a incorporação do vetor que representa a solução.
Também vamos criar um índice de pesquisa vetorial que permitirá que o aplicativo pesquise nos embeddings hospedados nos documentos do ticket as semelhanças com o ticket em que o agente está trabalhando no momento.
Criar uma conta Capella
A primeira etapa é criar uma conta Capella gratuita. Para isso, navegue até cloud.couchbase.com e inscreva-se com sua conta do Google ou do GitHub ou crie uma conta usando uma combinação de e-mail e senha.
Isso é tudo o que é necessário para criar uma conta! Agora que você tem sua conta, pode criar seu cluster. Um cluster, caso você não esteja familiarizado com a terminologia, é semelhante a um servidor de banco de dados. Vamos lá!
Criar um cluster
O Capella trabalha em um ambiente de várias nuvens, o que significa que você tem a liberdade de escolher implantar seu cluster no AWS, GCP ou Azure. Tudo o que você precisa fazer é clicar em qual deles prefere e o Capella, nos bastidores, cuida do resto para você.
Na página inicial da sua conta, depois de fazer login, clique em + Criar banco de dados no canto superior direito e preencha os detalhes, ou seja, o nome que você escolheu para ele. Se ainda não tiver um nome escolhido, talvez você cluster de suporte ao whatsapp.
Quando estiver pronto, clique no botão final Criar banco de dados e deixe que o Capella faça o resto do trabalho para você.
Agora você tem um cluster, ou seja, um banco de dados. A próxima etapa é adicionar um bucket para armazenar seus dados. Um bucket é semelhante a uma tabela de banco de dados, com diferenças significativas. Como você está trabalhando com dados JSON não estruturados e semiestruturados, um único bucket pode conter diversos tipos de dados.
Criar um balde
Agora que você está na exibição do painel do Capella para o seu cluster, verá outro + Criar no canto superior esquerdo. Depois de clicar no botão, você poderá criar seu primeiro balde Capella.
Vamos nomear o balde whatsapp_support_bucket e certifique-se de clicar no botão usar _default gerado pelo sistema para escopo e coleção caixa de seleção.
Agora, adicione o nome do bucket ao seu .env que você criou anteriormente, assim:
1 |
COUCHBASE_BUCKET=nome_do_seu_bucket |
Com seu bucket criado, a última coisa que faremos neste momento é criar suas credenciais de acesso e obter sua string de conexão Capella.
Criar credenciais de acesso
Para interagir com seus dados no Capella a partir do seu aplicativo, você precisa conhecer a string de conexão e criar credenciais de acesso. A string de conexão pode ser encontrada clicando no ícone Conectar na barra de navegação superior do painel. Vá em frente e adicione-o à seção .env que você criou anteriormente em sua base de código, assim:
1 |
COUCHBASE_CONNECTION_STRING=sua_corda_de_conexão |
Para adicionar credenciais de acesso, navegue até essa página em suas configurações do Capella, conforme mostrado abaixo, e clique no botão + Criar acesso ao banco de dados botão. Você fornecerá um nome e uma senha e clicará em salvar. Certifique-se de adicionar imediatamente as credenciais ao seu .env pois você não poderá acessar a senha novamente depois disso:
1 2 |
NOME DE USUÁRIO DO COUCHBASE=seu_nome_de_usuário COUCHBASE_PASSWORD=sua senha |
Depois de criar suas credenciais, a configuração do Capella está praticamente concluída! A última etapa é criar o índice de pesquisa de vetores, que você pode seguir conforme as etapas descritas nesta postagem para fazer isso.
Neste ponto, você está pronto para configurar o provedor de serviços da API do WhatsApp que alimentará as conversas no aplicativo. Para nosso provedor de serviços, usaremos a API Vonage Messages.
Usando a API de mensagens da Vonage
A Vonage oferece um conjunto de APIs de comunicação que abrange quase todos os aspectos das interações modernas, de SMS a chamadas telefônicas e chatbots. A API que usaremos para este aplicativo é a API de mensagens e oferece comunicações multicanal em uma única API para Facebook Messenger, WhatsApp, Viber, SMS e MMS.
Nós o usaremos por seus recursos do WhatsApp, nos quais você pode enviar e receber mensagens do WhatsApp de forma programática.
A configuração da funcionalidade do WhatsApp para uso em produção exige várias etapas da Meta, como a criação de uma conta comercial do WhatsApp. Os detalhes sobre o que é isso e as etapas para fazê-lo são explicados na seção Documentação da Vonagee você é incentivado a ler mais sobre isso lá.
No entanto, só porque você ainda não tem uma conta comercial do Meta WhatsApp, não significa que não possa criar e testar a funcionalidade! Entre em cena a sandbox da API do Vonage Messages. Com a sandbox, você pode autenticar seu número de celular pessoal para enviar e receber mensagens do WhatsApp de forma programática. Isso permite que você crie seu aplicativo de forma robusta enquanto aguarda a aprovação da sua conta comercial do Meta WhatsApp.
Agora que entendemos um pouco do contexto, vamos criar uma conta de APIs da Vonage.
Criar uma conta Vonage
Para criar uma conta Vonage, navegue até painel de controle.vonage.com e clique em registrar-se. É gratuito criar uma conta e começar a construir com as várias APIs.
Agora que você tem sua conta, está pronto para configurar o sandbox da API Messages!
Configurar o Sandbox da API do Vonage Messages
Conforme explicado acima, a sandbox é excelente para testar e criar protótipos de seu aplicativo. Ela permite que você envie e receba mensagens de um número de telefone pré-configurado da Vonage e de um número de telefone pessoal aprovado.
Para configurar a sandbox da API do Vonage Messages, você precisará enviar uma mensagem para o número de telefone pré-configurado do Vonage fornecido. O painel o guiará pelo processo, fornecendo um código QR, um link e um número de telefone direto para o qual enviar uma mensagem. Ele também compartilhará a mensagem exata a ser enviada para o número. Você pode optar por usar qualquer um dos métodos para enviar a mensagem.
Depois de enviar a mensagem, você terá configurado com êxito seu número de telefone pessoal para receber e responder a mensagens da sandbox da API do Vonage Messages.
Você notará o espaço na configuração da sandbox para fornecer URLs para mensagens de webhook de entrada e de status. A maneira pela qual você recebe novas mensagens do WhatsApp da API é por meio de um webhook, portanto, você precisa ter um URL acessível externamente para fornecer o acesso ao webhook. Existem ferramentas populares disponíveis que podem expor seu localhost para a Internet e fornecem a você um URL externo, entre eles o ngrok.
Usar o ngrok é tão simples quanto instalá-lo em seu computador e, em seguida, executar ngrok http 3000 em uma janela de terminal separada. Neste exemplo, o comando recebe dois argumentos:
-
- O serviço a ser exposto - http
- A porta em que o servidor localhost está sendo executado - 3000
Siga a Guia de início rápido do ngrok com instruções sobre como instalar o ngrok em seu computador, dependendo se você estiver usando Mac, Linux ou Windows.
Definir as variáveis de ambiente do Vonage
Como você adicionou seus detalhes do Capella ao seu .env agora você adicionará seus detalhes do Vonage ao mesmo arquivo. Ou seja, você precisa adicionar sua chave e segredo da API e o número de telefone pré-configurado da Vonage fornecido a você na sandbox.
Vá em frente e abra o .env e adicione o seguinte:
1 2 3 |
VONAGE_API_KEY=sua_chave_de_api_de_vonagem VONAGE_API_SECRET=seu_vonage_api_secret VONAGE_FROM_NUMBER=sua_vonagem_do_número |
Agora que você configurou o Capella e o Vonage, a última etapa da configuração inicial é criar uma conta da API do OpenAI e adicionar sua chave da API do OpenAI à sua conta do .env arquivo.
Primeiros passos com a API OpenAI Embeddings
Antes de criarmos uma conta no OpenAI, vamos entender por que estamos usando o OpenAI e o que é uma incorporação. Para que todos saibam, não se trata de uma visão abrangente das incorporações vetoriais e do que elas fazem. Em vez disso, considere esta apenas uma breve visão geral para equipá-lo para criar o aplicativo.
Uma incorporação de vetor é uma matriz de números que representa matematicamente uma parte dos dados. Esses dados podem ser um texto, uma imagem, um áudio ou um vídeo. Existem diferentes algoritmos que geram esses embeddings, cada um deles projetado para capturar vários aspectos dos dados de forma a torná-los úteis para os modelos de aprendizado de máquina.
Por exemplo, no contexto do texto, uma incorporação captura o significado semântico de palavras ou frases, permitindo que a IA compreenda as relações entre os conceitos além da simples correspondência de palavras-chave. Essas incorporações tornam-se os blocos de construção de tarefas como sistemas de pesquisa, classificação e recomendação, pois permitem que as máquinas processem e comparem dados complexos com eficiência. Ao usar os modelos avançados da OpenAI, podemos gerar embeddings de alta qualidade que permitirão que nosso aplicativo execute funções avançadas, como correspondência de similaridade de conteúdo, que é exatamente o que ele deve fazer quando busca respostas resolvidas anteriormente para dar suporte aos agentes em seus tickets atuais.
Agora, vamos prosseguir com a configuração de sua conta OpenAI para que possamos começar a criar.
Criar uma conta OpenAI
Para criar uma conta, acesse platform.openai.com e inscreva-se com suas credenciais do Google, da Microsoft ou da Apple, ou crie uma conta usando uma combinação de e-mail e senha.
Agora que você tem sua conta, tudo o que precisa fazer é criar e copiar sua chave de API.
Criar chave de API da OpenAI
Depois de ter uma conta, você pode navegar até platform.openai.com/api-keys e crie uma nova chave de API clicando no botão + Criar nova chave secreta na parte superior direita da página.
Da mesma forma que suas outras credenciais, você precisa salvar imediatamente a chave, pois não será possível visualizá-la novamente no painel após esse momento. Dessa forma, adicione-a à pasta .env assim:
1 |
OPENAI_API_KEY=sua_chave_api |
É isso aí! Neste ponto, você tem todos os seus serviços externos definidos e configurados. Agora você está pronto para criar seu aplicativo. Vamos em frente!
Para continuar...
No segunda parte desta série de duas partesEm seguida, criaremos a lógica comercial do aplicativo e o executaremos pela primeira vez. Não deixe de conferir segunda parte para continuar sua jornada.