升级HA!!
由于很多chatGPT新特性需要最新版的HA,尝试前别忘升级下版本,避免遇到神奇的问题。
chatGPT 集成接入
官方集成是基于chatgpt-3.5-turbo的,而且只支持api key接入,功能性、易用性差一点~ 另外,需要注意的是,api key接入需要科学环境!
不过接入方法还是比较简单的,直接在前端页面就可以完成,打开“配置”-》“设备与服务”-》“添加集成”,搜索OpenAI,输入api key后即可接入。
在接入完成后,我们先配置下最大token,直接点击“设备与服务”OpenAI conversation-》“选项”,把“最大token”改成1000(或者根据需要改)。
OpenAI conversation配置页面里,“提示词模板”这部分也可以改,这部分相当于问答背景,你可以按照自己的想法好,从而实现很多有趣玩法。比如官方文档上,把“提示词模板”换成“You are Super Mario from Mario Bros. Be funny.”这样就chatGPT就会模仿马里奥与你互动!!
或者,也可以参考@jsfer888的帖子,让chatGPT帮你下命令,让它执行HA的一些场景。比如这篇【Chatgpt】最牛逼的人工智能家庭助手来了,内附教程,根据自己的情况修改帖子里边的提示词,置换到你的OpenAI conversation配置即可。
关于“提示词模板”最棒的一点是支持template,这意味着你可以把很多设备、实体的名字、状态等告诉chatGPT,这样他可以更精确的帮你控制HA!
chatGPT接入assist语音助手
很方便,也是前端页面就可以完成!打开“配置”-“语音助手”- "添加”,随便起个名称,语言选中文,再把对话代理选上OpenAI conversation就可以啦!
我们打开lovelace页面“概览”,并点击右上角的assist(聊天图标),“助手”下拉选择“chatGPT”(或你自己刚起的名)。
这样就可以对话了。当然你可以随时修改“提示词模板”,比如“你是曹操,请用古文和我说话”(效果图如下)
看起来还不错!不过,这个回复不能以markdown形式展现,也不能流式回复(也就是看起来像AI在打字),前端UI也属实有点low了。我自己从网上找一个前后端结合的chatgpt项目,chenzhaoyu/chatgpt-web,这个项目UI不错,支持markdown、流式回复,而且功能更全,除提供前端界面外,还有些REST API,可玩性更高。
我已经把这个项目包装成了加载项,利用ingress特性,直接可以在侧边栏显示,非常美观好用。我整理一下就发出来。
(支持黑白两种主题,我的风格是夜间模式,所以我也同样配置了黑色)
能否接入小爱、siri呢?
完全没问题~!HA官方提供了一个conversation.process服务,这个服务是可响应的(如下图)。这个功能是202307版本加的,可以利用在自动化中将响应作为变量,传给自动化中后续流程。
以小爱同学为例。一个思路就是利用MIOT AUTO集成,提供相应的 Play Control conversation,也就是你对小爱说的话,调用conversation.process服务后,将结果TTS给小爱音箱。
当然细节可能需要花一些时间。首先有一个得设计一个唤醒词,比如“打开chatgpt”,检测到Play Control conversation sensor变为“打开chatgpt”后,先给小爱音箱静音,并把小爱的回复silent掉(Xiaomi Miot Auto: intelligent_speaker服务)。之后Play Control conversation sensor有变化,触发:silent掉原有回复-》conversation.process-》恢复小爱的声音-》TTS-》静音,直到Play Control conversation sensor变为“关闭chatgpt”或超时。
其实也挺麻烦的,如果你有老版小爱,拆机ssh后修改过的,就方便很多。
siri的话,利用快捷指令+REST API调用conversation.process,就可以了。
利用openAI作图
202308版本新增了一个openAI生成式绘画,只要接入openAI conversation集成就行。调用OpenAI Conversation: 生成图像 服务就可以,这个服务也是响应式的,返回生产图片的url。我觉得还挺有可玩性,我想到两个玩法。
写一个AI绘画生成页面
一个是自制一个HA的画图生成页面,自己画着玩。效果图如下(感觉不太实用,还得用一些HA版本新特性,介绍起来麻烦,就不介绍咋实现了。)
让openAI帮你换home assistant壁纸!
还有一个,就是每天让openAI根据关键字,生成一个图片,放在lovelace页面做背景图。而且关键字也可以每天变化,比如可以根据天气、地点、日期(工作日、非工作日、生日)要素等变化。
首先是生成关键字的实现。创建一个自动化,每天零点启动,调用OpenAI Conversation: 生成图像服务,提示词是可以template的。这样利用模板把一些实体状态(比如天气实体状态、地点实体状态、日历实体状态)拼合起来,再加一些你喜欢的要素,比如“二次元”、“油画”、“山水画”、“壁纸”、“背景图片”。
生成后将响应结果作为变量,调用shell_command服务,利用curl命令将其存储在/config/www下。
自动化代码如下:
alias: auto_save_chatgpt_image
description: ""
trigger:
- platform: time
at: "00:00:00"
condition: []
action:
- service: openai_conversation.generate_image
data:
size: "512"
config_entry: 959703e4c0f4ad492888bb74121ebba9 #此处是你的conversation agent id,先在图形界面选择chatGPT,然后再在yaml模式下编辑
prompt: >-
{{ states.weather.wo_de_jia.state }} {{
state_attr("sensor.***_iphone_geocoded_location","Locality") }}
二次元
response_variable: image_response
- service: shell_command.save_openai_image
data:
image_result: "{{ image_response.url }}"
mode: single
shell_command代码如下,需要放在configuration.yaml里:
shell_command:
save_openai_image: "curl -o /config/www/images/chatgpt.png {{ image_result }}"
这样我们可以每天让openAI给我们生产一个背景图片,我们可以把图片配置到lovelace页面。打开概览“lovelace”页面,点击右上方三个点-》编辑仪表盘-》再点击右上方三点-》原始资源编辑器,找到我们想要添加的视图,比如原来是长这样的
- title: test
........
我们在title后新起一行,加入backgroud,如下:
- title: test
background: center / cover no-repeat fixed url("{{/local/images/chatgpt.png }}")
........
保存好后,每天都会换一个背景啦!如果你觉得生成的丑,你可以通过加不同的关键字,控制效果、风格。