用 SwiftUI 实现 AI 聊天对话 app - iChatGPT
作者:iHTCboy
一、前言
关于 ChatGPT 的话题,大家都不陌生,我们直入话题,因为 ChatGPT 目前限制中国访问服务,所以如果直接使用 ChatGPT 网页进行对话,还是不太方便。通过 ChatGPT SessionToken 就可以不限制网络访问,所以大家发挥想象力实现各种的聊天机器人、小程序,而原生 app 可能体验更好!所以就有了 iChatGPT!一款用 SwiftUI 实现的开源 ChatGPT app,欢迎大家关注和 pr。
二、iChatGPT
GitHub 开源地址:https://github.com/37iOS/iChatGPT
目前 v1.0.0,实现 ChatGPT 基本聊天功能:
可以直接与 ChatGPT 对话,并且保留上下文;
可以复制问题和回答内容;
可以快捷重复提问等
支持系统:
iOS 14.0+
iPadOS 14.0+
macOS 11.0+
三、App 使用介绍
首先,需要点击 app 右上角图标,添加 ChatGPT SessionToken
密钥才能使用,否则无法请求。
获取 SessionToken
的方法很多,其中浏览器方法:
按 F12 打开控制台(macOS 可以用快捷键
command + option + I
)切换到 Application(应用) 选项卡,找到 Cookies (Safari 浏览器是
储存空间
选项卡)复制
__Secure-next-auth.session-token
的值,添加到 app 后确认。
iOS 操作的界面:
macOS 操作的界面:
四、App 实现介绍
使用 SwiftUI 大概几个小时就完成所有的工作,方便跟苹果生态实现。实现的难点就可能就是模拟 ChatGPT 请求过程。目前是根据 A-kirami/nonebot-plugin-chatgpt 项目中的 python 实现,用 Swift 重写了一次,而 ChatGPT 登陆暂时没有实现,大家可以提 pr。
最后封装的网络请求类 ChatGPT.swift
唯一可以说说的就是,ChatGPT 的 backend-api/conversation
接口返回的内容,为了实现一个连接打开的效果,返回了一堆的数据。例如一个回答是 "我无法确定全球当前的人口数量,因为我没有浏览网页的能力。"
,返回的内容是这样:
所以,需要按行分割,然后取倒数第四行的内容,再去掉 data:
字符才是我们想要的 json 内容。
当然,目前 ChatGPT 还是 beta 阶段,所以暂时没有开放 API,后续如果提供 API,就会更加方便!
五、ChatGPT 的一些问题
是否收费
目前 ChatGPT 是 beta 免费使用阶段,未来 API 请求会收费,具体可参考 https://openai.com/blog。
修改头像
ChatGPT 对话的个人头像,大家发现无法有 https://openai.com 上进行修改。因为目前使用的是 Gravatar 服务。
Gravatar,全称 Globally Recognized Avatar
。翻译成中文叫:全球通用头像。
Gravatar 的概念首先是在国外的独立 WordPress 博客中兴起的,当你到任何一个支持 Gravatar 的网站留言时,这个网站都会根据你所提供的 Email 地址为你显示出匹配的头像。当然,这个头像,是需要你事先到 Gravatar 的网站注册并上传的,否则,在这个网站上,就只会显示成一个默认的头像。
简单来说,就是头像链接为 https://s.gravatar.com/avatar/xxx
,其中 xxx
就是你登陆邮箱的 MD5 值,只要在 Gravatar 注册验证了这个邮箱,你就可以更新头像,或者任何人都可以获取你的头像,只要知道你的邮箱。详细可以参考:Image Requests - Globally
有趣的对话
写一首诗,庆祝 iChatGPT app 开源:
直呼牛~
六、总结
目前 iChatGPT 开源地址:https://github.com/37iOS/iChatGPT 。还有很多功能没有实现,比如:
保存对话
显示个人头像
代码没有高亮
请求失败重试等等
欢迎大家提 PR !
另外,我们近期也会更新 AppleParty,更新苹果批量上传内购商品功能,敬请期待~
最后,大家觉得 ChatGPT
解决了什么痛点?有什么期待吗
欢迎大家评论区一起讨论交流~
欢迎关注我们,了解更多 iOS 和 Apple 的动态~
参考引用
版权声明: 本文为 InfoQ 作者【37手游iOS技术运营团队】的原创文章。
原文链接:【http://xie.infoq.cn/article/ec90ff468e216d7ef725a851b】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论