Bot de Whatsapp con chatGPT y Javascript
13/02/2023#javascript #IA

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)

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.

hecho en Jaén con 💚 copyright © 2024