ChatGPT Android 使用 Stream Chat SDK for Compose 在 Android 上展示 OpenAI 的 ChatGPT。
该存储库的主要目标是展示以下内容:
- 演示 OpenAI 的聊天 API。
- 使用 Jetpack Compose 创建全面的 UI 元素。
- 使用 Hilt 和 AppStartup 等 Jetpack 库集成 Android 架构组件。
- 通过 Kotlin 协程和 WorkManager 高效执行后台任务。
- 通过 Stream Chat SDK for Compose 无缝集成聊天系统以实现实时事件处理。
📷 预览
🛥 Stream Chat 和 Video SDK
ChatGPT Android 使用 Stream Chat SDK for Compose 实现消息系统。如果您对为应用添加强大的应用内消息传递或实时视频聊天感兴趣,请查看 Android 聊天消息教程 或 Android 视频通话教程!
- GitHub 上的 Stream Chat SDK for Android
- GitHub 上的 Stream Chat SDK Android 示例
- Stream Chat Compose UI 组件指南
如果您有兴趣构建具有视频/音频通话、音频房间或直播功能的实时会议室,请查看以下参考资料:
💻 如何构建项目?
为了正确设置项目,务必按照以下说明进行操作。在大多数情况下,您可以在 10 到 20 分钟内完成所有配置步骤:
-
转到 Stream 登录页面。
-
如果您有 GitHub 或 Google 账户,点击 使用 GitHub 继续 或 使用 Google 继续 按钮,您可以在几秒钟内完成注册。
- 进入 仪表板,点击 创建应用 按钮,如下所示。
- 填写空白处,如下所示,然后点击 创建应用 按钮。
- 您将看到如下图所示的 密钥,然后复制它。
- 在此 Android 项目的根目录中创建一个名为 secrets.properties 的新文件,并将密钥添加到
secrets.properties
文件中,如下所示:
STREAM_API_KEY=..
-
再次进入您的 仪表板,点击您的应用。
-
在 概览 菜单中,向下滚动到页面中间,您可以找到 认证 类别。
-
打开 禁用身份验证检查 选项,然后点击 提交 按钮,如下图所示。
-
点击左侧菜单中的 资源管理器 选项卡。
-
依次点击 用户 -> 创建新用户 按钮,并按照以下方式填写用户信息:
- 用户名:
Chat GPT
- 用户 ID:
70ef052a-da88-4451-af92-99f7ed335a71
- 现在,是时候设置 OpenAI API 密钥了。转到 OpenAI API 仪表板,使用您的 Google 账户登录,并点击 开始验证 以验证您的电话号码,以创建 API 密钥。
- 验证电话号码后,在如下图所示的页面上点击 创建新的密钥,创建您的 API 密钥:
- 复制并粘贴您的 API 密钥到
secrets.properties
文件中,将其命名为GPT_API_KEY
,放在STREAM_API_KEY
字段下方:
GPT_API_KEY=..
- 解锁 OpenAI API 的速率限制
根据他们 速率限制 文档中概述的指南,自账户创建以来至少花费 $5 后,才能访问 API 的免费层。这意味着,您应该向 OpenAI 注册您的支付方式并购买初始信用额度。
因此,你应该前往OpenAI账单页面并点击添加付款详情按钮,如下图所示:
- 一旦添加了付款详情,你将能看到添加到信用余额按钮,如下图所示:
接下来,点击添加到信用余额按钮以购买初始信用额度。正如你在前一步骤中发现的,最低信用额度从$5开始。因此,如果你只打算使用API限额进行测试或构建一个副项目,可以选择最低价格。另外,请注意最好禁用自动充值选项以避免意外收费。
- 完成以上所有步骤后,现在就可以构建、运行并享受你的项目了!
⚙️ 故障排除
你通常可以通过参考OpenAI错误代码文档找到错误代码背后的原因。
401错误
如果在与ChatGPT应用聊天时遇到401错误,如下图所示,至关重要的是要验证你的OpenAI API密钥的正确性。确保你的API密钥没有拼写错误,并且已正确复制粘贴到secrets.properties
文件中,如上述指南所述。
429错误
如果一开始就遇到这个错误,很可能是你的速率限制不符合要求。请重新查看上述指南中的第16步以获取进一步说明。
🛠 技术栈与开源库
- 最低SDK级别21。
- 100% Jetpack Compose基于 + 协程 + Flow用于异步和冷流。
- Compose聊天SDK用于消息传递:Jetpack Compose聊天消息SDK建立在低级聊天客户端之上,提供模块化、可定制的Compose UI组件,你可以轻松地将其添加到你的应用中。
- OpenAI聊天API:给定一个由对话组成的消息列表,模型将返回一个响应。
- Jetpack
- Compose:Android的现代工具包,用于构建原生UI。
- ViewModel:UI相关数据持有者和生命周期感知。
- App Startup:提供一种直接、高效的方式在应用启动时初始化组件。
- Navigation:用于屏幕导航和Hilt Navigation Compose用于依赖注入。
- Room:通过提供SQLite的抽象层来构建数据库,允许流畅的数据库访问。
- Hilt:依赖注入。
- WorkManager:实现带调度的后台处理。
- Landscapist Glide、animation、placeholder:Jetpack Compose图像加载库,使用Glide、Coil和Fresco获取并显示网络图像。
- Retrofit2 & OkHttp3:构建REST API和分页网络数据。
- Sandwich:构建轻量级现代响应接口以处理Android的网络有效载荷。
- Moshi:适用于Kotlin和Java的现代JSON库。
- ksp:Kotlin符号处理API。
- Balloon:现代化且精致的工具提示,完全可定制,带箭头和动画,适用于Android。
- viewmodel-lifecycle:ViewModel生命周期允许你跟踪和观察Jetpack的ViewModel生命周期变化。
- StreamLog:一个轻量级且可扩展的日志库,适用于Kotlin和Android。
- 基准配置文件:通过在APK中包含类和方法规范列表来改善应用性能,可被Android运行时使用。
🏛️ 架构
ChatGPT Android遵循Google的官方架构指南。
ChatGPT Android是按照应用架构指南构建的,因此它是展示架构如何在实际项目中工作的绝佳样本。
整体架构由两层组成:UI层和数据层。每层都有专门的组件,它们各自承担不同的责任。 箭头表示组件对目标组件有依赖关系,按其方向。
架构概述
每层都有下面的不同责任。基本上,它们遵循单向事件/数据流。
UI层
UI层由UI元素组成,如按钮、菜单、标签等可与用户交互的元素,以及ViewModel,它保存应用状态并在配置更改时恢复数据。
数据层
数据层由存储库组成,其中包括业务逻辑,如从本地数据库查询数据和从网络请求远程数据。它实现为离线优先的业务逻辑源,并遵循单一真实来源原则。
有关整体架构的更多信息,请查看**使用Jetpack Compose构建实时WhatsApp克隆**。
模块化
ChatGPT Android采用了以下模块化策略:
-
可重用性:适当模块化可重用代码,为代码共享创造机会,同时限制其他模块对代码的访问。
-
并行构建:每个模块可以并行运行,减少构建时间。
-
分散关注点:每个开发团队可以分配他们专门的模块,他们可以专注于自己的模块。
💯 MAD评分
🤝 贡献
除了聊天功能外,大多数功能尚未完成,因此任何人都可以按照贡献指南贡献并改进这个项目。
觉得这个仓库有用吗?💙
通过加入这个仓库的__星标者来支持它。:star:
另外,在GitHub上关注我__,了解我的下一个创作!🤩
许可证
由2022 skydoves (Jaewoong Eum)设计和开发
根据Apache许可证2.0版("许可证")授权;
除非遵守许可证,否则你不得使用此文件。
你可以在以下网址获得许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则根据许可证分发的软件
是基于"按原样"分发的,不附带任何明示或暗示的担保或条件。
有关许可证下的特定语言管理权限和限制,请参阅许可证。