Que tal usar um Chat GPT-3 no WhatsApp?
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:
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
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
cd /root
mkdir chatbot-whatsapp
cd chatbot-whatsapp
touch index.js
npm i venom-bot
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
});
}
});
}
node index.js
Instalando a API do OPenAI e integrando com WhatsApp
cd /root/chatbot-whatsapp
npm i openai
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
touch gpt.js
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));
}
node gpt.js
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