OpenClaw、Hermes 这批新一代的智能体产品 有一个共同点 它们都支持用户用自己的 ChatGPT 订阅 不用再单独充 API key 的钱 这个体验还是蛮好的 我一直想知道它是怎么实现的 所以了解了一下源代码 结论嘛很简单 技术门槛比咱们想象的要低 而且有一个非常直接的教材可读 一个是

Codex CLI OpenAI 官方开源的命令行工具 完整的订阅登录流程就在它代码里 另一方面呢 是 OpenClaw 底层的 Python 这个代码仓库 这里面包含了 py-ai 这个开发包 它使用了与 Codex CLI 同样的 ChatGPT 订阅账号的登录机制 今天咱们就花几分钟

把这套流程拆解清楚 怎么读懂 ChatGPT 订阅登录 然后把它落到你自己的 AI 应用里 大家好我是小木头 现在我们就开始分享今天的内容吧 首先 咱们简单介绍一下几个相关的项目 之间的依赖关系 我们来看最知名的

在 package.json 这个文件当中 约定了 py-ai 这个依赖包 那这个依赖包 就是在 OpenClaw 中 集成 AI 能力的非常重要的一个开发包 我们来看看这个包来自于哪里 这个包就来自于现在我所分享的 PyMono 这个项目 在这个项目中 包含了一系列 常用的 AI

应用开发所需要的工具包 其中就包含了这个 py-ai 包 这其中 就实现了包括像 ChatGPT 订阅账号的登录 另一个重要的 代码仓库就是 Codex 这个呢是 OpenAI 的命令行工具 开源的 我们在这里直接可以阅读它的源代码 根据我的比对 PyMono 所提供的 ChatGPT

订阅账号登录呢 和 Codex 提供的机制是完全一样的 这正是我们学习的基础 基于上面我们所介绍的几个开源项目 我们有了给 AI 应用接入 ChatGPT 订阅登录的非常好的一个方案 咱们完全可以参考 OpenClaw、 Hermes 目前的实现 毕竟它们都是开源项目 正如刚才我们所介绍的

同时呢 咱们又有 Codex CLI 的完整 OAuth 实现 因此这不是一套黑科技 是一套可以复用的官方登录流程 订阅登录为什么值得做呢 先说动机 这件事对独立开发者的价值在哪里 在 API key 的模式下 当发送请求 调用模型时是按照 token 计费 使用越多成本越高 在高频使用的场景下

账单还是蛮高的 用过的朋友呢 应该都有体会 而订阅登录模式 它是订阅制 包月或者包年 高频使用会更加的划算 相对而言 用的越多呢 单次的成本呢 相对要更低一些 这也是订阅登录的核心价值 这也是目前绝大多数模型服务商 会提供的方案选项 那么个人用户呢 也蛮乐于订阅自己喜欢的或偏好的 服务商 大家在

OpenClaw、Hermes 这类智能体产品中 应该也深有体会 如果要配置 API key 来直接使用模型驱动智能体呢 恐怕账单还是吃不消的 因此呢绝大多数情况下 咱们还是使用的订阅的模式

现在我们就来分享一下 订阅登录的底层原理 看看整个 OAuth 流程是什么样的 我们来学习一下它的核心思路 我参考了 Codex CLI 的源代码 通过比对可以看到 像 OpenClaw、Hermes 这些智能体呢 都是基于同样的流程实现的订阅登录 在这个流程中 有几个关键的环节 它跟任何一个

OAuth 2.0 工作流都差不多 首先当然用户是在应用中点击登录 跳转到授权页 用户授权 返回授权码 以 OpenClaw 为例 会有一个中间的应用服务器 携带授权码 请求 token 调用的是 OpenAI 的 token 接口 通过 token 的交换获得访问令牌 也就是 access

token。

基于此 OpenClaw、 Codex 这类的应用可以获取到用户信息 并且建立登录状态 在整个流程当中 应用是接触不到密码的 它只能拿到 token 整个流程对于用户来讲 体验也是非常不错的

可以使用已经存在的 ChatGPT 的账号 或者比如 Plus 订阅 而无需额外的注册 中间这个应用服务器 大家可以注意一下 在 OpenClaw、Codex 这类产品中 都会有个内置的 HTTP 服务器 用来接收回调 这就是整个订阅登录的工作流程 在了解了订阅登录的核心思路后 现在呢我们就可以尝试

将比如 ChatGPT 订阅的登录 集成到自己的 AI 应用中 我现在呢就来分享一个 在移动设备中 如何实现 token 获取自动化呢 ChatGPT 订阅登录 为了实现它呢 我做了一个小小的 工具包 RNAI Kit 我会将这个代码仓库链接呢 放在视频的描述中 感兴趣的朋友呢可以来参考一下

最初的目的是期望能够在移动设备中 来做这个用户的登录 这个工具包 提供了几个小小的开发包 第一个呢是 OAuth 这个呢是做 OAuth、API key 的管理 其中还包含了 token 的刷新

安全的存储等等 这是参考了 PyMono 的实现机制 是 ChatGPT provider 这个包 这是基于了 Vercel AI SDK 可以说在这个 RNAI Kit 工具包中 核心的依赖呢还是 AI SDK 目前支持到的 这个 SDK 提供了大模型集成、agent 开发必要的组件和工具

不过其中呢 没有支持到 ChatGPT 的订阅登录 那在 ChatGPT provider 这个包中就提供到了 类似于 Codex、OpenClaw 这类 基于了 PyMono 所实现的 我们后面看一段示例代码 就知道如何使用 ChatGPT provider 最后呢是会话的管理 有一个

sessions 的开发包 这套组合 帮助咱们能够相对比较轻松地 在 React Native 应用中 集成 ChatGPT 的订阅登录 来看一段示例代码 顺带提一句 像 Anthropic 所提供的 Claude

订阅呢 理论上 咱们也可以在自己的浏览器、 AI 应用中实现集成 不过 iOS 的模拟器中 众所周知的原因 在这里呢 就不推荐大家将 Claude 订阅呢 集成到自己的应用中 最简单的方式就是实现一个 OAuth manager 大家可以通过 login 或者 setAPIKey 的接口

来配置自己的订阅登录 或者 API key 当我们要使用到 OpenAI 或 ChatGPT 订阅呢 就像下面这段示例代码一样 调用 OAuth 的 login 我们在这里登录的是 OpenAI Codex 这里有一个回调 这个回调 意思是期望用户在完成登录 在回调后呢 复制回调的 URL

为什么要做这个呢 我们马上来介绍 OpenAI 返回的 code 原因在于 OpenAI 的 ChatGPT OAuth 会使用一个

不过在目前的移动应用中 我们是另一方面呢 根据我目前跟 AI 的对话 我了解到 在移动设备中 似乎没法可靠地处理这个回调 因此呢 不得不使用粘贴回调 URL 的这种方式 我们一会儿会在模拟器中 演示这个回调 以及授权的场景 在完成登录后 就可以正常的使用 像 createChatGPT 这个函数 这个函数就来自 于 ChatGPT provider。

ChatGPT 登录 只需要将 OAuth 返回的这个 JWT token 作为 API key 来传递给 createChatGPT 函数 后续的调用 就跟我们日常使用 Vercel AI SDK 完全相同 现在呢我们就来介绍一下 在移动设备中 为什么标准的这套 OAuth 流程 会存在问题呢

问题不在于 OAuth 本身 而是在于 OpenAI ChatGPT 的 localhost 回调 这个回调呢 我们无法在移动 设备中启用一个

HTTP 服务器来处理 也就是说 我们会看到在移动端浏览器中呢 是无法打开这个地址的 我们回到订阅登录的底层原理 这里当咱们使用 Codex 或者像 OpenClaw 这类应用时 当打开 OpenAI 授权页面 用户登录并授权 会被跳转到一个 localhost URL 这个 URL 呢 在

Codex 或 OpenClaw 是通过运行一个本地的应用 服务器来接收 从而实现了自动化的整个 OAuth 流程 它能够接收到回调 得到其中的 code 进行 token 的交换 最后得到访问令牌 在移动设备中则没有办法运行 这样的 HTTP 服务器也就没法去接收 如果有朋友知道

如何更加优雅解决这个问题 从而真正实现在移动设备上的登录 跳转 请在评论区给我留言 目前我能想到的解决方案呢 是在移动应用中 当打开浏览器完成登录后来接收 加载了 localhost 这个 URL 时 显示无法访问 不过呢

这时用户可以通过复制地址栏中的 URL 并将其粘贴到应用中 在应用中通过代码处理这段 URL 来获取到对应的 code、token 从而完成用户的登录 在 RNAI Kit 这个项目中呢 我还包含了一个应用叫 Alan 那现在我在本地运行一下 我们来看看登录的体验 启动 Xcode 我将它安装到

好了 现在打开的就是这个简单的一个示例 应用 我们点击右上角的三个点的菜单 打开设置页面 理论上 Claude、ChatGPT 都可以实现 订阅账号的登录 在这里我们点击 ChatGPT OpenAI 的 sign in、localhost:1455 的回调 URL 选择自己的账号 完成登录就好

大家在登录中可能会注意到 这里提示的是登录到 Codex 在下面的描述信息中也有 这么一个 Codex will not receive your chat history when you use

Codex 这类的信息 原因在于目前的这个实现呢 使用的是跟 Codex CLI 同样的客户端 ID 我也比对了 PyMono、OpenClaw 它们的实现呢 也都重用了同样的 ID 点击 continue 完成登录 现在就来到了一个无法加载的页面 这也是刚才我们所说的回调的页面 我们现在可以做的呢

就是将这个链接复制 然后关闭浏览器 这时在应用中会弹出一个粘贴 刚才 URL 的 我们将其粘贴提交 这样就完成了登录 ChatGPT、OpenAI 这里我给它这么一段提示词 显示已经连接 我们就可以回到聊天这里 在这个示例应用中 我还集成了目前市面上非常流行的 GPT Image 2 模型的生图功能

我们来试试吧 看看它生成图片的效果 好了端到端跑通了 咱们可以使用到自己的 ChatGPT 订阅 并且用到生图的功能 咱们如何将 GPT Image 2 的生图能力 集成到 AI 应用中

特别是基于 ChatGPT 订阅用户呢 我们会在下一期视频分享中 专门来介绍 现在 咱们对 ChatGPT 订阅账号的登录核心思路 流程呢有了基本了解 整个流程已经介绍完毕 我们来看看整体架构是什么样的 从登录到对话完整链路是什么样的 在一个典型的 AI 应用中 如果我们期望实现 或接入

ChatGPT 订阅用户登录呢 首先当然要做的是 OAuth 的登录 打开一个浏览器访问 OpenAI 的授权页面 这时他们都支持 ChatGPT 订阅的账号登录 OpenAI 会调用一个回调 URI 在目前 Codex CLI 的配置中 它所使用的回调 URI 是一个 localhost 的

URI 在移动设备中呢 可能没有太好的 办法来自动化的处理它 那么我们在演示中也介绍了该怎么做 当得到了必要的 token 比如 access token、 refresh token 将它存储到一个安全的存储中

在 RNAI Kit 工具包里 还提供了 ChatGPT provider 的实现 大家也可以参考它实现自己的 provider 做这个 provider 原因是在整个 RNAI Kit 的实现中 我是期望能够基于 Vercel AI SDK 好处是这个 SDK 已经提供了

绝大多数智能体应用所需要的接口 比如像 streamText、generateText 等等 为了支持移动应用 比如 React Native 应用的开发 我还在这个工具包中 添加了 expo/fetch 工具的支持 基于此 在我的 RNAI Kit 中还添加了 ChatGPT provider

这是对 ChatGPT 订阅用户登录做的封装 这样呢大家在使用 Vercel AI SDK 的时候呢 就同样能够使用订阅用户来登录 最后在移动应用中 咱们构建了一个小小的聊天 UI 基于订阅用户 就能够完成对话

对话中还用到了当前最流行的 GPT Image 2 和生图 关于生图方面的集成呢 我们在下一期介绍 这就是整个登录到对话的完整链路 关键思路还在于将 OAuth 呢 串联到咱们的 AI 调用链路中 这套方案广泛地适用于 Web 应用、 桌面应用的开发 最后我们来总结一下吧 订阅登录

改变了独立开发者的成本结构 OpenClaw、Hermes 也已经开始使用这套机制 如果大家对我所分享的 RNAI Kit 这个工具感兴趣呢 就访问视频右下角的链接吧 好了今天我们的分享就到这里 在下一期中 我们会继续订阅登录 分享如何在你的应用中 也能调用 GPT Image 2 来生成图片

这其中有一些 ChatGPT 后端 API 的特殊点 那我们就下期视频再聊 咱们下期见