找回密码
 立即注册

“我把 ChatGPT 和苹果的 Siri 组了个队,发现无敌了!” ...

[复制链接]
cchenjie 发表于 2023-2-2 19:52:47 | 显示全部楼层 |阅读模式
本站文档手机双击全屏观看效果最好!如需充值或代为下载服务,请联系微信lovefeige007

【CSDN 编者按】ChatGPT 的问世,带来了前所未有的智能应用新方式。如果 "AI+AI",会碰撞出什么样的火花?近日,国外一名 Web 高级工程师 Mate Marschalko 将 ChatGPT 和 Siri 人工智能语言助手进行了结合,万万没想到,一套更为完善的智能家居系统由此诞生了。

原文链接:https://matemarschalko.medium.com/chatgpt-in-an-ios-shortcut-worlds-smartest-homekit-voice-assistant-9a33b780007a

声明:本文为 CSDN 翻译,未经允许,禁止转载。

作者 | Mate Marschalko

译者 | 弯月 责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

自从我尝试了 ChatGPT 和 GPT-3 以后,我觉得 Siri、Alexa、Google Home 等一切智能助手都远不够智能。

我有一个完整的 HomeKit 智能家居系统,其中包含几十盏灯、恒温器、地暖、通风装置、摄像头等家电的控制。所以,我想利用 GPT-3 解析人类发送的命令,然后由 Siri 代为执行,构建出这个世界上最伟大的智能家居系统。

在具体讨论细节之前,先来看看下面的演示。事先说明,智能家居系统给出的响应是可以完全定制的,并不限于演示中的内容。你可以通过语音按照自己想要的方式提出任何请求!

GPT-3,尤其是 ChatGPT 之类的语言模型经过了对话训练,因此它们非常擅长理解和响应人类的指令。

如果你曾尝试过与这些机器人聊天,就知道如何轻松地提出问题,并获得各种格式的回复。难点在于,在控制智能家居时,你需要交代清楚具体与哪个组件交互。怎么解决这个问题?

你可以要求 GPT-3 解释和分类你的请求,然后以结构化的数据格式响应请求。

下面是我给 ChatGPT 的提示,通过这些提示实现了成功交流。内容大致如下:

首先,发送到智能家居系统的请求,返回的 JSON 格式的响应可被应用程序代码解释,并执行动作。这些请求应被分类为四大组:

-" 查询 ":获取组件的状态(必须以 JSON 格式响应返回的属性:动作、地点、目标、值、备注、计划时间戳)。

" 回答 ":当请求不涉及智能家居时,根据系统掌握的知识给出最佳答案。(必须以 JSON 格式响应返回的属性:动作、回答)。

" 澄清 "。当动作不明确,需要用户重新组织措辞时,要求用户提出更具体的请求。这类请求会被划分到 " 问题 " 动作。(必须以 JSON 格式响应返回的属性:动作、问题)。

有关 JSON 响应的细节:

" 动作 " 属性应属于如下请求类别之一:" 命令 "、" 查询 "、" 回答 "、" 澄清 "。

" 地点 " 属性应包含房间名,且为小写。

" 目标 " 属性应为 " 照明 "、" 恒温器 "、" 毛巾架 " 或 " 地暖 ",且为小写。

对于查询," 属性 " 属性应为 " 温度 " 或 " 状态 ",且为小写。

对于命令," 命令 " 属性是附加备注,用于结束命令,让用户放心他们的命令已被处理。

对于命令," 计划时间戳 " 属性记录的是未来的时间戳,当用户希望稍后再发送命令时指定。

如果问题涉及个人,智能家居系统必须发挥情感大脑的作用,成为一个更加聪明的 AI,且永远不会暴露个人身份。此外,智能家居系统还应提供其他领域的帮助,比如看孩子、自由时间、心理健康等。该系统目前服务的房屋位于英国圣奥尔本斯。当前时间为:2023 年 1 月 16 日 11:56:31 GMT+0000。

智能家居系统的属性:

拥有厨房、客厅、办公室、浴室、卧室、阁楼、门厅、卫生间、花园、前院停车位。

能够控制每个房间照明的开关以及光照级别,并查询它们的状态。

能够控制每个房间的恒温器,并查询它们的状态。

打开浴室的毛巾架以及地热的开关,并查询它们的状态。

打开客厅的电视,调节音量。

阁楼的通风系统全天候工作,但加速开关可打开或关闭。

前院停车位的照明开关。

花园的照明开关。

响应为 JSON,不包含任何文本。

英文文本描述如下图所示:

QeE2z6Wh8WH2w226.jpg
图:训练智能家居系统的技巧

如上所示,我用英语解释了一切。我描述了请求的类型、响应的确切结构,并要求智能家居系统充当情感 AI,即使是涉及个人的问题也能提供建议。我还提供了一些关于时间、地点以及房屋内的设备和房间的详细信息。有了这些,我们就能收到结构完美的响应了。

以上就是 " 编程 " 的所有工作!

下面,我们通过视频中的几个示例来看看四种类别的请求,以及我们如何处理它们。

命令动作

当 GPT-3 检测到你希望控制某一部分智能家居时,它就会响应一个 " 命令 " 类型的动作。

我们的请求是:

Just noticed that I ’ m recording this video in the dark in the office.

Can you do something about that?

刚发现我在昏暗的办公室内录制这段视频。你能帮帮忙吗?

我们得到了如下响应:

{

"action": "command",

"location": "office",

"target": "light",

"value": "on",

"comment": "Turning the light on for you.",

"scheduleTimeStamp": ""

}

老实说,第一次看到这个响应的时候,我简直不敢相信自己的眼睛,系统的表现竟能如此出色!

这并不是一个直白的请求,比如 " 关掉办公室的灯 ",我们的措辞非常绕,而且很复杂。而它给出的回答完胜 Siri、Alexa 或 Google Home 等。

另外,请注意,智能家居系统发回来的 comment (备注)总有些不同,而且可按照个人要求进行个性化设置。

有了这些信息,我们就知道具体需要做什么,而接下来我们需要通过 Siri 处理这个动作。

你可能还注意到,响应中包含一个空的 scheduleTimeStamp (计划时间戳)。这意味着,该动作需要立即执行,如果是稍后再执行的命令,该字段内就会预填充未来的日期和时间:

I sent my son to bed to read for another 20 minutes. Can you switch of the lights in his room when it ’ s time to sleep?

我让儿子上床再读 20 分钟的书。你能在他睡觉的时候关掉他房间里的灯吗?

在这种情况下,GPT-3 知道需要关闭卧室的灯,而且还添加了正确的时间戳,即接到我们的请求后 20 分钟:

{

"action": "command",

"location": "bedroom",

"target": "light",

"value": "off",

"comment": "Switching the lights off in your son's bedroom.",

"scheduleTimeStamp": "Mon Jan 16 2023 12:16:31 GMT+0000"

}

还有一个有趣的例子,智能家居系统能够代替我决定,应该将卧室的温度设置到多少度:

I ’ m going to trust you with this one! Set the bedroom to a temperature you think would help me sleep better.

我相信你能做好这个任务!将卧室的温度设置为你认为可以帮助我更好地入眠的温度。

而它根据自己的知识,将卧室温度设置成了舒适的 19 度!

查询操作

当 GPT-3 检测到你希望读取智能家居的设备状态时,它就会按照 " 查询 " 的动作类别返回响应。

请求例子:

I just finished cooking a nice big meal in the kitchen, can you check what ’ s the temperature there?

我刚刚在厨房里做了一顿丰盛的大餐,你能看看现在那里的温度是多少吗?

我们得到的响应是:

{

"action" : "query",

"location" : "kitchen",

"target" : "thermostat",

"property" : "temperature"

}

完美!操作类型变成了查询,因此我们可以获取厨房恒温器的温度了。同样,稍后我们将通过 Siri 执行此操作。

回答动作

当 GPT-3 检测到你的请求与智能家居无关,只是一个一般性的问题时,它会以 " 回答 " 的动作响应请求。

举个例子:

We are going to head out for a short walk into the town center.

Can you recommend a few things to see?

我们打算去镇中心散步。你能推荐一些值得一看的地方吗?

因为我在请求中告诉 GPT-3 智能家居系统的位置是英国圣奥尔本斯,因此它知道如何响应。

{

"action": "answer",

"answer": "St Albans has a great selection of historical sites and attractions. The St Albans Cathedral is an impressive sight with its Norman architecture. The Verulamium Park is also a great place to visit with its Roman ruins and lovely gardens. For a more modern experience, you can visit the Museum of St Albans or the Alban Arena for a show."

}

简洁漂亮!同样,我们需要将这个响应发送给 Siri 大声读出来。

澄清动作

最后,如果 GPT-3 无法检测到上述动作中的任何一个,它就会要求你重复问题或重新组织语言。

在 iOS、macOS 或 iPadOS 上,打开快捷方式应用程序,并添加请求的详细信息。

oEguLuUHYtbGICuy.jpg
此处有一个技巧,必须运行快捷方式,只需对 Siri 说出快捷方式的名称即可。所以,我们可以将其命名为 "Okay Smart Home"。

接下来,通过 "Ask for < 文本 >..." 操作,获得用户的响应。如果通过 Siri 启动快捷方式,则需要大声说出来;如果通过单击快捷方式运行应用程序,则需键入输入字段。

下面,我们将请求发送给 OpenAI。为此,你需要注册一个账号,并获取 API 令牌。登录后,你可以通过菜单 "View API keys" 查看 API 令牌。

如果使用这个 API,每个请求需要支付的费用约为 1.4 美分,也就是说 1 美元可以执行 70 多个请求。请记住,这个价格并不便宜,因为我们的请求很长,如果是较短的请求,费用也会按比例减少。

b9iBaBPvvE7a19BV.jpg
准备好 API 令牌后,我们来填写请求的详细信息:

model:text-davinci-003

prompt: <Text> Request: <Provided Input> Response:

max_tokens: 1000

header 部分需要添加以下选项:

Content-Type: application/json

Authorization: Bearer <addYourAPIToken>

从 API 获得响应后,我们需要从 JSON 响应中提取数据。然后将数据分配给一个 JSON 变量,接着提取动作类别:

EE6333M6aMNSqzn3.jpg
有了这些信息,我们就可以通过一个 if 语句来检查动作类型:

bL53aCZxxeVEEtOx.jpg
在得知动作类型为 " 命令 " 后,我们再添加一个 if 语句来检查地点、目标以及值等字段,并触发动作,例如打开办公室的灯(Set Office Lights):

v3VcMvIsDV4V46C3.jpg
在 "End If" 语句之后,我们还需要显示 GPT-3 发过来的 comment(备注):

as6rszTA6knaKBbR.jpg
" 查询 " 动作的处理也与之类似:

U8s2stWN1K88S2Nn.jpg
最后," 回答 " 和 " 澄清 " 类型的动作只显示或宣读结果,不做任何处理:

uw71MjZM2AArw4Ym.jpg
以上,通过一系列的 if else 语句,我们就完成了 Siri 的设置。

感觉如何?只需简单的英文说明,就可以创建自己的智能小助手,是不是很有趣?

但这只是一个例子。想象一下,你可以向 GPT-3 发送各种请求,然后通过 Siri 执行不同的操作,是不是觉得很科幻?

【声明】本站官方已审核发布资料均系官方通过公开、合法、收费渠道获得,网友自行发布资料平台只提供审核职责,资料版权归原撰写/发布机构所有,如涉侵权,烦请联系删除(2411977441@qq.com),如对资料内容存疑,请与撰写/发布机构、个人联系。
回复

使用道具 举报

宝贝禹儿 发表于 2023-2-2 20:52:31 | 显示全部楼层
牛逼啊,我已经有了gptchat,也有了iPhone,但没有其他智能家居物品,不然可以抄抄作业
回复 支持 反对

使用道具 举报

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

本版积分规则

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