Bot de Whatsapp con chatGPT y Javascript
Bot de Whatsapp con chatGPT y Javascript
Últimamente está de moda usar chatGPT para casi todo, es normal, es una inteligencia artificial muy curiosa. ChatGPT se está usando para muchos ámbitos pero los usuarios no dejan de usarlo para tener conversaciones con él de todo tipo de temas.
¿Qué pasaría si lleváramos chatGPT a un bot Whatsapp para que conteste por nosotros? ¿Y en Javascript? Vamos verlos que parece interesante :)
# Requerimientos
Vamos a usar dos librerías para crear este bot de Whatsapp. Una para crear el propio bot y otra que nos facilite la integración con chatGPT (o la api de OpenAI.com)
- Whatsapp-web.js
- ChatGPT-Official
- Token de OpenAI. Obtener token
Prueba de concepto
Vamos a crear una instancia de nuestra sesión de Whatsapp para que esté a la escucha de los mensajes. Capturaremos cada mensaje y se consultará a chatGPT, cuando obtengamos una respuesta de chatGPT contestaremos al usuario o grupo desde nos hayan preguntado en Whatsapp. Así es, muy sencillo.
Para ello creamos un proyecto con npm init
e instalamos las dos dependencias mencionadas anteriormente. Creamos un fichero index.js con el contenido del ejemplo de Whatsapp-web.js e importamos chatGPT.
import { ChatGPT } from 'chatgpt-official';
import qrcode from 'qrcode-terminal'; // Crea e imprime por consola un código QR
import { Client } from 'whatsapp-web.js';
const client = new Client();
const bot = new ChatGPT("OPENAI_API_TOKEN", { model: "text-davinci-003" }); // Forzamos este modelo
client.on('qr', (qr) => {
// Genera y escanea este código con tu teléfono para iniciar sesión
qrcode.generate(qr, { small: true });
});
client.on('ready', () => {
console.log('Client is ready!');
});
client.on('message', async msg => {
// Recibimos el mensaje y nos quedamos con el 'sender' y el 'body'
// sender: Grupo/Usuario que envía en mensaje que usaremos para las conversaciones.
// body: Contiene el texto del mensaje
const conversation_id = msg.sender;
const message = msg.body;
// Consultamos al bot y esperamos la respuesta
const response = await bot.ask(message, conversation_id);
const text = response.response;
// Respondemos con el bot al usuario/grupo que lo haya enviado
let destination = message.from; // Obtenemos quién envió el mensaje
let sendMessageData = await client.sendMessage(destination, text);
console.log(sendMessageData);
});
client.initialize();
Esto sería una prueba de concepto, a partir de aquí ya puedes disparar tu creatividad para darle el comportamiento que quieras.