『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 14433|回复: 54

[经验分享] 【ChatGPT】玩玩HA官方的OpenAI集成

  [复制链接]

18

主题

587

帖子

4283

积分

元老级技术达人

积分
4283
金钱
3661
HASS币
182
发表于 2023-8-14 19:32:51 | 显示全部楼层 |阅读模式
本帖最后由 louis_lee 于 2023-8-15 16:40 编辑

最近在看HA文档的时候,发现HA已经有自带的OpenAI集成。它不仅能接入assist语言助手,还可以作画!可玩性很强,我们来试试~

升级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就会模仿马里奥与你互动!!

微信截图_20230814172815.png

或者,也可以参考@jsfer888的帖子,让chatGPT帮你下命令,让它执行HA的一些场景。比如这篇【Chatgpt】最牛逼的人工智能家庭助手来了,内附教程,根据自己的情况修改帖子里边的提示词,置换到你的OpenAI conversation配置即可。

关于“提示词模板”最棒的一点是支持template,这意味着你可以把很多设备、实体的名字、状态等告诉chatGPT,这样他可以更精确的帮你控制HA!

chatGPT接入assist语音助手

很方便,也是前端页面就可以完成!打开“配置”-“语音助手”- "添加”,随便起个名称,语言选中文,再把对话代理选上OpenAI conversation就可以啦!

微信截图_20230814174228.png

我们打开lovelace页面“概览”,并点击右上角的assist(聊天图标),“助手”下拉选择“chatGPT”(或你自己刚起的名)。

这样就可以对话了。当然你可以随时修改“提示词模板”,比如“你是曹操,请用古文和我说话”(效果图如下)

微信截图_20230814175533.png

看起来还不错!不过,这个回复不能以markdown形式展现,也不能流式回复(也就是看起来像AI在打字),前端UI也属实有点low了。我自己从网上找一个前后端结合的chatgpt项目,chenzhaoyu/chatgpt-web,这个项目UI不错,支持markdown、流式回复,而且功能更全,除提供前端界面外,还有些REST API,可玩性更高。

我已经把这个项目包装成了加载项,利用ingress特性,直接可以在侧边栏显示,非常美观好用。我整理一下就发出来。

微信截图_20230814181719.png

(支持黑白两种主题,我的风格是夜间模式,所以我也同样配置了黑色)

能否接入小爱、siri呢?

完全没问题~!HA官方提供了一个conversation.process服务,这个服务是可响应的(如下图)。这个功能是202307版本加的,可以利用在自动化中将响应作为变量,传给自动化中后续流程。

微信截图_20230814182216.png

以小爱同学为例。一个思路就是利用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版本新特性,介绍起来麻烦,就不介绍咋实现了。)

微信截图_20230814184821.png

让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  }}")

  ........

保存好后,每天都会换一个背景啦!如果你觉得生成的丑,你可以通过加不同的关键字,控制效果、风格。




评分

参与人数 7金钱 +68 收起 理由
carloszo + 5 感谢楼主分享!
zero_33 + 8 墙都不扶,就服楼主!
kaka0992 + 10 感谢楼主分享!
DDDear + 10 大神666!
Dlian + 5 非常有必要
binghun9806 + 10
dscao + 20 感谢楼主分享!

查看全部评分

回复

使用道具 举报

77

主题

1391

帖子

2万

积分

元老级技术达人

积分
24304
金钱
22873
HASS币
290
发表于 2023-8-14 22:03:13 | 显示全部楼层
作为gpt的网页版,next-web效果也很不错,有明亮和暗色主题,也支持作为api,还支持当官方api的代理使用。

除了Siri的效果不错外,TTS好像对于流式(及时响应)都没有好的处理方法呢,TTS好像都没有可用的队列播放方式。大部分都是后面的消息一推送,前面正在播放的就提前结束了。
回复

使用道具 举报

18

主题

587

帖子

4283

积分

元老级技术达人

积分
4283
金钱
3661
HASS币
182
 楼主| 发表于 2023-8-14 22:19:08 | 显示全部楼层
本帖最后由 louis_lee 于 2023-8-15 09:15 编辑
dscao 发表于 2023-8-14 22:03
作为gpt的网页版,next-web效果也很不错,有明亮和暗色主题,也支持作为api,还支持当官方api的代理使用。
...

next-web也看过,我看star都差不多,就选一个清爽的来移植

TTS不好弄成响应式的,需要修改底层逻辑。
回复

使用道具 举报

2

主题

70

帖子

1708

积分

金牌会员

Rank: 6Rank: 6

积分
1708
金钱
1638
HASS币
0
发表于 2023-8-15 01:49:16 | 显示全部楼层
HA需要美区IP吗?能访问OPENAI?
回复

使用道具 举报

18

主题

587

帖子

4283

积分

元老级技术达人

积分
4283
金钱
3661
HASS币
182
 楼主| 发表于 2023-8-15 08:49:10 来自手机 | 显示全部楼层
本帖最后由 louis_lee 于 2023-8-15 15:39 编辑
lyf86822 发表于 2023-8-15 01:49
HA需要美区IP吗?能访问OPENAI?
看起来需要科学环境,获取API key需要国外IP
回复

使用道具 举报

3

主题

64

帖子

329

积分

中级会员

Rank: 3Rank: 3

积分
329
金钱
265
HASS币
0
发表于 2023-8-15 10:53:57 | 显示全部楼层
刚想折腾这个yihong0618/xiaogpt chatgpt接入小爱音箱的项目,现在有这个就等这个的教程了,坐等
还有请问下接入小爱音箱教程大概什么时候出
回复

使用道具 举报

22

主题

612

帖子

2755

积分

金牌会员

Rank: 6Rank: 6

积分
2755
金钱
2143
HASS币
0
发表于 2023-8-15 13:18:12 | 显示全部楼层
GPT的充值续费是个很麻烦的事情········
回复

使用道具 举报

3

主题

51

帖子

1210

积分

金牌会员

Rank: 6Rank: 6

积分
1210
金钱
1159
HASS币
0
发表于 2023-8-15 13:38:52 | 显示全部楼层
为啥我输入api key点提交后一直在转圈?
回复

使用道具 举报

18

主题

587

帖子

4283

积分

元老级技术达人

积分
4283
金钱
3661
HASS币
182
 楼主| 发表于 2023-8-15 13:55:32 | 显示全部楼层
Dlian 发表于 2023-8-15 10:53
刚想折腾这个yihong0618/xiaogpt chatgpt接入小爱音箱的项目,现在有这个就等这个的教程了,坐等
还有请问 ...

我先把加载项搞好了,再发一下小爱的吧

评分

参与人数 1金钱 +5 收起 理由
Dlian + 5 感谢楼主分享!

查看全部评分

回复

使用道具 举报

18

主题

587

帖子

4283

积分

元老级技术达人

积分
4283
金钱
3661
HASS币
182
 楼主| 发表于 2023-8-15 14:23:47 | 显示全部楼层
a_dongde 发表于 2023-8-15 13:18
GPT的充值续费是个很麻烦的事情········

是的,得用国外信用卡。我在等讯飞的那个大模型开放,我看评估效果要比百度的好,接近ChatGPT
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 13:50 , Processed in 0.437004 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表