智能家居的人工智能代理
过去,有句话是“计算机不会说谎”。它们是确定性的,零和一执行我们给它们的规则。对于人工智能来说,情况恰恰相反。人工智能模型会产生幻觉,它们的输出不能完全可信——但当前的炒作是将人工智能注入到每一种可以想象的产品中。 Home Assistant 不会追随最新的炒作,相反,我们专注于构建持久且可持续的智能家居。我们确实对这个主题有想法,所以让我们来谈谈智能家居中的人工智能。
Home Assistant 的独特定位是成为人工智能的智能家居平台。作为我们的开放家庭价值观的一部分,我们相信用户拥有自己的数据(我们知道,这是一个新颖的概念),并且他们可以选择如何处理这些数据。这就是 Home Assistant 在本地存储所有用户数据(包括丰富的历史记录)的原因,并且它提供了强大的 API,任何人都可以在上面构建任何内容,没有任何限制。让我们的用户能够真正控制自己的家是我们DNA的一部分,并有助于减少幻觉引起的误报的影响。所有这一切使得 Home Assistant 成为任何希望为智能家居构建强大的人工智能驱动解决方案的人的完美基础 - 这是任何其他大型平台都无法实现的。
当我们研究人工智能时(更多相关信息见下文),我们得出的结论是,目前还没有值得的人工智能驱动的解决方案。如果您的家的摘要可能是错误的、花费您金钱的、甚至危害地球,您是否希望在仪表盘的顶部列出您家的摘要?
相反,我们的重点是让任何人都能在 Home Assistant 中使用 AI,使其更容易集成到现有工作流程中并在本地运行模型。为了今天尝试人工智能,最新版本的 Home Assistant 允许您使用 OpenAI 或 Google AI 连接和控制设备。对于未来的本地人工智能解决方案,我们正在与 NVIDIA 合作,他们已经取得了惊人的进展。这将释放我们社区的力量,我们的集体智慧,来提出创造性的用例。
详细了解我们的方法、当今如何使用人工智能以及未来的前景。或者直接跳入并添加 Google AI、OpenAI 到您的 Home Assistant 安装中(或 Ollama 用于本地 AI,但还无法控制 HA)。
非常感谢您的贡献:@shulyaka、@tronikos、@allenporter、@synesthesiam、@jlpouffier 和 @balloob.
智能家居中人工智能实验的基础我们希望法学硕士能够轻松地与 Home Assistant 一起使用。到目前为止,Home Assistant 已允许您配置由 LLM 提供支持的 AI 代理,您可以与之交谈,但 LLM 无法控制 Home Assistant。本周,随着 Home Assistant 2024.6 的发布,这种情况发生了变化,它使 Google Gemini 和 OpenAI ChatGPT 的 AI 代理能够与您的家进行交互。您可以在 Assist(我们的语音助手)中使用它,或者与脚本和自动化中的代理交互以做出决策或注释数据。
在 Assist 中使用代理可以让您告诉 Home Assistant 做什么,而不必担心确切的命令句子是否被理解。甚至组合命令并引用以前的命令也可以!
因为这是_just_ Assist,所以它适用于 Android、iOS、经典固定电话 和 13 美元语音卫星 😁
LLM 允许 Assist 理解更广泛的命令。
正如我们所期望的那样,允许法学硕士控制 Home Assistant 的架构是完全可定制的。默认 API 基于 Assist,专注于语音控制,并且可以使用意图 在 YAML 中定义 或 用 Python 编写 进行扩展(下面的示例)。
我们当前提供的 API 只是一种方法,根据所使用的 LLM 模型,它可能不是最好的方法。这就是为什么它的架构允许自定义集成提供自己的 LLM API。这允许尝试不同类型的任务,例如创建自动化。 Home Assistant 中的所有 LLM 集成都可以使用任何注册的自定义 API 进行配置。
AI 代理的选项屏幕允许您选择它有权访问的 Home Assistant API。
AI 代理的选项屏幕允许您选择它有权访问的 Home Assistant API。
云与本地
Home Assistant 目前提供两家具有多种模型选项的云 LLM 提供商:Google 和 OpenAI。两种集成都附带一个平衡价格、准确性和速度的推荐模型。我们推荐的 OpenAI 模型更适合非家庭相关问题,但 Google 的模型便宜 14 倍,但具有类似的语音助手性能。
我们看到基于云的法学硕士的最佳结果,因为与开源选项相比,它们目前更强大且更易于运行。但本地和开源法学硕士正在以惊人的速度进步。这很重要,因为本地人工智能更有利于您的隐私,从长远来看,也更有利于您的钱包。本地模型也往往要小得多,这意味着运行它们所需的电力要少得多。为了改善 Home Assistant 的本地 AI 选项,我们一直与 NVIDIA 的 Jetson AI Lab Research Group 合作,并取得了巨大进展。他们发布了文本转语音和语音转文本引擎,支持我们的怀俄明协议,在他们的 Jetson 平台上添加了对 Ollama 的支持,并且就在上周展示了他们在制作本地 Llama 3 模型控制Home Assistant方面的进展:
前5分钟,达斯汀展示了他使用本地LLM控制Home Assistant的原型。
什么是人工智能?
当前的人工智能炒作浪潮围绕大型语言模型(LLM)展开,这些模型是通过摄取大量数据创建的。当你运行这些模型时,你给它文本,它就会预测下一个单词。如果你给它一个问题作为输入,生成的下一个单词将是答案。为了让它变得更聪明,人工智能公司将对其他服务的 API 访问分层,允许法学硕士做数学或集成网络搜索。
大型语言模型的最大好处之一是,因为它是根据人类语言进行训练的,所以您可以用人类语言来控制它。想要它以超级马里奥的风格回答吗?只需将“像超级马里奥一样回答”添加到您的输入文本中即可。
法学硕士有一个很大的缺点:因为它通过预测下一个单词来工作,所以预测可能是错误的,并且会产生“幻觉”。因为它不知道更多,所以它会将其幻觉呈现为事实,并由用户来确定这是否正确。在这个问题得到解决之前,我们创建的任何解决方案都需要处理这个问题。
另一个缺点是,根据人工智能模型及其运行位置,生成答案的速度可能非常慢。这意味着目前使用法学硕士生成语音响应要么成本昂贵,要么速度非常慢。我们不能期望用户在使用语音时等待 8 秒灯光才会打开。
人工智能代理
去年一月,HackerNews 上点赞最多的文章是关于使用法学硕士控制Home Assistant的文章。 我对这个故事发表了评论 分享我们对法学硕士的兴奋以及我们计划用它做的事情。针对这一评论,来自 NVIDIA Holoscan 团队的两名 ML 工程师 Nigel Nelson 和 Sean Huver 主动联系分享了他们帮助 Home Assistant 的一些经验。它是围绕人工智能代理发展起来的。
AI代理是独立运行的程序。用户或其他程序可以与它们交互,要求它们描述图像、回答问题或控制您的家。在这种情况下,代理由 LLM 模型提供支持,代理的响应方式由自然语言(英语!)的指令引导。奈杰尔和肖恩曾尝试让人工智能负责多项任务。他们的测试表明,向单个代理发出复杂的指令以使其能够处理多个任务,会使人工智能模型感到困惑。没有之一,你需要多个人工智能代理,每个代理负责一项任务才能正确完成任务。如果传入查询可以由多个代理处理,则选择器代理方法可确保将查询发送到正确的代理。
所描述的代理框架的高级概述。
正如人们对一家销售 GPU 来运行 AI 的公司所期望的那样,NVIDIA 的工程师都是在本地运行法学硕士。但他们有一个观点:在本地运行法学硕士消除了人们可以使用法学硕士做什么的限制。如果您不必担心收取数千美元的云费用,您就会开始考虑不同的方法。
例如,假设我们将您家中的每项状态变更都传递给了法学硕士。如果晚上每个人都在家时前门打开,这是否可疑?为此创建一个基于规则的系统很难适合每个人,但法学硕士可能可以解决问题。
正是这次对话引导我们采取了当前的方法:在Home Assistant中,我们需要人工智能代理。许多人工智能代理。
定义 AI 代理
作为去年 Year of the Voice 的一部分,我们开发了一个对话集成,允许用户通过对话代理与 Home Assistant 聊天和交谈。除了使用字符串匹配的 Home Assistant 对话引擎之外,用户还可以选择与 LLM 提供商交谈。这是我们的第一个人工智能代理。
设置 Google Generative AI、OpenAI 或 Ollama,您最终会得到一个在 Home Assistant 中表现为对话实体的 AI 代理。对于每个代理,用户都能够配置 LLM 模型和说明提示。提示可以设置为动态渲染的模板,允许用户与法学硕士共享有关其房屋的实时信息。
对话实体可以包含在辅助管道(我们的语音助手)中。或者您可以通过自动化和脚本中的服务直接与它们交互。

作为用户,您可以控制何时调用代理。这可以通过利用 Home Assistant 的核心:自动化引擎来实现。您可以编写自动化程序,侦听特定的故障,然后将该信息提供给人工智能代理。
以下示例基于自动化最初由 /u/Detz 在 Home Assistant subreddit 上共享。每次媒体播放器上的歌曲发生变化时,它都会检查该乐队是否是乡村乐队,如果是,则跳过该歌曲。这里幻觉的影响很低,用户最终可能会听到一首乡村歌曲或跳过一首非乡村歌曲。
我们已将此自动化转变为您可以亲自尝试的蓝图。它允许您配置何时跳过歌曲的标准。
研究人工智能
法学硕士的奇怪之处之一是,它们的具体工作方式是不透明的,而且它们的有用性可能因任务而异。即使模型的创建者也需要运行测试来了解他们的新模型的功能。鉴于我们的任务非常独特,我们必须创建自己的可重复基准来比较法学硕士。
为了实现这一点,Allen Porter 创建了一套评估工具,其中包括一个名为“Synthetic home” 的新集成。 此集成允许我们根据 YAML 文件中的定义启动 Home Assistant 实例。该文件指定了区域、设备(包括制造商/型号)及其状态。这使我们能够根据完全相同的Home Assistant状态测试每个法学硕士。
Home Assistant 的句子匹配、Google Gemini 1.5 Flash 和 OpenAI GPT-4o 之间一组控制 Home Assistant 的困难句子的结果比较。
我们广泛使用这些工具来微调我们提供给法学硕士来控制 Home Assistant 的提示和 API。这些研究的可重复性使我们能够改变一些东西并重复测试,看看是否可以产生更好的结果。我们可以用它来测试不同的提示、不同的人工智能模型和任何其他方面。
为 LLM 定义 API
Home Assistant有不同的API接口。我们有 Home Assistant Python 对象、WebSocket API、REST API 和意图。我们决定将 LLM API 基于意图系统,因为它是我们最小的 API。意图由我们的句子匹配语音助手使用,仅限于控制设备和查询信息。他们不关心创建自动化、管理设备或其他管理任务。
利用意图还意味着我们已经在 UI 中拥有一个位置,您可以在其中配置可访问的实体、一个多种语言的测试套件,将句子与意图相匹配,以及 LLM 应该能够通过 API 实现的目标的基线。
Home Assistant 已经有不同的方式供您定义自己的意图,允许您扩展法学硕士可以访问的 Assist API。第一个是意图脚本集成。使用 YAML,用户可以定义在调用意图时运行的脚本,并使用模板来定义响应。
我们也没有忘记自定义组件。他们可以注册自己的意图,或者更好的是,定义自己的 API。
自定义集成提供自己的 LLM API
内置的 LLM API 注重简单性并擅长其所做的事情。 API 表面越大,AI 模型(尤其是较小的模型)就越容易混淆并错误地调用它们。
我们的目标不是一个大型 API,而是许多集中的 API。为了确保更高的成功率,AI 代理一次只能访问一个 API。找出用于创建自动化、查询历史记录甚至创建仪表盘的最佳 API 都需要进行实验。当所有这些 API 就位后,我们可以开始使用选择器代理,将传入请求路由到正确的代理和 API。
找出哪些 API 效果最好是我们社区需要完成的任务。这就是为什么我们以任何自定义组件都可以提供它们的方式设计我们的 API 系统。配置支持 Home Assistant 控制的 LLM 时,用户可以选择任何可用的 API。
自定义 LLM API 是用 Python 编写的。当用户与 LLM 交谈时,API 被要求提供供 LLM 访问的工具集合,以及将附加到用户提示的部分提示。部分提示可以为法学硕士提供有关何时以及如何使用这些工具的额外说明。
未来的研究
为了改进 Home Assistant 中的人工智能,我们可以做的一件事就是等待。 LLM,无论是本地的还是远程访问的,都在迅速改进,并且定期发布新的 LLM(有趣的是,我在 GPT4o 和 Gemini 1.5 宣布之前就开始写这篇文章)。等待几个月,新的 Llama、Gemini 或 GPT 版本可能会释放许多新的可能性。
我们将继续与 NVIDIA 合作,实现更多本地 AI 功能。我们的首要任务是让所有 Home Assistant 用户都能轻松访问具有函数调用功能的本地法学硕士。
我们还有改进我们使用的本地模型的空间。我们希望探索针对特定任务(例如语音命令或区域摘要)微调模型。这将使我们能够获得更小、性能和可靠性更好的模型。我们社区最好的事情是什么? 人们已经在研究这个了。
我们还想看看是否可以使用 RAG 来允许用户向法学硕士传授有关个人物品或他们关心的人的知识。如果Home Assistant可以帮助您找到眼镜,那不是很棒吗?
加入我们
我们希望您能够尝试我们的新人工智能工具,并加入我们的论坛 和我们的 Discord 服务器 上的 #voice-assistants 频道。如果您发现一些很酷的东西,请与社区分享,让我们找到杀手级用例!

