我开源了一个 AI 聊天 app — AssisChat

2024年3月19日

在一年前我做了一个 iOS 端的套壳 AI 聊天应用 —— AssisChat,现在决定将其开源。


AssisChat 介绍

在大约一年前,那个时候 AI 聊天正兴起,ChatGPT 也光有一个为人称道的模型,但其网页版的用户界面并不是十分好用,也没有一个官方版本的手机端 app 。但这个需求又是十分强烈的,包括我自己也十分想要一个手机端的应用,以便随时随地掏出手机问问 ChatGPT 。

于是那是我自己动手做了一个套壳的 iOS 应用,在 OpenAI 官网申请到自己的 API Key 后,输入到 app 内就可以开始愉快地使用了。这个就是今天要介绍的应用 AssisChat ,其源代码可以在 GitHub 上找到。

AssisChat 的名字来源于 Assistant 和 Chat 的组合,一开始我设想的使用方式,就是用户可以通过系统消息、每条消息都会带上的前缀等这些选项,来设置一个助手角色,然后这个角色就会始终保持在相同的话题上。

当时我对 iOS 的开发并不是十分了解,在这之前仅仅稍微看过一点点 Swift 和 SwiftUI 。但还是一步步一边摸索一边开发,慢慢地实现了自己想要的功能。

最终完成的 App 的主要功能有:

  • 支持 iOS/iPadOS/macOS
  • 使用自己的 OpenAI/Claude API Key
  • 自定义对话行为,比如系统消息、消息前缀、温度等
  • 使用分享扩展,实现不跳出正在使用的 app 来使用 AssisChat
  • 使用键盘扩展,实现快速使用 AI 并将内容填充到其它应用的输入框中

因为当时 ChatGPT 的翻译比起其它传统翻译软件来说,效果是出奇地好,只是慢了点。但是对于许多场景来说,也并不需要那么快的速度。但是每次翻译都要切换 App 却显得有点繁琐,于是我想起 iOS 系统有一个分享功能,可以实现不切换 App 就能分享文本到其它应用,于是我便接入的分享扩展,用在翻译这种场景确实是非常不错的。

键盘扩展的想法,是看到一款叫 Smarty 的应用非常有趣,它把 AI 的功能做到了 iOS 的键盘上,可以方便很方便地把 AI 生成的内容填充到任何其它应用的输入框里,而不用跳出正在使用的应用。再后面看到 OpenCat 也实现了这个功能,于是我也就加上了。

再后来有了一些朋友在使用了,也有一些朋友提了一些建议。于是慢慢地又加入了 Claude API 的支持、上下文数量限制、iCloud 同步、二维码导入配置等支持、macOS 支持。

为什么开源

在上架到商店后不久,我便在 App 里加了个内购,看看能不能摊平每年 600 块的苹果开发者账号费用。虽然这个内购是否购买,完全不会影响使用,购买后的功能没有任何变化,但还是有不少小伙伴因为支持而购买。我没有仔细统计过数据,但印象中这一年下来,应该是刚好摊平了开发者费用。

这种没有强制购买的内购,还是有这么多小伙伴购买,让我看到了这个世界上还是有很多愿意支持内容创作的人的。所以在前面一段短期的时间里,我还是比较积极地在更新这个应用。

但后面因为一些原因,还是慢慢地搁置了这个应用的开发,我对这个应用的热情也慢慢地消退了。这些原因包括但不限于:

  • 苹果限制上架使用 API 模式的 App
  • OpenAI 官方出了移动端的 App
  • 如果想通过提供服务来收费,也有一些限制,比如 OpenAI 随时可能会封禁中国用户的账号
  • 已经有比较有名的像是 OpenCat 这些同类 App

虽然不好意思说,但我确实是一个有点知难而退的人,遇到一点点困难就会想着放弃。所以这个 App 到现在已经有九个月没更新了。中途也会有一些发邮件向我反馈问题,我也基本没有回复。

虽然我终会找各种原因为自己不更新找借口,但是还是会觉得对那些购买了内购的小伙伴有点愧疚。对那些真的喜欢这个 App 而且在帮忙反馈问题的小伙伴感到抱歉。

既然我自己没有太多动力继续更新,所以我决定将这个 App 开源,让有需要的人可以自己编译使用,或者是自己修改成自己想要的样子。甚至也可以作为学习 Swift 和 SwiftUI 的一个参考,虽然代码写得并不是很好,但聊胜于无。

有兴趣的朋友们可以自己按照需求修改代码,自己构建运行。也欢迎提 PR 来帮助我完善这个 App。

最后,代码仓库可以查看 GitHub ,欢迎 Star 。


分享到:X