Interacciones naturales en IoT combinando MQTT y ChatGPT

Natural interactions in IoT combining MQTT and ChatGPT

A medida que la tecnología de IoT avanza rápidamente, se vuelve más fácil interactuar con dispositivos y entre dispositivos. Sin embargo, el nuevo desafío en el campo de IoT es hacer que la interacción sea más natural, eficiente e inteligente.

Los Modelos de Lenguaje Avanzados (MLA) como ChatGPT, GPT-3.5 y GPT-4, creados por OpenAI, han ganado mucha popularidad en todo el mundo últimamente. Esto ha creado muchas oportunidades para combinar la Inteligencia Artificial General (AGI) con el dominio de IoT, ofreciendo prometedoras vías para el progreso futuro.

ChatGPT es una avanzada aplicación de procesamiento de lenguaje natural que puede lograr fácilmente conversaciones naturales con humanos gracias a sus excelentes habilidades de procesamiento de lenguaje natural. Message Queuing Telemetry Transport (MQTT) es el protocolo principal en IoT que permite la transmisión de datos en tiempo real y eficiente a través de una comunicación ligera y de baja capacidad y mediante un modelo de publicación/suscripción.

Al combinar el protocolo MQTT con ChatGPT, podemos visualizar un futuro en el que la interacción inteligente entre humanos y máquinas en el campo de IoT sea más fluida y accesible.

  • ChatGPT permite a los usuarios controlar sus dispositivos domésticos inteligentes utilizando un diálogo natural en el campo de los hogares inteligentes, mejorando su experiencia de vida en general.
  • En el campo de la automatización industrial, ChatGPT ayuda a los ingenieros a analizar eficientemente los datos de los equipos, lo que conduce a un aumento de la productividad y la eficacia.

Este blog te mostrará cómo combinar el protocolo MQTT con una aplicación de procesamiento de lenguaje natural como ChatGPT y te dará un ejemplo sencillo de cómo utilizarlos juntos para aplicaciones inteligentes en el campo de IoT.

Conceptos Básicos

Antes de empezar, echemos un vistazo rápido a algunos conceptos fundamentales de MQTT y ChatGPT.

MQTT

Como se mencionó anteriormente, el protocolo MQTT es un protocolo de mensajería ligero que utiliza un modelo de publicación/suscripción. Se aplica ampliamente en diversos campos como IoT, Internet móvil, hardware inteligente, telemática, ciudades inteligentes, telemedicina, energía y petróleo.

El broker MQTT es el componente clave para conectar muchos dispositivos IoT utilizando el protocolo MQTT. Utilizaremos EMQX, un broker MQTT altamente escalable, en nuestra solución para garantizar una conexión eficiente y confiable de dispositivos masivos de IoT y el manejo y entrega en tiempo real de mensajes y flujos de eventos.

Podemos utilizar un cliente MQTT para conectarse al broker MQTT y comunicarse con los dispositivos IoT. En este blog, utilizamos MQTTX, un cliente MQTT de código abierto multiplataforma que proporciona aplicaciones de escritorio, de línea de comandos y basadas en web. Puede probar la conexión con brokers MQTT y ayudar a los desarrolladores a desarrollar y depurar rápidamente servicios y aplicaciones MQTT.

ChatGPT

GPT (Generative Pre-trained Transformer) es un modelo de aprendizaje profundo que sobresale en la generación y comprensión de texto. ChatGPT puede comprender y producir lenguaje natural y tener diálogos naturales y fluidos con los usuarios. Necesitamos utilizar la API que ofrece OpenAI para comunicarnos con el modelo GPT y aprovechar las habilidades de procesamiento de lenguaje natural de ChatGPT.

Interfaz de ChatGPT

Diseño y Preparación de la Solución

Utilizando las funcionalidades del protocolo MQTT y ChatGPT, nuestro objetivo es diseñar una solución que permita una integración y interoperabilidad perfectas entre ambos.

Utilizaremos la API que ofrece OpenAI para comunicarnos con el modelo GPT y escribiremos un script de cliente para lograr la funcionalidad de procesamiento de lenguaje natural similar a ChatGPT. El cliente MQTT en este script recibirá el mensaje y lo enviará a la API, generando la respuesta en lenguaje natural. La respuesta se publicará en un tema MQTT específico para habilitar el ciclo de interacción entre ChatGPT y el cliente MQTT.

Mostraremos el proceso de interacción entre ChatGPT y el protocolo MQTT para la recepción, manejo y entrega de mensajes a través de esta solución.

Sigue los siguientes pasos para prepararte con las herramientas y recursos necesarios.

  • Instala EMQX:

    Puedes utilizar Docker para instalar y lanzar rápidamente EMQX 5.0:

    También puedes instalar EMQX utilizando paquetes RPM o DEB además de Docker. Consulta la Guía de Instalación de EMQX 5.0 para obtener más detalles.

  • Instala la aplicación de escritorio MQTTX:

    Ve al sitio web de MQTTX y elige la versión que coincida con tu sistema operativo y arquitectura de CPU. Luego, descárgala e instálala.

  • Regístrate en una cuenta de OpenAI y obtén una clave de API:

    Ve a OpenAI, inicia sesión o crea una cuenta. Después, haz clic en la esquina superior derecha y elige View API Keys. Luego, en la sección API keys, haz clic en Create new secret key para crear una nueva clave de API. Por favor, guarda esta clave de manera segura ya que la necesitarás para la autenticación de la API en programas posteriores.

Una vez que hayas completado estos pasos, tendrás las herramientas y recursos necesarios para integrar el protocolo MQTT con ChatGPT. Para obtener más información y materiales de aprendizaje sobre cómo trabajar con el modelo de lenguaje GPT utilizando la API de OpenAI, puedes consultar la documentación de OpenAI.

Programación

Después de configurar los recursos y el entorno, construiremos un cliente MQTT utilizando el entorno Node.js. Este cliente recibirá mensajes de un tema MQTT, enviará datos a la API de OpenAI y creará un lenguaje natural con el modelo GPT. El lenguaje natural creado se publicará en el tema MQTT específico para una interacción integrada. También puedes utilizar otros lenguajes de programación como Python, Golang, etc. según tus necesidades y familiaridad. Utilizaremos la API directamente para proporcionar una ilustración amigable para el usuario, pero también puedes utilizar la biblioteca oficial, que ofrece una forma más sencilla de utilizar Node.js y Python.

Para obtener más información, consulta las bibliotecas de OpenAI.

  1. Configura el entorno de Node.js. Asegúrate de tener instalado Node.js (se recomienda la versión 14.0 o superior). Crea una nueva carpeta de proyecto e inicializa el proyecto con el comando npm init. Luego, utiliza este comando para instalar los paquetes de dependencias requeridos:

    Utilizamos axios para enviar solicitudes HTTP, mqtt para conectarse a servidores MQTT y dotenv para cargar variables de entorno.

  2. Utiliza variables de entorno. Crea un archivo llamado .env y coloca tu clave de API de OpenAI en él:

  3. Codifica el programa. Crea un nuevo archivo index.js donde te conectes al broker MQTT, te suscribas al tema MQTT específico y escuches los mensajes. Cuando se reciba un mensaje, utiliza axios para enviar una solicitud HTTP a la API de OpenAI, crear una respuesta de lenguaje natural y publicar la respuesta en el tema MQTT específico. A continuación, se muestra una lista de códigos clave para cada paso como referencia:

    • Utiliza la biblioteca MQTT para conectarte al broker MQTT y suscribirte al tema chatgpt/request/+ de forma predeterminada para recibir mensajes MQTT entrantes:

    • Crea una función genText que se ejecute de forma asíncrona y tome el parámetro userId. Utiliza axios para crear una instancia de cliente HTTP y autenticarte con la clave de API de OpenAI en las cabeceras HTTP. Luego, realiza una solicitud POST a la API de OpenAI para generar respuestas de lenguaje natural. Utiliza el cliente MQTT para publicar las respuestas generadas en un tema específico al que el usuario está suscrito. Almacena los mensajes históricos en el array Messages.

    • Finalmente, guarda los mensajes recibidos con el tema chatgpt/request/+ en el array Messages y llama a la función genText para generar y enviar respuestas de lenguaje natural directamente al tema específico al que el usuario está suscrito. El array Messages puede contener hasta 10 mensajes históricos.

  4. Ejecuta el script:

Ahora hemos terminado el aspecto funcional fundamental del proyecto de demostración. Además de proporcionar la funcionalidad principal, el código incorpora una característica que permite a los usuarios tener un aislamiento de acceso al agregar sufijos distintos a temas específicos. Al preservar el historial de mensajes anteriores, el modelo GPT puede comprender el contexto de la conversación y generar respuestas más coherentes y contextuales, utilizando información de interacciones pasadas.

El código completo está disponible en GitHub en openai-mqtt-nodejs.

Solución Alternativa

Además del ejemplo anterior, otro enfoque para acelerar el desarrollo es utilizar el motor de reglas de EMQX y Webhook para la función de interconexión de datos.

EMQX permite la configuración de reglas que inician una devolución de llamada de Webhook al enviar un mensaje a un tema específico. Necesitamos codificar un servicio web simple que utilice la API de OpenAI para trabajar con el modelo GPT y devolver las respuestas creadas por el modelo GPT a través de HTTP. Para lograr el objetivo de interacción integrada, tenemos dos opciones: crear un nuevo cliente MQTT para publicar las respuestas del modelo GPT en un tema específico, o utilizar directamente la API de Publicación de EMQX. Ambos enfoques nos permiten lograr el resultado deseado de una interacción fluida.

Este enfoque puede ahorrar costos de desarrollo y crear rápidamente PoC o Demo para usuarios con servicios web. No requiere un cliente MQTT independiente y utiliza el motor de reglas de EMQX para simplificar el proceso de integración y manejar los datos de forma flexible. Sin embargo, aún se requiere desarrollar y mantener servicios web, y Webhook puede no ser fácil y conveniente para escenarios de aplicación complejos.

Cada una de las soluciones mencionadas anteriormente tiene sus beneficios, y podemos elegir una solución más apropiada según los requisitos comerciales reales y el nivel de habilidad del desarrollador. En cualquier caso, EMQX, como infraestructura MQTT, proporciona un soporte importante para la integración de sistemas, permitiendo a los desarrolladores crear prototipos de proyectos y avanzar rápidamente en la transformación digital.

Demostración

Podemos utilizar el cliente de escritorio MQTTX para probar este proyecto de demostración después de desarrollar la interacción entre el cliente MQTT y el modelo GPT. La interfaz de usuario de MQTTX es similar a un software de chat, lo que facilita y es más adecuado para mostrar la interacción con chatbots.

Primero, necesitamos crear una nueva conexión en MQTTX que se conecte al mismo servidor MQTT que se utilizó en los ejemplos de código anteriores, es decir, 127.0.0.1. Luego, suscribirse al tema chatgpt/response/demo para recibir respuestas y enviar mensajes al tema chatgpt/request/demo. El sufijo de demostración aquí se puede cambiar a otras cadenas para aislar el acceso entre usuarios. Podemos probar esto enviando un mensaje de Hola:

A continuación, creamos algunos entornos de demostración más complejos. Cuando la temperatura de un sensor supera un umbral preestablecido, el robot ChatGPT enviará un mensaje de alerta a otro tema MQTT, que está conectado a un dispositivo de monitoreo, como un reloj inteligente o un altavoz inteligente. El dispositivo de monitoreo puede utilizar tecnología de lenguaje natural para convertir la información de alerta en voz para que los usuarios puedan recibirla y comprenderla más fácilmente.

También podemos crear un entorno de hogar inteligente que incluya varios temas MQTT que coincidan con diferentes tipos de dispositivos (como luces, aires acondicionados, sonidos, etc.). Utilizaremos ChatGPT para generar comandos en lenguaje natural para interactuar con estos dispositivos en tiempo real a través de clientes MQTT.

Perspectivas futuras

Al combinar ChatGPT y el protocolo MQTT, se puede crear un sistema IoT inteligente con un gran potencial para hogares inteligentes y automatización industrial. Por ejemplo, se puede utilizar el lenguaje natural para controlar los dispositivos del hogar, como interruptores, brillo, color y otros parámetros, y disfrutar de un entorno de vida más cómodo. También se puede utilizar ChatGPT y MQTT para gestionar de forma inteligente los dispositivos industriales y mejorar el proceso de fabricación.

En el futuro, podemos imaginar que ChatGPT u otras herramientas de AGI más inteligentes tendrán un papel más importante en mejorar la eficiencia y la productividad en el campo de IoT, tales como:

  • Análisis de mensajes: Analizar los mensajes MQTT, extraer los datos relevantes y prepararlos para su posterior procesamiento y análisis.
  • Comprensión semántica: Comprender y procesar el significado de los mensajes MQTT y extraer información más precisa.
  • Procesamiento inteligente: Utilizar tecnología de IA para procesar los mensajes MQTT de manera inteligente y ayudar a los usuarios a encontrar soluciones adecuadas rápidamente.
  • Comentarios de los usuarios: Recibir comentarios de los usuarios a través de MQTT y responder de manera adecuada como un agente de interacción inteligente.
  • Asistente virtual: Controlar dispositivos del hogar inteligente a través de tecnología de reconocimiento de lenguaje como un asistente virtual, brindando a los usuarios servicios más inteligentes y eficientes y mejorando la comodidad y conveniencia de la vida.

Conclusión

Este blog profundiza en la integración de MQTT y ChatGPT, revelando las emocionantes posibilidades que ofrecen en varias aplicaciones. Utilizando EMQX, MQTTX y la API de OpenAI, exploramos la implementación de una aplicación de IA similar a ChatGPT. A través de la recepción y reenvío de datos sin problemas mediante MQTT, demostramos con éxito la integración de MQTT y ChatGPT.

A medida que la tecnología de IA se integra cada vez más en los productos (como New Bing que utiliza modelos GPT para motores de búsqueda y Copilot de GitHub), creemos que las tendencias futuras de las tecnologías de IA y IoT también implicarán mejorar las interacciones en lenguaje natural, hacer que el control de dispositivos sea más inteligente y crear casos de uso más novedosos. Estas tecnologías aún no forman parte del entorno de producción, pero están en el horizonte.

En resumen, la integración de MQTT y ChatGPT muestra un campo prometedor y emocionante que merece más atención e investigación. Esperamos que estas tecnologías innovadoras en constante desarrollo hagan del mundo un lugar mejor.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Automatización de tareas de aprendizaje automático Cómo MLCopilot utiliza LLM para ayudar a los desarrolladores a optimizar los procesos de ML

Los modelos de aprendizaje automático se han demostrado como una herramienta poderosa para resolver tareas complejas,...

Inteligencia Artificial

Duck AI presenta DuckTrack un recolector de datos de interacción multimodal con computadoras.

El seguimiento preciso y exacto de las interacciones del usuario constituye un pilar fundamental para avanzar en las ...

Inteligencia Artificial

RELU vs. Softmax en Vision Transformers ¿Importa la longitud de la secuencia? Ideas de un artículo de investigación de Google DeepMind

Hoy en día, una arquitectura común de aprendizaje automático es la arquitectura de transformer. Una de las partes pri...