最近
,各种各样使用ChatGPT
的方式都出现了,但是有很多都需要在电脑操作,或者点击别人的各种各样的链接,而且有些可能还要魔法上网才能实现,这些都是稍微有点繁琐的。
那么
,最方便的还是直接使用我们的手机一键打开或者语音唤醒就可以实现链接ChatGPT
的,下边我们就来看下怎么实现吧!
1. 效果展示
- 连续对话
- 手动输入
2. 云函数实现
我们仍然使用Laf云平台来实现,如何注册Laf和安装依赖,见上篇文章 《使用Laf云平台,两步将ChatGPT接入微信公众号(含代码)》
- 创建Siri云函数
js
// siri.js
// 引入必要的库
import cloud from '@lafjs/cloud';
const { v4: uuidv4 } = require('uuid');
// 创建数据库连接
const db = cloud.database();
const ChatTable = db.collection('siri')
// 设置key和模型
const OPENAI_KEY = process.env.OPENAI_KEY || "YOUR API-Key";
export async function main(params, context) {
console.log('siri入参:', params);
const { question, cid } = params.body;
// 创建一个id
const chatId = cid ? cid : uuidv4();
// 获取上下文 id
const chats = await ChatTable.where({
chatId
}).orderBy("createdAt", "desc").getOne();
console.log("获取上下文", chats)
const parentId = chats?.data?.parentMessageId
const { ChatGPTAPI } = await import('chatgpt')
let api = cloud.shared.get('api')
if (!api) {
api = new ChatGPTAPI({ apiKey: OPENAI_KEY })
cloud.shared.set('api', api)
}
try {
// 如果有上下文 id,就带上
let res;
if (parentId) {
res = await api.sendMessage(question, { parentMessageId: parentId })
} else {
res = await api.sendMessage(question)
}
console.log("res", res)
const responseMessage = res.detail.choices[0].message;
// 保存返回结果
await ChatTable.add({ chatId, ...responseMessage, parentMessageId: res.parentMessageId });
// 返回结果
return { reply: responseMessage.content, cid: chatId };
} catch (error) {
// 打印错误日志
console.log('error', error);
if (error.statusCode === 429) {
return {
error: '问题太多了,我有点眩晕,请稍后再试'
}
}
return {
error: "问题太难了 出错了. (uДu〃).",
}
}
};
最新代码可见:三分钟把ChatGPT接入Siri,让你的语音助手化身智能AI | 前端每日三省
3. 添加快捷指令
- 打开以下链接,添加快捷指令。 Shortcuts
- 在打开的页面中点击
获取捷径
按钮,然后在弹出的窗口中点击添加快捷指令
。
- 添加过之后,在快捷指令中找到刚添加打开机器人快捷指令,点击右上角三个点进入编辑页面,然后把上边发布的Siri云函数的地址复制粘贴到文本的位置,然后点击完成。
- 到此,语音助手设置完成,你可以通过语音
嘿 Siri,打开机器人
唤醒带有ChatGPT的语音助手了,快去体验吧!
- 如果你想要在手机主屏幕通过输入文字与ChatGPT交互,那么你可以把快捷指令添加到主屏幕,如下: