welcom ! Handel home

2025年2月15日 星期六

IoT 設備對接 LLM API

 

🌐 如何讓 IoT 設備對接 LLM API

IoT 設備(如 Raspberry Pi、ESP32、Arduino)通常透過 HTTP API、MQTT 或 WebSockets 來與外部 AI 服務(如 LLM API)進行溝通。這裡我們會介紹幾種不同的方式,幫助你將 IoT 設備連接 LLM(如 Ollama、OpenAI、Llama 3)


🔹 方法 1:直接透過 HTTP 請求對接 LLM API

大多數 LLM(如 Ollama、OpenAI、GPT-4、Claude)都提供 HTTP API,IoT 設備可以使用 HTTP 客戶端(如 requestscurl)發送請求

📌 IoT 直接連接 LLM

1️⃣ 設定 IoT 環境

如果你的 IoT 設備是 Raspberry Pi,可以安裝 requests 來發送 API 請求:

bash
pip install requests

2️⃣ 直接發送 HTTP API 請求

這裡假設 Ollama API 運行在 http://192.168.1.100:11434,IoT 設備可以發送請求:

python
import requests # 設定 LLM API 端點 OLLAMA_URL = "http://192.168.1.100:11434/api/generate" # 設定請求的 payload payload = { "model": "mistral", "prompt": "請解釋 IoT 如何連接 LLM API。", "stream": False } # 發送 POST 請求 response = requests.post(OLLAMA_URL, json=payload) # 解析回應 data = response.json() print(data["response"])

適用情境

  • IoT 直接請求 本地 LLM 服務(如 Ollama、Llama.cpp
  • IoT 透過 WiFi4G LTE 連接雲端 LLM API(如 OpenAI GPT-4、Claude

🔹 方法 2:使用 MQTT 中介 IoT 和 LLM

在 IoT 領域,MQTT(Message Queuing Telemetry Transport) 是一種廣泛使用的通訊協議。如果 IoT 設備無法直接存取 API,則可以使用 MQTT Broker(如 Mosquitto) 來讓 IoT 設備與 LLM 溝通。

📌 架構

1️⃣ IoT 設備 透過 MQTT 發送請求(主題:iot/llm/request
2️⃣ 伺服器 監聽請求並呼叫 LLM API
3️⃣ LLM 回應結果 發布到 MQTT(主題:iot/llm/response
4️⃣ IoT 設備 訂閱 iot/llm/response 取得 LLM 回應


📌 伺服器端(Python + MQTT + LLM)

這個程式會監聽 iot/llm/request,然後向 Ollama API 發送請求,再將回應發送到 iot/llm/response

python
import paho.mqtt.client as mqtt import requests import json MQTT_BROKER = "mqtt.example.com" MQTT_REQUEST_TOPIC = "iot/llm/request" MQTT_RESPONSE_TOPIC = "iot/llm/response" OLLAMA_API_URL = "http://192.168.1.100:11434/api/generate" def on_message(client, userdata, message): # 接收 MQTT 訊息 request_data = json.loads(message.payload.decode()) print(f"收到 LLM 請求: {request_data}") # 發送 API 請求 response = requests.post(OLLAMA_API_URL, json={"model": "mistral", "prompt": request_data["prompt"], "stream": False}) llm_response = response.json()["response"] # 發送 LLM 回應到 MQTT client.publish(MQTT_RESPONSE_TOPIC, json.dumps({"response": llm_response})) print(f"發送 LLM 回應: {llm_response}") # 設定 MQTT Client client = mqtt.Client() client.on_message = on_message client.connect(MQTT_BROKER, 1883) client.subscribe(MQTT_REQUEST_TOPIC) print("LLM MQTT 伺服器已啟動,等待 IoT 設備請求...") client.loop_forever()

📌 IoT 設備端(ESP32 / Raspberry Pi)

這段程式碼讓 IoT 設備發送 LLM 請求,並 接收 LLM 回應

python
import paho.mqtt.client as mqtt import json MQTT_BROKER = "mqtt.example.com" MQTT_REQUEST_TOPIC = "iot/llm/request" MQTT_RESPONSE_TOPIC = "iot/llm/response" def on_message(client, userdata, message): response = json.loads(message.payload.decode()) print(f"LLM 回應: {response['response']}") # 初始化 MQTT client = mqtt.Client() client.on_message = on_message client.connect(MQTT_BROKER, 1883) # 訂閱 LLM 回應主題 client.subscribe(MQTT_RESPONSE_TOPIC) # 發送 LLM 請求 request_payload = json.dumps({"prompt": "請解釋 IoT 如何連接 LLM API。"}) client.publish(MQTT_REQUEST_TOPIC, request_payload) # 保持運行,等待回應 client.loop_forever()

適用情境

  • IoT 透過 低功耗 MQTT 連接 雲端或本地 LLM
  • 適用於 無線感測器、ESP32、Arduino 等設備
  • 適合多台 IoT 設備同時請求 LLM

🔹 方法 3:IoT 透過 WebSocket 連接 LLM

如果 IoT 設備 需要即時與 LLM 交互(如 智慧音箱、對話機器人),可以使用 WebSocket 來維持長連線。

📌 伺服器(Flask + WebSocket + LLM)

這個 Flask 伺服器會讓 IoT 透過 WebSocket 與 LLM 互動:

python
from flask import Flask from flask_socketio import SocketIO import requests app = Flask(__name__) socketio = SocketIO(app, cors_allowed_origins="*") OLLAMA_API_URL = "http://192.168.1.100:11434/api/generate" @socketio.on("llm_request") def handle_llm_request(json_data): prompt = json_data["prompt"] response = requests.post(OLLAMA_API_URL, json={"model": "mistral", "prompt": prompt, "stream": False}) result = response.json()["response"] socketio.emit("llm_response", {"response": result}) if __name__ == "__main__": socketio.run(app, host="0.0.0.0", port=5000)

📌 IoT 設備(WebSocket 客戶端)

python
import websocket import json def on_message(ws, message): response = json.loads(message) print(f"LLM 回應: {response['response']}") ws = websocket.WebSocketApp("ws://192.168.1.100:5000", on_message=on_message) ws.run_forever() # 發送請求 ws.send(json.dumps({"prompt": "IoT 連接 LLM 的方式?"}))

適用情境

  • IoT 設備需要即時回應
  • 語音助手、機器人、智慧家庭
  • 比 HTTP 更低延遲

🎯 總結

方法適用情境
HTTP API簡單、適合直接請求
MQTT低功耗、適用 IoT
WebSocket即時互動,如語音助手

不同應用場合可選擇不同方式,讓 IoT 無縫對接 LLM!🚀

沒有留言: