Skip to content

MQTT WebSocket 与大语言模型 (LLM)

无需暴露自己的公网IP或者端口,就可以从外网调用自托管模型的方法。

什么是 MQTT 协议?

Mqtt 是一种常用于物联网通信的协议,它使用发布/订阅模式,可以实现设备与设备,设备与云端,云端与云端之间的通信。
有关更多Mqtt的信息,可以参考Mqtt 官方文档

当我们需要通过Mqtt进行通信时,一种比较常见的方式是两侧设备连接到同一个mqtt broker,然后通过broker进行消息的转发。 下面是一个简单的小工具,你可以点击 这里 在新标签页打开一个调试窗口

在一侧发送任意的内容,观察接收到的消息


技术解释

在上面的示例中,我们可以观察到,需要输入的要素只有两个:

  • Message: 要发送的消息内容
  • Topic: 消息的目标频道

Topic(主题)可以理解为一个频道,连接到 MQTT broker 的客户端需要注册自己要接收的频道。客户端可以:

  1. 发送消息到指定的频道
  2. 订阅(注册接收)一个或多个频道

需要注意的是,发送和接收并不需要成对出现:

  • 可以只订阅频道而不发送消息
  • 也可以只发送消息而不订阅任何频道

此外,MQTT 还支持使用通配符来订阅多个相关频道,这为消息路由提供了更大的灵活性。

更多细节:

Q1:上面的服务是否使用了本站的服务器进行消息转发?

Emqx 提供了免费的mqtt节点,在该页面中,我们将使用它进行测试
https://www.emqx.com/zh/mqtt/public-mqtt5-broker

Q2: 我是否可以用自己的服务器搭建一个mqtt broker?

可以,但是需要购买服务器,并且需要配置防火墙,以及配置mqtt broker

Websocket 去了哪里

在通常的情况下,Mqtt往往采用1883端口进行通信,但这个端口并非Web端口。 而浏览器通常只允许被用作访问Web服务,因此,我们需要使用WebSocket进行通信。
在Mqtt3.1中,Websocket的支持已经被标准化,协议细节可以参考MQTT-WS 所以,其实上面看到的调试工具本身就是通过Websocket来发送信息的呢。

利用 Mqtt 传递消息

todo

通过 Mqtt 接入一个本地的 llama 服务端

todo

Mqtt上的消息加密

todo

自组网的LLM集群

todo

LLM调用链的边界路由

todo