使用Assist的最佳实践
为了充分利用语音助手的体验,有一些事情你应该做。
使用Assist的过程是说出支持的命令,并目标指定的设备和实体。所以基本上:
- 你控制Assist可以访问的数据以及它可以控制的内容。
- Home Assistant中的每个实体都可以选择暴露给Assist或不暴露。
我们推荐的一些最佳实践来实现高效的设置:
暴露(最少)实体
学习如何在将实体暴露给Assist中进行。
将所有实体都暴露给Assist可能很诱人,但这样做会带来性能损失。解析器需要处理的实体名称和别名越多,匹配所花费的时间就越长。如果你使用基于LLM的对话代理,每个请求的成本将更高,因为上下文大小更大。只暴露你知道将会使用语音助手的最低限度。
检查名称并创建别名
Assist在很大程度上依赖于实体名称、域和区域。下面你会找到一些调整这些内容以确保最佳体验的技巧。在暴露所需数据的基础上,值得注意的是你很可能会通过区域和楼层来目标实体,比如:
- 关闭办公室的灯
所以确保你的设备和实体正确分配到区域,并且你的区域正确分配到楼层。 在这里学习。
在日常用语中没有好的方式来称呼实体将大大妨碍你与Assist的声音体验。你可以预期在要求Assist“打开Tuya Light Controller 0E54B1 Lights 1”时会遇到困难。因此,你应该使用逻辑名称为你的设备和实体命名,使用如 <area> [<identifier_or_descriptor>] [<domain>]
的方案。
例如,light.living_room_lamp
可能是 客厅灯
的实体ID。如果你在那间房间只有一个灯具,厨房灯
对于 light.kitchen
就足够了。
请注意,这一惯例仅是建议,设备和实体的实际命名可能取决于你的语言或个人偏好。
如果你发现自己以特定方式提到某个设备或实体,请确保将其添加为别名,因为这可能是指代该实体的最自然方式。
名称和别名同样适用于区域
,你需要像对待实体一样,准确地处理区域名称和别名。
注意语言的特定性
如果你在英语中设置了Home Assistant实体名称,但计划用另一种语言使用Assist,不用担心。你可以为每个实体添加别名,使它们可以用任何语言命名。
英语的语法规则很简单,但有些语言中的定冠词是作为词的前缀或后缀,名词还有性别或数量。语言领导者正在努力支持每种语言中大多数这种变化,但他们无法控制你命名的内容。因此请考虑某个实体的无定冠词名称是否会在需要定冠词的句子中被提及,反之亦然。如果是这样,也请将该版本的名称添加为别名。
检查域和设备类别
Assist利用域来定义正在执行操作的适当动词(例如,打开/关闭灯
或风扇
,打开/关闭带有门
的盖子
的设备类别
,打开/关闭阀门
或锁定/解锁锁
)。
在用户界面中将switch.main_valve
替代阀门可能不会让任何人烦恼,但是如果主阀门是一个开关,Assist不能要求你打开主阀门。如果它是valve.main_valve
,那么前一句就没有问题了。
为了防止这种情况的发生,你可以使用切换集成的设备类型或使用模板实体或通用 X(例如通用恒温器)创建虚拟实体。
同样的事情适用于某些设备类别。例如,如果你有一个没有设置device_class
的binary_sensor.bedroom_window
,你只能询问卧室窗户是否开启,而这并没有太大意义。为了能够询问它是否打开,你需要为该binary_sensor
设置适当的device_class
,即窗户。
准备好了吗?
一旦你的设备和实体正确
- 暴露给Assist
- 分配到区域。
现在是时候与设备对话了。
要与Assist对话,你可以使用手机或自定义设备(并使用它们的麦克风和扬声器)。在Android或Apple设备上查看如何进行。
一些示例,帮助你入门
有一些示例命令可以帮助你开始使用我们的句子入门包。
如果你没有得到正确的响应,我们建议你检查别名。有时,家庭的不同成员可能会用不同的方式称呼实体。你可能会说“电视”,而有人可能会说“电视机”。
你可以为暴露的实体创建别名,以便可以使用不同的名称与Assist进行目标交互。别名可在实体、区域和楼层级别使用。了解更多内容,在别名教程中。