Естественные взаимодействия в IoT сочетание MQTT и ChatGPT

Естественные взаимодействия в IoT MQTT и ChatGPT

Поскольку технология Интернета вещей (IoT) быстро развивается, становится проще взаимодействовать с устройствами и между устройствами. Однако новым вызовом в области IoT является создание более естественного, эффективного и умного взаимодействия.

Последнее время большую популярность по всему миру получили передовые модели большого языка (LLM), такие как ChatGPT, GPT-3.5 и GPT-4, созданные OpenAI. Это создало множество возможностей для сочетания общего искусственного интеллекта (AGI) с областью IoT, предлагая многообещающие перспективы для будущего прогресса.

ChatGPT – это передовое приложение обработки естественного языка, которое легко достигает естественных разговоров с людьми благодаря своим отличным навыкам обработки естественного языка. Предоставление телеметрии через очередь сообщений (MQTT) – это основной протокол в IoT, который позволяет осуществлять передачу данных в режиме реального времени и эффективно с помощью связи с низкой пропускной способностью и модели публикации/подписки.

Сочетая протокол MQTT с ChatGPT, мы можем представить себе будущее, где интеллектуальное взаимодействие между человеком и машиной в области IoT станет более плавным и доступным.

  • ChatGPT позволяет пользователям управлять своими умными домашними устройствами с помощью естественного диалога в области умного дома, повышая общий уровень комфорта.
  • В области промышленной автоматизации ChatGPT помогает инженерам эффективно анализировать данные оборудования, что приводит к повышению производительности и эффективности.

В этом блоге мы покажем вам, как сочетать протокол MQTT с приложением обработки естественного языка, таким как ChatGPT, и приведем вам простой пример их совместного использования для создания интеллектуальных приложений в области IoT.

Основные концепции

Прежде чем мы начнем, давайте кратко рассмотрим некоторые основные концепции MQTT и ChatGPT.

MQTT

Как уже упоминалось ранее, протокол MQTT – это легкий протокол обмена сообщениями, который использует модель публикации/подписки. Он широко применяется в различных областях, таких как IoT, мобильный Интернет, умное оборудование, телематика, умные города, телемедицина, энергетика.

Брокер MQTT является ключевым компонентом для подключения множества устройств IoT с использованием протокола MQTT. В нашем решении мы будем использовать EMQX, высокомасштабируемый брокер MQTT, чтобы обеспечить эффективное и надежное подключение массового количества устройств IoT и обработку и доставку данных сообщений и потоков событий в режиме реального времени.

Мы можем использовать MQTT-клиент для подключения к брокеру MQTT и общения с устройствами IoT. В этом блоге мы используем MQTTX, кросс-платформенный MQTT-клиент с открытым исходным кодом, который предоставляет приложения для настольных компьютеров, командной строки и веб-интерфейса. Он может проверять подключение к брокерам MQTT и помогать разработчикам быстро разрабатывать и отлаживать службы и приложения MQTT.

ChatGPT

GPT (Generative Pre-trained Transformer) – это модель глубокого обучения, которая отлично справляется с генерацией и пониманием текста. ChatGPT может понимать и производить естественный язык и иметь естественные и гладкие диалоги с пользователями. Для достижения навыков обработки естественного языка ChatGPT нам необходимо использовать API, которое предлагает OpenAI для взаимодействия с моделью GPT.

Интерфейс ChatGPT

Проектирование решения и подготовка

Используя функциональные возможности протокола MQTT и ChatGPT, мы стремимся разработать решение, обеспечивающее бесшовную интеграцию и взаимодействие между ними.

Мы будем использовать API, предлагаемый OpenAI, для взаимодействия с моделью GPT и напишем клиентский скрипт для достижения функциональности обработки естественного языка, подобной ChatGPT. MQTT-клиент в этом скрипте будет получать сообщение и отправлять его в API, генерируя ответ на естественном языке. Ответ будет опубликован в определенной MQTT-теме для обеспечения цикла взаимодействия между ChatGPT и MQTT-клиентом.

Мы покажем процесс взаимодействия между ChatGPT и протоколом MQTT для приема, обработки и доставки сообщений через это решение.

Пожалуйста, выполните следующие шаги для подготовки необходимых инструментов и ресурсов.

  • Установите EMQX:

    Вы можете использовать Docker, чтобы быстро установить и запустить EMQX 5.0:

    Кроме Docker, вы также можете установить EMQX с использованием пакетов RPM или DEB. Пожалуйста, ознакомьтесь с Руководством по установке EMQX 5.0 для получения более подробной информации.

  • Установите настольное приложение MQTTX:

    Перейдите на веб-сайт MQTTX и выберите версию, которая соответствует вашей операционной системе и архитектуре процессора. Затем загрузите и установите его.

  • Зарегистрируйтесь в учетной записи OpenAI и получите ключ API:

    Перейдите на веб-сайт OpenAI, войдите или создайте учетную запись. Затем нажмите в правом верхнем углу и выберите «View API Keys». Затем в разделе «API keys» нажмите «Create new secret key», чтобы создать новый ключ API. Пожалуйста, сохраните этот ключ в надежном месте, так как вам потребуется он для аутентификации API в последующих программах.

После завершения этих шагов у вас будут инструменты и ресурсы для интеграции протокола MQTT с ChatGPT. Для получения дополнительной информации и учебных материалов о работе с языковой моделью GPT с использованием API OpenAI вы можете ознакомиться с документацией OpenAI.

Кодирование

После настройки ресурсов и среды мы создадим MQTT-клиент, используя среду Node.js. Этот клиент будет получать сообщения из MQTT-топика, отправлять данные в API OpenAI и создавать естественный язык с помощью модели GPT. Созданный естественный язык затем публикуется в конкретном MQTT-топике для интегрированного взаимодействия. Вы также можете использовать другие языки программирования, такие как Python, Golang и т. д., в зависимости от ваших потребностей и знакомства. Мы будем использовать API напрямую для наглядного иллюстрирования, но вы также можете использовать официальную библиотеку, которая предлагает более простой способ использования Node.js и Python.

Дополнительную информацию можно найти в OpenAI Libraries.

  1. Настройте среду Node.js. Убедитесь, что установлена Node.js (рекомендуется версия 14.0 или выше). Создайте новую папку проекта и инициализируйте проект с помощью команды npm init. Затем используйте эту команду для установки необходимых зависимостей:

    Мы используем axios для отправки HTTP-запросов, mqtt для подключения к серверам MQTT и dotenv для загрузки переменных среды.

  2. Используйте переменные среды. Создайте файл с именем .env и поместите в него ваш ключ API OpenAI:

  3. Закодируйте программу. Создайте новый файл index.js, в котором подключитесь к брокеру MQTT, подпишитесь на конкретный MQTT-топик и слушайте сообщения. Когда сообщение будет получено, используйте axios для отправки HTTP-запроса в API OpenAI, создайте ответ на естественном языке и опубликуйте ответ в конкретном MQTT-топике. Ниже приведен список ключевых кодов для каждого шага для вашего справочника:

    • Используйте библиотеку MQTT для подключения к брокеру MQTT и подписки на топик chatgpt/request/+ по умолчанию для получения входящих MQTT-сообщений:

    • Создайте функцию genText, которая асинхронно выполняется и принимает параметр userId. Используйте axios для создания экземпляра HTTP-клиента и аутентификации с помощью ключа API OpenAI в заголовках HTTP. Затем выполните POST-запрос в API OpenAI для генерации естественных языковых ответов. Используйте клиент MQTT для публикации сгенерированных ответов в определенный топик, на который подписан пользователь. Храните исторические сообщения в массиве Messages.

    • Наконец, сохраните полученные сообщения с темой chatgpt/request/+ в массиве Messages и вызовите функцию genText для генерации и отправки ответов на естественном языке напрямую в определенный топик, на который подписан пользователь. Массив Messages может содержать до 10 исторических сообщений.

  4. Запустите скрипт:

Мы завершили основную функциональную часть демонстрационного проекта. Помимо предоставления основного функционала, код включает функцию, которая позволяет пользователям иметь изоляцию доступа путем добавления отдельных суффиксов к определенным топикам. Благодаря сохранению истории предыдущих сообщений модель GPT может понять контекст беседы и генерировать более связные и контекстуальные ответы, используя информацию из предыдущих взаимодействий.

Полный код доступен на GitHub по адресу openai-mqtt-nodejs.

Альтернативное решение

Помимо приведенного выше примера, еще один подход к ускорению разработки – использование правилового движка EMQX и вебхука из функции моста данных.

EMQX позволяет настраивать правила, которые инициируют обратный вызов вебхука при отправке сообщения в определенный топик. Нам необходимо написать простой веб-сервис, который использует API OpenAI для работы с моделью GPT и возвращает созданные моделью GPT ответы через HTTP. Чтобы достичь цели интегрированного взаимодействия, у нас есть два варианта: либо создать новый MQTT-клиент для публикации ответов модели GPT в определенный топик, либо непосредственно использовать API публикации EMQX. Оба подхода позволяют нам достичь желаемого результата безшовного взаимодействия.

Этот подход может сэкономить затраты на разработку и быстро создать PoC или демонстрационное приложение для пользователей с помощью веб-сервисов. Он не требует отдельного MQTT-клиента и использует правила движка EMQX для упрощения процесса интеграции и гибкой обработки данных. Однако он все равно требует разработки и поддержки веб-сервисов, а вебхук может быть не таким простым и удобным для сложных сценариев приложений.

Каждое из вышеупомянутых решений имеет свои преимущества, и мы можем выбрать более подходящее решение, основываясь на реальных бизнес-требованиях и уровне навыков разработчика. В любом случае, EMQX, как MQTT инфраструктура, предоставляет важную поддержку для системной интеграции, позволяя разработчикам создавать прототипы проектов и быстро продвигать цифровую трансформацию.

Демо

После разработки взаимодействия между MQTT клиентом и моделью GPT, мы можем использовать MQTTX рабочий стол клиента для тестирования этого демо-проекта. Пользовательский интерфейс MQTTX похож на чат-программу, что упрощает и более подходит для демонстрации взаимодействия с чат-ботами.

Сначала нам нужно создать новое соединение в MQTTX, которое подключается к тому же MQTT серверу, что и в предыдущих примерах кода, то есть 127.0.0.1. Затем подпишитесь на тему chatgpt/response/demo, чтобы получать ответы и отправлять сообщения на тему chatgpt/request/demo. Суффикс “demo” здесь можно заменить на другие строки, чтобы изолировать доступ между пользователями. Мы можем протестировать это, отправив сообщение Привет:

Затем мы создаем несколько более сложных демо-сред. Когда температура датчика превышает предустановленный порог, робот ChatGPT отправит сообщение с предупреждением в другую MQTT тему, которая подключена к устройству мониторинга, такому как умные часы или умная колонка. Устройство мониторинга может использовать технологию обработки естественного языка, чтобы преобразовать информацию из предупреждения в речь, чтобы пользователи могли ее легче получить и понять.

Мы также можем создать умную домашнюю среду, которая включает несколько MQTT тем, соответствующих разным типам устройств (таким как свет, кондиционеры, звуки и т. д.). Мы будем использовать ChatGPT для генерации команд на естественном языке для взаимодействия с этими устройствами в режиме реального времени через MQTT клиенты.

Перспективы будущего

Комбинируя ChatGPT и протокол MQTT, вы можете создать интеллектуальную IoT систему с огромным потенциалом для умных домов и промышленной автоматизации. Например, вы можете использовать естественный язык для управления домашними устройствами, такими как выключатели, яркость, цвет и другие параметры, и наслаждаться более комфортной обстановкой. Вы также можете использовать ChatGPT и MQTT для умного управления вашими промышленными устройствами и улучшения процесса производства.

В будущем мы можем представить себе, что ChatGPT или более умные инструменты AGI будут играть более важную роль в повышении эффективности и производительности в области IoT, такие как:

  • Анализ сообщений: Анализировать MQTT сообщения, извлекать связанные данные и готовить их к дальнейшей обработке и анализу.
  • Семантическое понимание: Понимать и обрабатывать значение MQTT сообщений и извлекать более точную информацию.
  • Интеллектуальная обработка: Использовать технологии искусственного интеллекта для интеллектуальной обработки MQTT сообщений и помощи пользователям в быстром нахождении подходящих решений.
  • Обратная связь пользователя: Получать обратную связь пользователя через MQTT и адекватно реагировать в качестве интеллектуального агента взаимодействия.
  • Виртуальный помощник: Управлять умными домашними устройствами через технологию распознавания речи в качестве виртуального помощника, предоставляя пользователям более умные и эффективные услуги и повышая удобство и комфорт жизни.

Заключение

Этот блог углубляется в интеграцию MQTT и ChatGPT, раскрывая захватывающие возможности, которые они предлагают в различных приложениях. Используя EMQX, MQTTX и OpenAI API, мы исследуем реализацию AI-приложения, аналогичного ChatGPT. Благодаря безупречному приему и пересылке данных через MQTT, мы успешно демонстрируем интеграцию MQTT и ChatGPT.

По мере того, как AI-технологии становятся всё более интегрированными в продукты (например, New Bing, использующий модели GPT для поисковых систем, и Copilot GitHub), мы полагаем, что будущие тенденции AI и IoT технологий также будут включать в себя улучшение взаимодействия на естественном языке, сделав управление устройствами более умным и создавая более новые сценарии использования. Эти технологии еще не являются частью производственной среды, но уже на горизонте.

В заключение, интеграция MQTT и ChatGPT показывает многообещающее и захватывающее направление, заслуживающее большего внимания и исследования. Мы надеемся, что эти постоянно развивающиеся инновационные технологии сделают мир лучше.