Blog
>
Chatbots e Design de Conversação
>
...

Como Construir um Chatbot com GPT e a Plataforma da Landbot

Barbora Jassova
Editorial Manager, Landbot
Ilustração: Adan Augusto
construir chatbot com gpt

À medida que a inteligência artificial continua a evoluir, ela traz avanços notáveis. Um dos avanços na IA mais recentes e mais comentados é o GPT-3, um modelo excepcional de processamento de linguagem natural (NLP) desenvolvido pela OpenAI, que emprega aprendizagem profunda (“deep learning”) para gerar texto que se assemelha muito à linguagem humana.

Por que isso é tão importante?

Ele representa uma mudança radical na criação de chatbots, pois em combinação com o construtor visual certo — como a Landbot — pode tornar a criação de bots de IA acessível a qualquer pessoa.

Neste tutorial passo a passo, demonstramos como construir um chatbot com GPT-3 para o seu canal do WhatsApp sem escrever uma única linha de código, caso não seja o seu forte ou você simplesmente queira acelerar o desenvolvimento do seu chatbot .

Porém, antes de começarmos, vamos esclarecer algumas coisas que você deve saber ao trabalhar com o GPT.

Diferenças Entre a API de Conclusão e a API Chat do GPT

A OpenAI oferece dois tipos principais de produtos GPT: API de conclusão (“completion”) e API de chat.

Essas duas APIs oferecem recursos e vantagens diferentes, mas muitas vezes são erroneamente tratadas como intercambiáveis. Para obter os melhores resultados, é essencial escolher a API certa para o seu caso de uso.

Os modelos da API de conclusão são projetados para gerar texto com base em um “prompt” ou entrada parcial. Eles se destacam em tarefas como conclusão de texto (como as sugestões automatizadas que você vê ao escrever um e-mail), geração de texto e tradução de idiomas. Eles são mais comumente usados ​​para assistência de redação, geração de conteúdo ou sumarização.

Por outro lado, os modelos de API de chat são treinados especificamente para facilitar as interações de conversação. Seu objetivo é simular uma conversa com uma compreensão de linguagem semelhante à humana. Esses tipos de modelos são mais adequados para tarefas que envolvem interações, fornecendo respostas a consultas do usuário e participando em diálogo.

Os modelos de chat são significativamente mais difíceis de treinar do que os modelos de conclusão.

Embora um modelo de conclusão normalmente gere uma única resposta dada uma solicitação, um modelo de chat é capaz de lidar com a tomada de turno natural em uma conversa e pode manter o contexto a partir de diferentes “inputs” do usuário.

Em suma, ao escolher o modelo, você deve considerar cuidadosamente seu caso de uso, o objetivo que deseja alcançar e os recursos técnicos da sua equipe.

Limitações e Problemas do GPT

Os modelos de linguagem grandes (LLM) do GPT não são isentos de problemas.

Os problemas mais comuns que você encontrará são:

  • Alucinações. Quando um bot se desvia do padrão e inventa uma resposta, isso é chamado de alucinação. Você pode tentar minimizar a probabilidade de isso acontecer, fornecendo-lhe um “prompt” realmente claro e definindo a temperatura o mais baixo possível. Ainda assim, não há garantia de que seu bot não terá alucinações de vez em quando.
  • Tempo limite. Como todas as APIs, de vez em quando, o GPT falha ou demora muito para responder. Como você verá no tutorial abaixo, você pode ajudar a regular esse problema adicionando “Response Routing” ao seu Webhook. Dessa forma, quando ele falhar, você pode remover o usuário do loop de conversa e oferecer uma mensagem de erro/nova tentativa, ou simplesmente direcioná-lo para um fluxo de conversa alternativo baseado em regras em vez de uma conversa de IA.

Embora você não possa eliminar completamente esses problemas, existem maneiras de mantê-los sob controle para minimizar o impacto. Discutiremos isso mais adiante no tutorial.

Como Construir um Chatbot com GPT-3 Sem Código

Neste tutorial, mostraremos um template GPT-3 pré-projetado do WhatsApp. O bot em questão é um bot de satisfação do cliente que foi projetado para coletar dados e resumir o incidente caso um cliente esteja insatisfeito com o serviço/produto. Ele usa o modelo da API de conclusão.

O artigo oferece uma abordagem passo a passo do template, e PORQUÊS e COMOs detalhados por trás de tudo o que você encontrará ao trabalhar com ele.

Clique aqui para acessar o template WhatsApp-GPT-3 para acompanhar o tutorial!

NOTA: Se a leitura não for a sua forma preferida de aprender, você pode assistir à gravação do webinar de IA para WhatsApp que explica o mesmo fluxo:

1. Configurar as Contas

Para poder reproduzir ou criar um chatbot semelhante, você precisará se inscrever ou fazer login em suas contas Landbot e OpenAI. A Landbot oferece um teste gratuito. No caso da OpenAI, você receberá um crédito de $5, que é suficiente para durar cerca de três semanas de testes pesados, embora você tenha três meses para gastá-lo. No geral, o preço da OpenAI depende do volume de solicitações e do modelo de GPT que você usará. No entanto, é bastante rentável.

Assim que você criar sua conta OpenAI, você será redirecionado para a área de “keys” (chaves) da API. Caso contrário, basta clicar no ícone da sua conta no canto superior direito e selecionar “View API keys” (Exibir chaves de API.)

2. Descreva/Revise o Propósito e o Fluxo do Chatbot

Queremos que esse chatbot de IA faça o que for necessário para coletar o número do pedido do cliente, o endereço de e-mail e um resumo do problema. Em seguida, ele deve se conectar com e enviar essas informações para o banco de dados da equipe de suporte ao cliente — neste caso, armazenado no Airtable — para verificar se o e-mail e o número do pedido foram verificados.

O fluxo é dividido em duas partes principais.

A primeira parte é um “loop” onde o GPT solicitará as informações necessárias do usuário. A caixa de diálogo continuará até que o bot tenha todos os dados que foi instruído a coletar.

Na segunda parte do fluxo, o bot criará um resumo dessa conversa e enviará para nosso banco de dados Airtable.

3. Configure uma Mensagem de Abertura

Antes de mais nada, precisamos configurar a primeira mensagem que o cliente receberá pelo WhatsApp. A ideia aqui é usar uma pergunta simples e estruturada para avaliar a experiência:

O template oferece essa configuração simples, mas você pode editar o conteúdo da pergunta como achar melhor. Como se trata de um bot do WhatsApp, significa que você terá o nome do usuário automaticamente, sem perguntar, e poderá usá-lo para personalizar a conversa desde o início.

Agora, como o GPT foi projetado para coletar relatórios de incidentes, apenas os usuários que clicarem no rosto triste conversam com o bot de IA. Quem clicar na opção muito ou pouco satisfeito receberá uma resposta simples de “obrigado” e o chat será encerrado.

Como a maioria das respostas segue esse caminho, o modelo conecta o botão roxo (padrão) com a mensagem de agradecimento e fecha o chat. O botão padrão é particularmente útil nos casos em que você tem muitas respostas diferentes que são importantes, mas não afetam a direção do fluxo. Não há necessidade de arrastar uma seta de cada resposta individualmente.

Agora, arrastaremos uma seta separada do botão “cara triste” para criar um fluxo de IA para atender clientes insatisfeitos.

4. Configure uma "Caixa de Memória" da Conversa

Antes de mais nada, vamos criar uma caixa de armazenamento para o chat. Pense nisso como uma caixa vazia que você vai preencher com a conversa conforme ela é criada.

Por que essa etapa é tão importante?

Quando enviarmos esta caixa para o GPT, ela atuará como sua memória para que o bot não peça a mesma informação duas vezes e nos ajude a manter um fluxo de conversação lógico e útil. Sem isso, o GPT continuaria fazendo as mesmas perguntas repetidamente.

Para criar a “caixa”, usaremos o bloco “Set a Variable” (Definir uma variável):

Como estamos usando um template, os campos de variável e valor já estão preenchidos.

É importante observar que a variável que armazena todos os dados da conversa está em formato de “array.” O campo “Type the value” (Digite o valor) inclui colchetes vazios, que representam a caixa vazia onde a conversa será armazenada.

Nota: Você sempre pode criar suas próprias variáveis ​​para armazenar os dados coletados pelo chatbot. A melhor prática é dar-lhes nomes descritivos (por exemplo, “@conversation_history” em nosso caso) para que você saiba exatamente quais são as informações que elas estão ou estarão armazenando.

5. Conecte o Fluxo ao GPT

Primeiro, usaremos o bloco “Set a Variable” (Definir uma variável) novamente para armazenar nossa chave de API da OpenAI. Esta etapa não é obrigatória se você estiver construindo seu próprio fluxo. No entanto, é muito útil ao criar templates, pois torna a configuração do template mais fácil de editar. De fato, graças a isso, definir a variável será praticamente a única coisa que você terá que fazer para ativar a conexão.

Acesse sua conta OpenAI e copie sua chave de API.

Em seguida, você pode simplesmente testar a conexão no bloco Webhook. Ainda assim, para maior clareza, explicaremos a configuração caso você queira reproduzir a conexão do zero.

Clique no bloco Webhook para abrir o editor.

Você verá que, no caso deste template, o campo “URL & Method” (URL e método) já está preenchido com o método POST e um URL do modelo de conclusão (“Completion”.)

Se você mesmo preenchesse isso, encontraria essas informações nos documentos da API OpenAI em “Completions” > “Create Completion.”

Portanto, mesmo trabalhando do zero, tudo o que você precisa fazer é copiar e colar o URL e definir o comando como POST.

Em seguida, mova sua atenção para o segmento “Customize Header” (Customizar cabeçalho) do editor Webhook.

Este é o espaço onde você precisa inserir a autorização da API.

Você pode encontrar essas informações no “Example request” (Exemplo de solicitação) no segmento “Create Completion” (Criar conclusão.)

A chave do cabeçalho do cliente é “Authorization” (Autorização) e o valor é a palavra “Bearer” seguida de um único espaço e sua chave de API.

Como você criou a variável de chave da API, o modelo extrai automaticamente sua API para o Webhook usando essa variável.

A próxima seção do bloco que requer atenção é a parte “Customize body” (Personalizar corpo) Mais uma vez, no template, já está preenchido.

Se você fosse fazer esta parte sozinho, você precisaria consultar a seção “Example request” (Exemplo de solicitação) na documentação de Completions do OpenAI e copiar o seguinte:

Esta sequência específica:

  • Modelo GPT (Existem muitos modelos GPT disponíveis. No entanto, em nosso caso, estamos usando “text-davinci-003” que, com base em testes, consideramos ser o mais confiável.)
  • Prompt (Um prompt é, em outras palavras, um conjunto de instruções para o GPT que esclarece o objetivo da solicitação. Deve ser o mais claro e direto possível, não deixando espaço para interpretações. Sinta-se à vontade para repetir os comandos várias vezes para conseguir isso. Um aviso claro ajuda a evitar alucinações.)
  • Tokens máximos (Tokens são as unidades básicas que os modelos GPT da OpenAI — incluindo o ChatGPT — usam para calcular o comprimento de um texto. Eles são caracteres ou grupos de caracteres que podem ou não corresponder a palavras. Mas, para fins de simplificação, você pode pensar neles como o número de caracteres. O "Exemplo de solicitação" nos dá 7 tokens que nos dariam apenas 3-4 palavras no máximo. Observe que o modelo está definido para 2.000, embora seja improvável que essa conversa use ou tenha que usar tantos, serve simplesmente como um limite máximo antes que a conversa seja interrompida.)
  • Temperatura (A configuração de temperatura do modelo GPT é, nas palavras mais simples, uma indicação para a IA sobre o quanto é permitido improvisar e “ser criativa”. A temperatura mais baixa possível é 0 e a mais alta 1. Os incrementos são medidos em decimais , por exemplo, 0.1, 0.2 etc. Definimos a temperatura do nosso bot como 0, o que significa que ele só pode funcionar com o que está lá. Você pode querer aumentar a temperatura se estiver trabalhando com casos de uso mais criativos.)

O prompt usado em nosso modelo é o seguinte (mas em inglês):

Um cliente (@name) está entrando em contato porque algo deu errado. Você deve agir como um agente de suporte amigável encarregado de coletar uma ideia clara do que deu errado com o pedido. Sabemos que houve um problema, mas precisamos saber o que foi, então você precisa descobrir. Além disso, você tem de obter o endereço de e-mail e o número do pedido (não mostre o resumo da compra ao usuário e não crie nenhuma informação). Faça apenas uma pergunta de cada vez e seja amigável. Seu trabalho não é dar suporte, apenas coletar as informações. Não crie nenhuma informação, ela deve ser fornecida pelo cliente. Aqui está o seu histórico de conversa com o cliente: @conversation_history, depois de reunir todas as três informações do cliente e ele não precisar mais de ajuda, diga 'Um agente irá ajudar você'. Certifique-se de usar as palavras-chave 'Um agente irá ajudar você' somente quando você tiver um resumo claro do problema (pelo menos uma frase do usuário), um número de pedido e um endereço de e-mail e o cliente não precisar mais de ajuda. Cliente: @user_text. Você: \n"

Ele proíbe o bot de criar informações, enfatizando a coleta e o resumo e fazendo isso várias vezes. Ele também introduz a variável que armazena toda a conversa para que o bot possa acessar a memória atualizada a cada retorno do loop. Ele também informa que as respostas criadas pelo usuário do bot são armazenadas como @user_text. E, como é um modelo de conclusão, ele foi projetado para concluir a caixa de diálogo, daí o prompt “Você: \n”, para que o bot saiba que deve concluir as respostas às entradas do usuário.

A próxima seção no editor de webhook é “Test your request” (Teste sua solicitação.) Mais uma vez, já está tudo configurado. No entanto, clique no botão “Test your request” para garantir que tudo esteja funcionando corretamente.

Se a conexão estiver funcionando bem, você receberá uma resposta de 200.

As últimas seções a tratar são “Save Responses as Variables” (Salvar respostas como variáveis) e “Response Routing” (Roteamento de resposta.)

O “Save Responses as Variables” nos permite salvar a resposta do GPT em uma variável e mostrá-la ao usuário. O modelo é configurado de forma que apenas puxe e mostre o texto que você deseja que o usuário veja.

NOTA: Se você está curioso sobre como configurar esta variável para salvar apenas a parte do texto da resposta GPT menos todos os bits de código, consulte o webinar WhatsApp-GPT no minuto 49:10.

O “Response Routing” faz um pouco de controle de danos. Se a conexão Landbot-GPT estiver funcionando bem (200), o fluxo continua no loop GPT que projetamos. Se houver um erro (429) e os servidores GPT estiverem sobrecarregados, permite redirecionar para a mensagem “Tente novamente mais tarde”.

Isso é tudo para o bloco Webhook. Graças ao template, você realmente não precisará lidar com nenhuma configuração. Porém, se você decidir construir um chatbot com GPT você mesmo, estas são as etapas pelas quais você terá que passar.

6. Configure a Fórmula para Enviar a Conversa para a “Caixa de Memória”

Enquanto a resposta de erro 429 do webhook redireciona os usuários para a mensagem de tentar novamente mais tarde, a resposta 200 os leva ao loop de conversação com o bot.

Conforme mencionado, para que a conversa realmente funcione e leve a algum lugar, o bot precisa se lembrar dos dados coletados em cada “rodada”. Para fazer isso, precisamos nos certificar de armazenar a conversa dentro da “caixa vazia” que criamos no início do fluxo usando o bloco “Set a Variable” (Definir uma variável.)

Para preenchê-lo, estamos utilizando o bloco Fórmulas. Resumindo, este bloco permite realizar ações que normalmente requerem alguma codificação, como cálculos mais complexos, condições ou alterações avançadas de formatação etc. Mas, em vez de codificar, você usa funções mais semelhantes às fórmulas das Planilhas da Google.

Se você deseja saber mais sobre como o bloco Fórmulas funciona e o que você pode fazer com ele, confira nosso tutorial em vídeo na Landbot Academy.

No entanto, para os propósitos deste guia, não há mais nada a fazer aqui. Você só precisa saber que estamos usando a fórmula “Push” para enviar @response (GPT) e, posteriormente, @user_text' (entrada do usuário) dentro de nossa caixa de memória de conversação vazia @conversation_history.

É assim que a fórmula se parece:

Push(Push(@conversation_history, '@response'), '@user_text')

7. Crie o Loop da Conversa

Assim que tivermos uma fórmula que garanta o preenchimento da caixa do histórico da conversa, podemos prosseguir para a conversa real.

O bloco Fórmulas nos leva ao bloco “Ask a question” (Faça uma pergunta.) Em vez de um texto fixo, o campo “question text” (texto da pergunta) do bot é preenchido com a variável @response que armazena e exibe a resposta do GPT, seja ela qual for naquele espaço específico no loop da conversa. O usuário tem a oportunidade de responder com suas próprias palavras e sua resposta é armazenada na variável @user_text.

Em teoria, você já poderia retornar ao bloco Webhook a partir daqui. No entanto, isso criaria uma conversa sem fim. É por isso que, antes de conectar novamente ao Webhook e fechar o loop, precisamos dar uma saída ao bot se ele tiver todas as informações de que precisa.

8. Configure a Condição para Terminar a Conversa Quando o Objetivo for Alcançado

Uma maneira muito simples de permitir que a conversa chegue ao fim e coletar todos os dados é usando o bloco “Conditional Logic” (lógica condicional.)

Como, em nosso prompt, instruímos o GPT a dizer  “Um agente irá ajudar você” (“An agent will look into this”) quando já tiver todas as informações necessárias, o template usa esta resposta como condição para deixar o bot sair do loop:

Dessa forma, se o bot disser que o agente entrará em contato com o usuário, o fluxo o interpretará como um sinal de que todas as informações necessárias foram coletadas e levará à saída verde para o fluxo EXIT. Se a variável @response não contiver a palavra “agente”, ele levará à saída rosa e conversa irá retornar ao bloco Webhook para repetir o loop.

9. Definir o Fluxo de Saída

Se você estivesse construindo esse fluxo do zero, a coisa mais fácil a fazer aqui seria copiar o bloco Webhook que você configurou anteriormente, ir para “Customize Body” (Customizar Corpo) e simplesmente atualizar o prompt para fornecer novas instruções (consulte a gravação do webinar minuto 54:20.)

No entanto, como o template com o qual estamos trabalhando foi criado para simplificar sua vida, você realmente não precisa lidar com o bloco Webhook, se não quiser. Usamos o mesmo truque de antes, empregando o bloco “Set a Variable” (Definir uma variável) para que você não precise lidar com campos de Webhook se não estiver confiante o suficiente.

Então, se você quiser modificar o prompt final, basta abrir o editor “Set a Variable” (Definir uma variável) e aplicar as alterações no campo “type the value” (digite o valor.)

Dentro do Webhook, o prompt se parece com o seguinte:

Como incluir a variável @final_prompt em vez de um texto fixo, quaisquer alterações feitas no prompt dentro do bloco “Set a Variable” (Definir uma variável) serão refletidas automaticamente.

A resposta final do GPT incluirá um resumo do incidente com todas as informações do cliente necessárias para resolvê-lo.

10. Envie Informação para sua Base de Dados

A última coisa a fazer é enviar os dados coletados para nossa base de dados. O template usa nossa integração nativa do Airtable:

Para aprender como integrar o Airtable, assista esse breve tutorial:

No entanto, sinta-se à vontade para substituir o bloco Airtable pelo bloco de integração das Planilhas da Google ou outro.

Após enviar as informações para a base de dados selecionada, o bot se despede e encerra a conversa.

11. Evite os Erros Mais Comuns

A construção de bots é uma aventura e os detalhes podem escapar de sua atenção. Portanto, se as coisas não estiverem funcionando, certifique-se que:

  • Os nomes das variáveis ​​estão escritos corretamente;
  • Nenhuma das variáveis ​​foi excluída acidentalmente;
  • Você está usando a chave de API correta;
  • Você está usando o modelo GPT correto;
  • Seus tokens não expiraram.
  • E é isso!

Você tem um chatbot de inteligência artificial para WhatsApp funcionando com tecnologia GPT em suas mãos — sem escrever uma única linha de código!

Para Concluir

Esperamos que você tenha achado este artigo útil em sua jornada para se tornar um conhecedor do GPT e criar bots que melhorem as experiências do cliente e ajudem a expandir seus negócios.

Se você estiver interessado em mais recursos relacionados ao uso do GPT em conjunto com o construtor da Landbot, verifique nossa Knowledge Base. Além disso, fique de olho no nosso blog para mais dicas e tutoriais!

Barbora Jassova
Editorial Manager, Landbot
|
author linkedin lanbot