拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

大模型如何让智能家居从执行器变成决策者:架构与实操

大模型如何让智能家居从执行器变成决策者:架构与实操 1. 从一个真实场景说起为什么大家都在问这个问题去年年底我在做一个全屋智能改造项目业主是一位四十多岁的企业主家里装了大概六十多个智能设备节点灯光、窗帘、空调、地暖、新风、安防、影音全都接进了中控系统。验收那天他站在客厅里对着面板点了半天回头问我一句话“这东西能不能别让我记那么多按钮我就想跟它说句话它自己判断该干嘛。”这句话其实点到了整个智能家居行业最尴尬的地方。过去十年我们做的所谓“智能”本质上是一套条件触发引擎——如果温度高于28度就开空调如果检测到无人就关灯如果到了晚上七点就拉窗帘。这套逻辑在工程上没问题但它离普通人理解的“智能”差得很远。普通人理解的智能是家里有个懂事的管家你说“有点闷”它知道该开窗还是开新风你说“我要睡了”它知道先关灯、再拉窗帘、最后把空调调到睡眠模式而不是让你挨个下指令。ChatGPT这类大语言模型出来之后整个行业都在讨论一件事能不能把这种“理解意图、组织语言、做决策”的能力塞进智能家居系统里让它从“执行器”变成“决策者”。这个问题的答案不是简单的能或不能它牵扯到架构怎么改、算力放哪里、延迟怎么控、隐私怎么保、成本怎么算。我前后折腾了大半年从最早的云端API直连到后来的本地小模型兜底中间踩的坑足够写一篇长文。下面就把我实际做过的方案、遇到的问题、以及最终跑通的架构完整拆一遍。这篇文章适合三类人看一是正在做智能家居产品定义的产品经理二是想自己动手改造家里系统的技术爱好者三是做物联网方案集成、需要给客户讲清楚“AI到底能带来什么”的工程师。不管你是哪一类我都会尽量把原理讲透、把参数给足、把坑标出来让你看完能直接上手或者直接拿去跟团队讨论。2. 核心思路拆解大模型到底该放在智能家居的哪一层2.1 先搞清楚传统智能家居的决策链路长什么样要理解大模型能带来什么改变得先看清楚原来的系统是怎么运转的。一个典型的智能家居控制系统从底层到顶层大致分四层。最底下是设备层就是各种传感器和执行器。传感器包括温湿度、人体存在、光照、门磁、水浸、烟感这些执行器就是灯、窗帘电机、空调红外、继电器模块。这一层的特点是协议杂Zigbee、Z-Wave、Wi-Fi、蓝牙Mesh、RS485、KNX都有每个设备能上报的数据和能接受的指令都很有限。往上一层是网关层负责协议转换和本地组网。比如Zigbee网关把子设备的数据转成MQTT消息发到局域网同时接收指令下发给设备。这一层决定了系统的响应速度和断网可用性是很多方案里最容易被忽视但最关键的一环。再往上是自动化层也就是各种规则引擎和场景引擎。Home Assistant的Automation、米家的智能场景、苹果HomeKit的自动化都属于这一层。它的核心是一个“如果……就……”的匹配器条件满足就触发动作。这一层的瓶颈非常明显规则是人预先写死的覆盖不了没写过的情况而且规则一多就互相打架维护成本极高。最上面是交互层包括手机App、语音助手、墙面面板、中控屏。用户从这里发出指令指令经过解析后传给自动化层。传统语音助手的做法是意图识别加槽位填充——你说“打开客厅的灯”它识别出意图是“开灯”槽位是“客厅”然后去设备列表里找对应的设备执行。这套方案对固定句式有效但稍微换个说法就歇菜比如你说“客厅有点暗”它大概率回你一句“抱歉我没听懂”。2.2 大模型切入的位置替换交互层增强自动化层理解了这四层大模型该放哪里就清楚了。我的判断是大模型不应该直接去控制设备它应该站在交互层和自动化层之间做一个“意图翻译和决策编排”的角色。为什么不让大模型直接控设备原因有三个。第一是延迟云端大模型一次推理动辄一两秒你让它直接控制灯说句话等两秒灯才亮体验是灾难性的。第二是可靠性大模型有幻觉它可能生成一个不存在的设备ID或者一个非法参数直接下发会出问题。第三是成本每一次设备控制都走一遍大模型token消耗扛不住而且大部分控制请求根本不需要大模型参与。所以正确的架构是分层的大模型负责把自然语言转成结构化的意图和参数自动化层负责根据这些意图去执行具体的设备控制。大模型不碰设备它只输出“我要做什么”的结构化描述比如{intent: adjust_environment, target: living_room, action: cool_down, urgency: medium}然后由本地的规则引擎或者一个轻量的决策模块去翻译成具体的设备指令。这个设计的好处是大模型的不确定性被限制在了一个可控的范围内。它就算输出错了最坏情况是意图识别错了而不是直接把设备搞坏。同时常用的固定指令可以走本地缓存或者小模型只有复杂的长尾请求才走大模型成本和延迟都能压下来。2.3 三种落地架构的取舍云端、本地、混合实际做的时候大模型放哪里是第一个要决策的问题。我试过三种方案各有各的适用场景。纯云端方案是最简单的设备数据通过网关上传到云平台云平台调用大模型API做意图解析解析结果再下发回本地执行。这个方案开发快模型能力强但问题也很明显断网就废延迟受网络波动影响大而且家庭数据上传到云端有隐私顾虑。我实测下来从说话到灯亮纯云端方案的平均延迟在1.8到3.5秒之间网络差的时候能到5秒以上体验只能说勉强能用。纯本地方案是把一个小参数量的模型部署在本地网关或者一台常开的小主机上所有推理都在局域网内完成。这个方案延迟极低实测能压到300到800毫秒断网也能用隐私也好。但本地小模型的能力有限复杂意图理解经常出错而且对硬件有要求一个能跑7B量化模型的设备成本至少要多花几百块。混合方案是我最终采用的。核心思路是高频、固定的指令走本地规则或本地小模型低频、复杂的自然语言请求走云端大模型云端不可用时自动降级到本地。具体来说像“开灯”“关空调”这种本地一个轻量分类器就能搞定根本不用惊动大模型。像“我觉得有点闷但是外面好像在下雨”这种需要推理的请求才发给云端大模型让它判断是该开新风还是该开窗。这个方案在体验、成本、可靠性之间找到了一个比较好的平衡点。3. 核心细节解析把大模型接进智能家居要解决哪些硬问题3.1 意图结构化怎么让大模型输出机器能懂的东西大模型输出的是自然语言但自动化层需要的是结构化数据。这中间的转换是第一个技术难点。我的做法是用函数调用Function Calling或者JSON模式强制约束输出格式。具体来说我会在系统提示词里定义好一套意图schema比如{ intent: environment_control, target_area: living_room, target_device: ac, action: set_temperature, parameters: {temperature: 26, mode: cool}, confidence: 0.92 }然后在调用大模型时把response_format设置为json_object并且在提示词里明确要求“只输出JSON不要输出任何其他文字”。实测下来GPT-4级别的模型在JSON模式下的格式合规率能到99%以上但小模型或者便宜模型经常会在JSON前后加解释文字需要在解析层做容错处理。这里有个坑要特别注意不要让大模型自由发挥设备名称。我一开始偷懒让大模型直接输出设备名结果它有时候说“客厅空调”有时候说“客厅的空调”有时候说“Living Room AC”导致匹配失败。后来我改成在提示词里注入一份设备清单要求它只能从清单里选匹配成功率立刻上去了。设备清单不用太长把常用的几十个设备列进去就行太长了反而会稀释模型的注意力。3.2 上下文管理多轮对话怎么记住前面说了什么智能家居的交互经常是多轮的。用户说“把客厅灯调暗一点”系统执行后用户又说“再暗一点”这时候系统得知道“再”指的是刚才那个灯。如果每轮都独立调用大模型它根本不知道上下文就会懵。解决办法是维护一个对话历史缓冲区把最近几轮的对话和系统执行结果都带上。但这里有个权衡上下文越长token消耗越大延迟越高。我的做法是只保留最近5轮对话而且对历史消息做摘要压缩把已经执行完的指令压缩成一句话比如“用户已要求将客厅灯调至50%亮度”而不是保留完整的原始对话。另外设备状态也要作为上下文注入。用户说“太热了”如果系统不知道当前温度是29度、空调是关着的它就没法做出合理决策。所以每次调用大模型前我会把相关区域的关键设备状态拼成一段简短的状态描述一起塞进提示词。这个状态描述要精简只放跟当前意图可能相关的设备不要把全屋六十个设备的状态都塞进去那样既浪费token又干扰模型判断。3.3 安全边界怎么防止大模型“乱来”大模型有幻觉这是绕不开的问题。在智能家居场景里幻觉可能导致它下发一个危险指令比如把热水器温度设到70度或者把门锁打开。所以必须有一层安全校验挡在大模型和自动化层之间。我的做法是定义一份白名单加参数范围校验。每个设备能接受哪些动作、每个动作的参数范围是多少都预先定义好。大模型输出的结构化意图必须先过这层校验校验不通过就直接拒绝并返回一个友好的提示。比如大模型输出“把空调温度设到16度”校验层发现最低允许温度是18度就会拒绝并回复“空调最低只能设到18度已经帮你设到18度了”。还有一个更隐蔽的风险是意图越权。用户说“我要睡觉了”大模型可能理解成要关掉所有灯、拉上所有窗帘、锁门、关空调。但万一用户只是想在客厅沙发上眯一会儿呢所以对于涉及安防、门锁、燃气这类高风险设备的操作我设置了二次确认机制。大模型可以生成这些意图但不会直接执行而是先返回一个确认请求等用户明确说“确认”之后才执行。3.4 延迟优化怎么把响应压到人能接受的范围延迟是智能家居体验的生死线。人对语音交互的容忍阈值大概在1.5秒以内超过这个数就会觉得“卡”。纯云端方案很难稳定做到这个水平所以必须做优化。我用的策略是分级处理加流式响应。第一级是本地关键词匹配像“开灯”“关灯”“调高温度”这种高频指令本地一个正则或者轻量分类器就能识别响应时间在100毫秒以内根本不走大模型。第二级是本地小模型处理稍微复杂一点但常见的请求比如“把客厅弄凉快点”本地一个微调过的小模型能识别出意图响应在500毫秒左右。第三级才是云端大模型处理真正复杂的、需要推理的请求这时候我会先给用户一个“正在处理”的语音反馈让用户知道系统收到了然后等大模型返回后再执行整体感知延迟能控制在2秒以内。另外预热和缓存也很重要。常用的意图解析结果可以缓存起来比如“我要睡了”这个请求如果之前已经解析过并且用户确认过下次直接走缓存不用再调大模型。我实测下来缓存命中率能到40%左右对降低平均延迟帮助很大。4. 实操过程从零搭一套带大模型能力的智能家居系统4.1 硬件选型和基础环境搭建先说硬件。我用的方案是一台迷你主机做本地中枢配置是Intel N100处理器、16GB内存、512GB固态功耗在10瓦左右常年开机一个月电费也就几块钱。这台机器上跑Home Assistant作为自动化平台跑Mosquitto作为MQTT broker再跑一个本地小模型做意图识别。网关方面我用的是Zigbee和Wi-Fi双模网关Zigbee接传感器和低功耗设备Wi-Fi接空调、电视这类高带宽设备。网关通过MQTT把设备状态发到本地中枢中枢处理后再通过MQTT下发指令。这套架构的好处是断网也能用所有本地设备照常工作只是云端大模型不可用时会降级到本地小模型。如果你不想折腾硬件也可以用现成的智能家居中枢比如Home Assistant Green或者Yellow它们预装了系统开箱即用。但如果你要跑本地大模型还是建议自己配一台性能好一点的小主机N100是最低门槛预算够的话上N305或者Ryzen 7会舒服很多。4.2 本地小模型的部署和微调本地小模型我选的是Qwen2.5-7B的量化版本用llama.cpp或者Ollama部署。为什么选这个因为它在中文意图理解上表现不错7B参数量在N100上跑量化版本大概能到每秒5到8个token对于短指令解析够用了。如果你硬件更弱可以降到3B甚至1.5B但意图识别的准确率会下降。部署命令很简单用Ollama的话一行就够ollama run qwen2.5:7b-instruct-q4_K_M但直接用通用模型效果一般因为它不知道你家里有哪些设备、有哪些场景。所以需要做轻量微调。我的做法是构造一份几百条的指令-意图对覆盖常见的控制场景然后用LoRA做微调。微调数据长这样{ instruction: 客厅有点暗, output: {\intent\:\light_control\,\area\:\living_room\,\action\:\turn_on\,\brightness\:80} }微调完之后本地模型对家居场景的意图识别准确率能从60%多提升到90%以上。这个微调过程不需要很强的显卡我用一张RTX 3060 12G跑了大概两个小时就完成了。4.3 云端大模型的接入和提示词工程云端大模型我接的是GPT-4o mini因为它便宜、快、JSON模式稳定。接入方式就是标准的API调用但提示词要精心设计。我的系统提示词大概长这样你是一个智能家居意图解析引擎。你的任务是把用户的自然语言转换成JSON格式的设备控制意图。 当前区域{area} 当前设备状态{device_states} 可用设备清单{device_list} 规则 1. 只输出JSON不要输出任何解释文字 2. 设备名称必须从可用设备清单中选择 3. 如果用户意图不明确confidence字段设为低于0.5 4. 涉及门锁、燃气、安防的操作必须设置requires_confirmation为true这个提示词的关键在于注入上下文和明确约束。设备状态和清单是动态填充的每次调用前根据用户所在区域和当前场景生成。实测下来这套提示词在GPT-4o mini上的意图解析准确率能到95%左右比通用提示词高了将近20个百分点。4.4 自动化层的规则编排和降级逻辑自动化层我用的是Home Assistant的Automation加Node-RED做复杂编排。核心逻辑是接收大模型输出的结构化意图翻译成具体的设备服务调用并处理异常和降级。具体流程是这样的语音输入先经过本地关键词匹配命中就走本地执行没命中就发给本地小模型本地小模型置信度高于0.8就走本地执行低于0.8就发给云端大模型云端返回后经过安全校验再执行。如果云端不可用直接降级到本地小模型并在界面上提示“当前处于离线模式部分功能可能受限”。这个降级逻辑非常重要。我遇到过好几次宽带故障如果没做降级整个语音控制就全废了。做了降级之后虽然复杂指令识别不了但基本的开关灯、调温度还是能用的用户体验不会断崖式下跌。5. 常见问题与排查技巧实录5.1 大模型返回格式错误怎么办这是最常见的问题。表现是大模型返回的JSON前后带了说明文字或者JSON本身格式不对导致解析失败。排查思路是先在调用层做正则提取用\{[\s\S]*\}把JSON部分抠出来再做解析。如果还是失败就检查提示词里有没有明确要求“只输出JSON”。另外不同模型对JSON模式的遵守程度不一样GPT-4系列最稳Claude也不错一些国产模型偶尔会加戏需要在解析层做容错。5.2 设备状态不同步导致决策错误有时候大模型基于过时的设备状态做决策比如它以为空调是关着的其实已经开了结果又下发一次开机指令。这个问题的根源是状态同步延迟。我的解决办法是在调用大模型前强制刷新一次相关设备的状态确保注入的上下文是最新的。另外在自动化层加一个状态去重逻辑如果设备已经是目标状态就跳过执行避免重复操作。5.3 语音识别错误导致意图跑偏语音识别本身就有错误率尤其是在有背景噪音或者口音比较重的情况下。我遇到过用户说“打开加湿器”被识别成“打开加速器”大模型就懵了。解决办法是在语音识别和大模型之间加一层模糊匹配把识别结果跟设备清单和常见指令做相似度计算如果相似度高于阈值就自动纠正。另外对于置信度低的识别结果可以让大模型结合上下文做推断比如用户刚说了“有点干”那“加速器”大概率是“加湿器”。5.4 成本失控怎么控制云端大模型按token收费如果每次交互都走大模型一个月下来费用不低。我的控制策略是分级路由加缓存。高频指令走本地不走云端复杂指令走云端但结果缓存起来相同或相似的请求直接命中缓存。另外提示词要精简设备状态只注入相关的不要全量注入。我实测下来一个三口之家正常使用一个月的云端API费用能控制在几块钱到十几块钱之间完全可以接受。问题类型典型表现排查方向解决手段格式错误JSON解析失败检查提示词约束、模型选择正则提取、换用JSON模式稳定的模型状态不同步重复执行、决策错误检查状态刷新机制调用前强制刷新、状态去重识别错误意图跑偏检查语音识别置信度模糊匹配、上下文推断成本过高API费用超预期统计调用量和token消耗分级路由、缓存、精简提示词延迟过高响应超过2秒检查网络和模型推理时间本地兜底、流式反馈、预热缓存5.5 断网之后的降级体验怎么保证断网是智能家居必须考虑的场景。我的做法是本地保留一套完整的兜底逻辑包括本地小模型、本地规则引擎、本地设备控制。断网时系统自动切换到离线模式语音交互降级到本地小模型复杂请求直接回复“当前网络不可用请使用简单指令”。同时手机App上会显示离线状态让用户知道当前的能力边界。实测下来断网时基本控制功能不受影响只是复杂推理能力没了用户接受度还可以。6. 这套方案到底让智能家居“更像人”了多少回到标题那个问题。我的实际体验是大模型确实让智能家居从“听话的工具”变成了“能理解意图的助手”但离“像人”还有距离。进步的地方很明显。以前你说“我有点冷”系统要么没反应要么回你一句“没听懂”。现在它能结合当前温度、空调状态、窗户开关情况判断是该关窗、开空调还是开地暖然后执行。这种基于意图而非指令的交互体验提升是质变的。另外多轮对话能力也让交互自然了很多你可以说“再调高一点”“那个灯也关了吧”系统能跟上你的思路。但局限也很明显。大模型的推理是基于文本的它并不真正“理解”物理世界。它不知道你家的户型、不知道你站在哪个位置、不知道你今天的情绪状态。它做的决策本质上还是基于你给它的上下文做概率推断。而且它的响应速度、可靠性、成本都还没到可以完全无感使用的程度。我个人的判断是未来两到三年智能家居的竞争焦点会从“设备连接数”转向“意图理解能力”。谁能把大模型的能力更自然地融入家居场景谁就能做出真正差异化的体验。但这条路还很长需要解决的不仅是技术问题还有隐私、成本、标准化等一系列工程难题。最后分享一个我在实操中总结的小技巧不要试图让大模型一次性做太多事。我一开始贪心想让大模型直接输出完整的设备控制序列结果它经常漏掉步骤或者顺序搞错。后来改成让它只输出高层意图具体的执行序列由本地规则引擎来编排稳定性立刻上了一个台阶。大模型擅长的是理解语言不是编排设备把这两件事分开各司其职系统才能跑得稳。
返回列表