
提前要准备的东西
- 本地电脑或工控小主机装好Ollama服务,拉取轻量的通义千问0.5B模型就够用,终端直接执行命令:
ollama pull qwen2:0.5b - 易语言环境提前加载精易模块,选近期更新的版本即可,用来发起HTTP请求、解析JSON返回值
- 前端物联网网关(我自己用的是刷了ESPHome的ESP32开发板)已经配置好,能把采集到的传感数据POST到本机8989端口,这部分配置网上教程很多就不赘述
易语言端核心配置步骤
- 新建易语言窗口程序,拖入一个「服务器」组件,将组件端口属性设为8989,用来接收网关上报的原始传感数据
- 在服务器组件的「数据到达」事件下,先把收到的字节集数据转成UTF8编码的文本,存入临时变量待处理
- 编写调用本地大模型的请求逻辑,请求地址固定为Ollama默认接口http://127.0.0.1:11434/api/generate,请求体格式可以直接抄:
{ "model": "qwen2:0.5b", "prompt": "判断以下物联网传感数据是否为异常值,只返回0或1,0代表正常1代表异常,不要输出其他内容:" + 收到的传感数据文本, "stream": false, "temperature": 0.7 } - 调用精易模块的「网页_访问_对象」方法发起POST请求,解析返回的JSON内容,取出response字段的结果:如果返回“1”就把这条数据上传到云端服务器,返回“0”则直接丢弃不处理
调试时的注意细节
- 不要把大模型的temperature参数设得太高,保持在0.6-0.8区间就够,数值太高模型容易生成无意义内容,导致判断逻辑失效
- 本地模型尽量选参数量小的版本,没必要硬上7B、14B的大模型,不然推理延迟会很高,传感数据的实时处理需求扛不住,内存占用也会高不少
- 如果网关上报的是二进制格式的传感数据,记得先转成明文文本再传给大模型,否则模型无法识别内容,返回结果会乱掉
如果是跑在配置不高的树莓派、低功耗工控机上,可以换成量化等级更高的qwen2:0.5b-q2_K模型,内存占用大概几百兆,具体看设备实际性能调整反正我自己在家跑了快一周,传感器误触发、数值完全在正常区间的无效上报基本都能筛掉,有类似需求的直接改改代码参数就能用。
评论一下?