Passo a Passo
## DEEPSEEK vs CHATGPT & WHATSAPP API
- Download LM Studio e Node 20
1- Executar LM Studio e baixar modelo deep seek v2 lite
2- Executar Terminal
a. node -v
b. mkdir comunidadezdg
c. cd comunidadezdg
d. npm init -y
e. npm install whatsapp-web.js qrcode-terminal axios
f. New-Item deepseek.js -ItemType File
g. New-Item chatgpt.js -ItemType File
h. abrir deepseek.js e chatgpt.js com editor de texto e colar conteúdo
i. abrir 2 terminais
- node deepseek.js
- node chatgpt.js
3- Oi! Que dia bonito hoje! (Edge GPT | Firefox DeepSeek)
4- Configuração API ChatGPT (modelo e token) e API DeepSeek (modelo)
DEEPSEEK.JS
const { Client, LocalAuth } = require('whatsapp-web.js');
const qrcode = require('qrcode-terminal');
const axios = require('axios');
// Objeto para armazenar o histórico de conversas
const conversationHistory = {};
// Função para processar mensagens usando LM Studio com histórico
async function processMessage(text, userId) {
try {
// Inicializa o histórico do usuário, se não existir
if (!conversationHistory[userId]) {
conversationHistory[userId] = [];
}
// Adiciona a mensagem do usuário ao histórico
conversationHistory[userId].push({ role: "user", content: text });
// Limita o histórico para as últimas 10 interações
if (conversationHistory[userId].length > 10) {
conversationHistory[userId].shift();
}
const response = await axios.post('http://localhost:1234/api/v0/chat/completions', {
model: "deepseek-coder-v2-lite-instruct",
messages: [
{ role: "system", content: "Vocês são duas pessoas inteligentes e curiosas conversando sobre diversos assuntos. Respondam de forma natural, amigável e com um toque de humor leve. Evitem respostas robóticas ou formais demais, e façam perguntas para manter a conversa interessante. Procure não usar respostas muito longas, com frases usando até 300 caracteres e seja ao mesmo tempo intelectual e casual. Seja divertido, bem humorado e procure melhorar o dia com quem você estiver conversando. Piadas e histórias felizes são bem vindas. Seja sempre cortês e educado." },
...conversationHistory[userId] // Envia o histórico completo do usuário
],
temperature: 0.7,
max_tokens: 4000
});
let reply = response.data.choices[0].message.content;
// Remove qualquer ... antes de responder
reply = reply.replace(/[\s\S]*?<\/think>/g, '').trim();
// Adiciona a resposta da IA ao histórico
conversationHistory[userId].push({ role: "assistant", content: reply });
console.log(`Resposta gerada para ${userId}: ${reply}`);
return reply;
} catch (error) {
console.error('Erro ao processar mensagem:', error);
return 'Desculpe, não consegui processar sua mensagem.';
}
}
// Função para aguardar um tempo
const wait = (ms) => new Promise(resolve => setTimeout(resolve, ms));
// Inicializa o cliente do WhatsApp
const client = new Client({
authStrategy: new LocalAuth({ clientId: `deepseek` }) // Salva a sessão localmente
});
// Gera o QR Code no terminal
client.on('qr', (qr) => {
qrcode.generate(qr, { small: true });
});
// Quando estiver pronto, exibe uma mensagem
client.on('ready', () => {
console.log('Client is ready!');
});
// Escuta mensagens recebidas
client.on('message', async (message) => {
console.log(`Mensagem recebida de ${message.from}: ${message.body}`);
// Envia digitando
const chat = await message.getChat();
await chat.sendStateTyping()
// Espera 5 segundos antes de processar
await wait(5000);
// Processa a mensagem com LM Studio usando o histórico
const response = await processMessage(message.body, message.from);
// Responde a mensagem no WhatsApp
message.reply(response);
});
// Inicializa o cliente
client.initialize();
CHATGPT.JS
const { Client, LocalAuth } = require('whatsapp-web.js');
const qrcode = require('qrcode-terminal');
const axios = require('axios');
// Objeto para armazenar o histórico de conversas
const conversationHistory = {};
// Função para processar mensagens usando a API do ChatGPT com histórico
async function processMessage(text, userId) {
try {
// Inicializa o histórico do usuário, se não existir
if (!conversationHistory[userId]) {
conversationHistory[userId] = [];
}
// Adiciona a mensagem do usuário ao histórico
conversationHistory[userId].push({ role: "user", content: text });
// Limita o histórico para as últimas 10 interações
if (conversationHistory[userId].length > 10) {
conversationHistory[userId].shift();
}
const response = await axios.post('https://api.openai.com/v1/chat/completions', {
model: "gpt-4o",
messages: [
{ role: "system", content: "Vocês são duas pessoas inteligentes e curiosas conversando sobre diversos assuntos. Respondam de forma natural, amigável e com um toque de humor leve. Evitem respostas robóticas ou formais demais, e façam perguntas para manter a conversa interessante. Procure não usar respostas muito longas, com frases usando até 300 caracteres e seja ao mesmo tempo intelectual e casual. Seja divertido, bem humorado e procure melhorar o dia com quem você estiver conversando. Piadas e histórias felizes são bem vindas. Seja sempre cortês e educado." },
...conversationHistory[userId] // Envia o histórico completo do usuário
],
temperature: 0.7,
max_tokens: 4000
}, {
headers: {
'Authorization': `Bearer sk-proj-********************`,
'Content-Type': 'application/json'
}
});
let reply = response.data.choices[0].message.content.trim();
// Adiciona a resposta da IA ao histórico
conversationHistory[userId].push({ role: "assistant", content: reply });
console.log(`Resposta gerada para ${userId}: ${reply}`);
return reply;
} catch (error) {
console.error('Erro ao processar mensagem:', error.response ? error.response.data : error.message);
return 'Desculpe, não consegui processar sua mensagem.';
}
}
// Função para aguardar um tempo
const wait = (ms) => new Promise(resolve => setTimeout(resolve, ms));
// Inicializa o cliente do WhatsApp
const client = new Client({
authStrategy: new LocalAuth({ clientId: `chatgpt` }) // Salva a sessão localmente
});
// Gera o QR Code no terminal
client.on('qr', (qr) => {
qrcode.generate(qr, { small: true });
});
// Quando estiver pronto, exibe uma mensagem
client.on('ready', () => {
console.log('Client is ready!');
});
// Escuta mensagens recebidas
client.on('message', async (message) => {
console.log(`Mensagem recebida de ${message.from}: ${message.body}`);
// Envia digitando
const chat = await message.getChat();
await chat.sendStateTyping()
// Espera 5 segundos antes de processar
await wait(5000);
// Processa a mensagem com a API do ChatGPT usando o histórico
const response = await processMessage(message.body, message.from);
// Responde a mensagem no WhatsApp
message.reply(response);
});
// Inicializa o cliente
client.initialize();