whatsapp
12/02/2023

Que tal usar um Chat GPT-3 no WhatsApp?

Por sidnei

Nesse passo a passo estarei mostrando um exemplo de como integrar um chat bot GPT-3 que é uma API da OPENAI, que criou o ChatGPT.

 

Integrando Chat GPT com WhatsApp

Para fazer esse procedimento estou usando um servidor com Debian (mas já testei o funcionamento com ubuntu 18…).

A integração está sendo feita com:

node.js

venom-bot

api da openai

OBS IMPORTANTE: Nos testes que realizei, criei um servidor apenas para essa finalidade, se você não tiver conhecimento técnico suficiente para entender o que está sendo feito, sugiro que instale em uma maquina virtual.

Neste exemplo, estou utilizando usuário “root” para fazer todo procedimento.

 

Instalando o node.js e atualizando o servidor

Vamos começar atualizando o sistema e instalando node.js no servidor:

sudo apt-get update -y && apt-get upgrade -y
curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E bash -
sudo apt-get update
sudo apt install nodejs -y
Depois disso, vamos instalar as dependências no servidor:
sudo apt-get update
sudo apt-get install -y gconf-service libasound2 libatk1.0-0 libatk-bridge2.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget libgbm-dev
Após a instalações dessas bibliotecas, considere reiniciar o servidor.
Prosseguindo, agora vamos instalar o venom-bot que será responsavel por conectar o chatbot ao WhatsApp:
cd /root
mkdir chatbot-whatsapp
cd chatbot-whatsapp
touch index.js
npm i venom-bot
No arquivo index, você vai colocar esse código:
const venom = require('venom-bot');
venom
.create()
.then((client) => start(client));
function start(client) {
client.onMessage((message) => {
if (message.body === 'Olá' || message.body === 'Oi') {
client
.sendText(message.from, 'Estou pronto!')
.then((result) => {
console.log('Result: ', result); //retorna um objeto de successo
})
.catch((erro) => {
console.error('Erro ao enviar mensagem: ', erro); //return um objeto de erro
});
}
});
}
Agora teste o funcionamento e veja se o chatbot está funcionando digitando esse comando abaixo no terminal do servidor:
node index.js
Se estiver tudo certo, será exibido um QRCode para você autorizar o navegador dessa aplicação a usar o seu WhatsApp
Exemplo de QRCode do chatbot

Exemplo de QRCode do chatbot

Depois disso, poderá testar digitando um “Olá” ou “Oi” para o WhatsApp conectado ao chatbot.
E ele deverá responder pra você “Estou pronto!”
Exemplo de resposta do chatbot

Exemplo de resposta do chatbot

Se até essa etapa está tudo ok, podemos prosseguir.

 

Instalando a API do OPenAI e integrando com WhatsApp

Agora vamos para integração com a api do openai, vamos fazer a integração do gpt-3 com o WhatsApp
Para isso, vamos instalar a api do openai:
cd /root/chatbot-whatsapp
npm i openai
Deverá criar um arquivo chamado “.env” com suas credenciais de acesso do openai (organização e api de acesso).
OBS IMPORTANTE: é necessário se cadastrar no site da openai.com
Depois disso poderá adquirir as informações nos seguintes links:
OPENAI_API_KEY=https://platform.openai.com/account/api-keys
ORGANIZATION_ID=https://platform.openai.com/account/org-settings
Já o “PHONE_NUMBER=” é o numero do WhatsApp que você vai colocar no qrcode.
touch .env
echo "OPENAI_API_KEY=COLEAQUISUAAPI" >> /root/chatbot-whatsapp/.env
echo "ORGANIZATION_ID=COLEAQUISUAORGANIZACAO" >> /root/chatbot-whatsapp/.env
echo "[email protected]" >> /root/chatbot-whatsapp/.env
Agora você pode substituir o código do arquivo index, ou criar um novo arquivo para testar, neste exemplo estou criando um novo arquivo:
touch gpt.js
E deverá colocar o seguinte código nele:
const venom = require('venom-bot');
const dotenv = require('dotenv');
const { Configuration, OpenAIApi } = require("openai");
dotenv.config();
venom.create({
session: 'bot-whatsapp',
multidevice: true
})
.then((client) => start(client))
.catch((error) => {
console.log(error);
});
const configuration = new Configuration({
organization: process.env.ORGANIZATION_ID,
apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const getGPT3Response = async (clientText) => {
const options = {
model: "text-davinci-003",
prompt: clientText,
temperature: 1,
max_tokens: 4000
}
try {
const response = await openai.createCompletion(options)
let botResponse = ""
response.data.choices.forEach(({ text }) => {
botResponse += text
})
return `Chat GPT ??\n\n ${botResponse.trim()}`
} catch (e) {
return `? OpenAI Response Error: ${e.response.data.error.message}`
}
}
const commands = (client, message) => {
const iaCommands = {
davinci3: "/bot",
}
let firstWord = message.text.substring(0, message.text.indexOf(" "));
switch (firstWord) {
case iaCommands.davinci3:
const question = message.text.substring(message.text.indexOf(" "));
getGPT3Response(question).then((response) => {
/*
* Faremos uma validação no message.from
* para caso a gente envie um comando
* a response não seja enviada para
* nosso próprio número e sim para
* a pessoa ou grupo para o qual eu enviei
*/
client.sendText(message.from === process.env.PHONE_NUMBER ? message.to : message.from, response)
})
break;
}
}
async function start(client) {
client.onAnyMessage((message) => commands(client, message));
}
Agora teste o funcionamento e veja se a integração está funcionando digitando esse comando abaixo no terminal do servidor:
node gpt.js
Se estiver tudo certo, será exibido um QRCode para você autorizar o navegador dessa aplicação a usar o seu WhatsApp
Depois disso, poderá testar digitando qualquer frase ou pergunta iniciando por “/bot”
Então o bot vai responder você com a inteligência artificial configurada no código do arquivo gpt.js
Resposta do chat gpt-3

Resposta do chat gpt-3

Bom é isso, espero que esse passo a passo ajude você.

Reiterando que utilizei um servidor somente para essa finalidade, ou seja, para fins de testes.

Referencias para publicação desse passo a passo:

https://github.com/victorharry/zap-gpt

https://platform.openai.com

https://github.com/orkestral/venom