LLM 接入与自定义 AI 人格
为什么接 LLM
Home Assistant 内置的 Conversation Agent 是基于 Intent Matching 的——它能理解"打开客厅灯"这种结构化指令,但说"今天有点暗了"、"空气有点闷"、"帮我调个舒服的温度"就搞不定了。接 LLM 后:
- 灵活的自然语言理解
- 可以回答开放式问题(查数据、解释概念)
- 可以有"人格"(管家、朋友、助手、科幻风格…)
- 可以做多步骤规划("如果明天下雨,把阳台衣服收进来,然后开窗通风")
方案一:本地 Ollama
完全本地运行大语言模型,需要 x86 机器(N100 + 至少 8GB RAM 推荐):
步骤
- Home Assistant OS:Settings → Apps → 搜索 Ollama → Install → Start
- 打开 Ollama Web UI → Pull 一个适合的中文模型:
| 模型 | 大小 | 中文能力 | 推荐硬件 |
|---|---|---|---|
| qwen2.5:3b | 2GB | ✅ | 树莓派 / 低配 NAS |
| qwen2.5:7b | 4GB | ✅ 好 | N100 / 8GB+ RAM |
| qwen2.5:14b | 8GB | ✅ 很好 | N100 / 16GB+ RAM |
| Llama 3.1:8b | 5GB | 中等 | N100 |
| InternLM2.5:8b | 5GB | ✅ 原生中文 | N100 |
- 等待 Pull 完成(首次下载需要 5~15 分钟)
- Settings → Devices & services → Add integration → 搜索 Ollama → Configure → 选刚才 Pull 的模型
- Voice Assistants → 编辑你的 Assistant → Conversation Agent → 选 Ollama
给 Ollama 定人格
Ollama 集成里可以配置 System Prompt——这是给 LLM 的"人设":
你是一个叫"小管家"的智能家居助手。你的职责:
1. 响应家庭成员的指令控制设备(Home Assistant 实体)
2. 主动汇报家里状态(能源、安全、安防)
3. 语气亲切友好,像家庭成员中的朋友一样
4. 回答关于智能家居的技术问题
5. 如果指令模糊,先确认再执行
方案二:云端 LLM
如果你机器资源不够,或想要最强的推理能力,可以用云端 API:
| 提供商 | 集成 | 说明 |
|---|---|---|
| OpenAI | openai_conversation | 最强但最贵,需要 API Key |
| Anthropic | anthropic | Claude 3.x,推理强 |
| DeepSeek | HACS | 便宜,中文好 |
| Qwen / 阿里云 DashScope | HACS | 国内厂商,中文好 |
安全注意
用云端 LLM 时,你的 Home Assistant 实体信息(设备名、状态、区域)会被发给 LLM 服务器。虽然不直接暴露网络拓扑,但敏感用户请谨慎。
自定义 AI 人格模板
模板一:管家型
你是一个叫"小管家"的智能家居 AI。
- 语气:礼貌、专业、简洁
- 技能:操作 Home Assistant 设备、查能源数据、安排自动化流程
- 主动性:发现异常时主动提醒(如夜间耗电过高、电池低电量)
- 风格:像一个靠谱的家庭管家
模板二:科幻风格
你是 AURA(AI Universal Resident Agent),一个科幻家庭 AI。
- 语气:冷静、带一点未来感、偶尔幽默
- 风格:用"主人"称呼用户
- 示例回应:
"主人,客厅的主照明系统已激活。当前环境亮度提升 35%。"
"警告:检测到阳台上的温度传感器读数偏低。请确认是否有什么东西遮住了它。"
模板三:极简工具型
你是 Home Assistant 的设备控制接口,只输出执行结果和必要的信息。
- 不要寒暄
- 不要多说多余的话
- 只给简洁、结构化的回应
示例:
用户:打开客厅灯
你:已开启。当前亮度 80%。
LLM + Home Assistant 的连接点
Home Assistant 和 LLM 之间的信息交互方式:
- 用户通过 Assist 说话 → STT 转成文字
- 文字发给 LLM → LLM 分析意图
- LLM 返回 JSON 格式的指令 → Home Assistant 执行动作
- 执行结果返回 LLM → LLM 组织自然语言回应
- 回应文字发给 TTS → TTS 合成语音
Home Assistant 内置了一套 Function Calling 机制让 LLM 能理解 Home Assistant 有哪些服务可用、每个服务需要什么参数。好的 LLM(如 qwen2.5:7b+)能正确生成合法的服务调用。
性能建议
- 本地 LLM 至少用 7B 参数(3B 理解复杂指令会出错)
- Ollama 默认加载到内存 → 需要模型大小 × 2 的 RAM
- 如果用 Ollama 跑大模型,考虑用 x86 机器而不是树莓派
- 推理延迟:7B 模型本地推理约 2~5 秒一次