添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

【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,不包含任何文本。

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

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

如上所示,我用英语解释了一切。我描述了请求的类型、响应的确切结构,并要求智能家居系统充当情感 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 无法检测到上述动作中的任何一个,它就会要求你重复问题或重新组织语言。

通过 Siri 处理数据

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

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

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

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

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

准备好 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 变量,接着提取动作类别:

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

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

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

“查询”动作的处理也与之类似:

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

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

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

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

《2022-2023 中国开发者大调查》重磅启动,欢迎扫描下方二维码,参与问卷调研,更有 iPad 等精美大礼等你拿!

☞被 Twitter 解雇三个月,他带着竞品 Spill “杀”回来了!网友:这是什么爽文情节?
☞ChatGPT “克星”出现,OpenAI 重磅发布全新 AI 鉴别工具,网友吐槽:失败率太高啦!
☞网传微软苏州裁员:赔偿N+12个月工资;ChatGPT将上线付费订阅;Win 10数字许可停售 | 极客头条
【CSDN 编者按】ChatGPT 的问世,带来了前所未有的智能应用新方式。如果“AI+AI”,会碰撞出什么样的火花?近日,国外一名 Web 高级工程师 Mate Marschalko 将 ChatGPT 和 Siri 人工智能语言助手进行了结合,万万没想到,一套更为完善的智能家居系统由此诞生了。原文链接:https://matemarschalko.medium.com/chatgpt-in-a... <h2>备忘录</h2> <div class="input-container"> <input type="text" placeholder="添加新的备忘录" v-model="newMemo" @keyup.enter="addMemo"> <button @click="addMemo">添加</button> <ul class="memo-list"> <li v-for="(memo, index) in memoList" :key="index"> <span class="memo-text">{{ memo }}</span> <button class="delete-btn" @click="deleteMemo(index)">删除</button> </template> <script> export default { data() { return { newMemo: '', memoList: [] methods: { addMemo() { if (this.newMemo.trim() !== '') { this.memoList.push(this.newMemo.trim()) this.newMemo = '' deleteMemo(index) { this.memoList.splice(index, 1) </script> <style scoped> .memo { max-width: 600px; margin: 0 auto; padding: 20px; font-family: Arial, sans-serif; text-align: center; .memo h2 { font-size: 24px; font-weight: bold; margin-bottom: 20px; .input-container { display: flex; align-items: center; justify-content: center; margin-bottom: 20px; .input-container input[type=text] { width: 70%; padding: 10px; border: none; border-radius: 4px; font-size: 16px; margin-right: 10px; .input-container button { background-color: #4CAF50; color: white; border: none; border-radius: 4px; cursor: pointer; padding: 10px; font-size: 16px; .memo-list { list-style: none; padding: 0; margin: 0; .memo-list li { display: flex; justify-content: space-between; align-items: center; padding: 10px; border-bottom: 1px solid #ddd; .memo-list li:last-child { border-bottom: none; .memo-list li .memo-text { flex: 1; text-align: left; .memo-list li .delete-btn { background-color: #f44336; color: white; border: none; border-radius: 4px; cursor: pointer; padding: 10px; font-size: 16px; </style> 这个备忘录的界面和 苹果 手机的备忘录类似,你可以在 苹果 手机上参考备忘录的布局和样式设计。