最近在使用 ChatGPT 的过程中,平时由于有对 API 的需求,但是 GPT4 API 的使用量一上来价格就有点超出预期,看到知了对 PandoraNext 的介绍,有了跃跃欲试的感觉,印象中在 2023 年上半年就有搭建过,但是当时只是感觉和 ChatGPT 官网的样式完全一样之外,并没有其他特别之处,而且当时 ChatGPT Web UI 处于百花齐放的时候,之后也就没有深入去体验,由于最近对 GPT4 API 的需求量有所提升,而且 PandoraNext 可以将 GPT web 的聊天转为 API 的调用方式,所以就有了这次深入的体验。
PandoraNext 的搭建已经非常的简单,对照着文档可以很方便的跑起来,在开启了 Proxy 模式之后,就能够通过 API 的方式对 ChatGPT web 进行访问,由于使用的是 Web 的聊天,对于 GPT3.5 是完全免费的,而对于 GPT4 则只有数量上的限制,不会再单独的收费。PandoraNext 的 token 可以分为 refresh token,session token,access token,share token 和 pool token,通过 PandoraNext 的 api 接口可以使用用户名和密码 refresh token,session token 和 access token,这三种 token 的作用和有效期是不一样的,refresh token 和 session token 可以用来生成新的 access token,生成的所有 token 并不是保存在自己搭建的 PandoraNext 节点上,获取的这些 token 可以在任何一个搭建了 PandoraNext 节点上面使用,这几种 token 更推荐通过账号密码获取 refresh token,通过 refresh token 获取 access token,在通过 access token 获得 share token,获取了 share token 之后就可以直接使用了,但是假如有多个 GPT 账号,每个账号的额度都是一定的,如果使用量比较大,单个账号就可能会达到使用的限额,此时在每个账号获取了 share token 之后,可以将多个 share token 组成一个 pool token,只要 pool token 中的 share token 还有一个可用,那么这个 pool token 就是可用的。
由于 share token 的有效期可以自定义,最长是和生成 share token 的 access token 一样长,现在知道的大概是 10 天,但是在实际中一般会小于 10 天就失效了。session token 的有效期会更长一点,据传大概是 90 天,由于已经有了 refresh token,平时 session token 很少使用,session token 可以在 OpenAI 官网和 GPT 聊天时在 Cookie 中获取。并且 session token 可以用来更新 session token 和 access token。
PandoraNext 提供了很多的 API 用来管理这些 token,我的思路是先通过账号密码,获取 refresh token,将 refresh token 对应账号保存下来,后面通过 refresh token 获取 access token,再通过 access token 获取 share token,再将 share token 也保存下来,将所有账号的 share token 都生成完毕之后,再将所有的 share token 组成一个大的 pool token,而这个 pool token 是不变的,这样就可以保证在接入其他程序之后不用频繁的重新设置 token。
其实 PandoraNext 并不需要我来介绍,网上有铺天盖地的溢美之词,但是这个项目确实解决了我在使用 ChatGPT 时的需求,所以有必要记下自己的使用体验。
就在我着手写这篇介绍的时候,PandoraNext 作者决定放弃这个项目了,这个月底(20240131)之后就用不了了。
使用 PandoraNext 获取的 Refresh Token 依然可以通过 OpenAi 的接口获取 Access Token,还是引用知了的文章。
POST
请求: https://auth0.openai.com/oauth/token
请求 Body 为 Json
{
"redirect_uri": "com.openai.chat://auth0.openai.com/ios/com.openai.chat/callback",
"grant_type": "refresh_token",
"client_id": "pdlLIX2Y72MIl2rhLhTE9VV9bN905kBh",
"refresh_token": "上步获取的refresh token"
}
PandoraNext 的作者也提供了一个 DeepL 的接口服务 DeepLX,可以用在其他的翻译软件上面接口地址如下,如果用不了了,需要手动访问一次接口地址,过一下 CF 的盾,我使用这个接口也有一段时间了,还没有遇到需要手动过 CF 盾的时候。
https://api.deeplx.org/translate