大面积封号的情况下,如何在国内快速且稳定的使用ChatGPT?
近期 ChatGPT 开始大面积封号,不论你是新用户还是PLUS都有可能被封号,所以导致国内的使用和访问情况越来越差。今天,阿斌不是来告诉你如何能够不被封号,而是告诉你如何通过API的方式稳定且快速的使用ChatGPT。
OpenAI 检测到中国的 API 访问时,会直接封号 —— 摘取自https://github.com/justjavac/openai-proxy
OpenAI ChatGPT如何申请 API Key
PS:需要富强,最好是美国
-
打开此网址,登录账号,点击右上角头像 -
View API keys
-
点击
Create new secret key
,即可获得一个SK
开头的key文本,保存好后面会用到。
申请API
代理API
第一种方法
使用外国服务(不屏蔽国内的,如:cloudflare)来代理OpenAI的官方API地址(https://api.openai.com
),从而解决国内无法使用的问题
-
注册 Cloudflare(需要有域名并且已绑定到CloudFlare上),在控制台页面点击
Workers
,再点击创建服务
按钮 -
服务名称:随意(英文),点击
创建服务
-
点击服务详情,点击
快速编辑
按钮 -
将下面代码粘贴到左侧输入框,点击
保存并部署
即可。代码取自:cloudflare-proxy
addEventListener("fetch", (event) => { event.respondWith(handleRequest(event.request)); }); async function handleRequest(request) { const url = new URL(request.url); const fetchAPI = request.url.replace(url.host, 'api.openai.com'); // 部分代理工具,请求又浏览器发起,跨域请求时会先发送一个 preflight 进行检查,也就是 OPTIONS 请求 // 需要响应该请求,否则后续的 POST 会失败 const corsHeaders = { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'OPTIONS', 'Access-Control-Allow-Headers': '*', }; if (request.method === 'OPTIONS') return new Response(null, { headers: corsHeaders }); let body; if (request.method === 'POST') body = await request.json(); const authKey = request.headers.get('Authorization'); if (!authKey) return new Response("Not allowed", { status: 403 }); const payload = { method: request.method, headers: { "Content-Type": "application/json", Authorization: authKey, }, body: typeof body === 'object' ? JSON.stringify(body) : '{}', }; // 在 Cloudflare 中,HEAD 和 GET 请求带 body 会报错 if (['HEAD', 'GET'].includes(request.method)) delete payload.body; // 入参中如果包含了 stream=true,则表现形式为非流式输出 const response = await fetch(fetchAPI, payload); if (body && body.stream && body.stream === false) { const results = await response.json(); return new Response(JSON.stringify(results), { status: response.status, headers: { "Content-Type": "application/json", }, }); } else { return new Response(response.body, { status: response.status, statusText: response.statusText, headers: response.headers, }); } }
-
回到详情页,点击
触发器
,再点击添加自定义域
,将自己绑定到CloudFlare上的域名的二级域名(如:abc.com就填123.abc.com),填写进去即可,会自动绑定到其域名下。
有了 API 和 key 只要选择一个合适的客户端就可以使用了。
第二种方法
点击 这个链接,可以快速一键部署到 Deno Deploy 上,然后在 Settings 选项卡里可以设置自定义二级域名,或者绑定自己的域名。
原地址:openai-proxy
检验 API 是否能用
电脑打开终端(MacOS)或CMD(Windows用户自行安装curl工具),输入以下命令,将$API
换成自己的API地址
, $OPENAI_API_KEY
换为自己的key文本
。
curl $API/v1/models -H "Authorization: Bearer $OPENAI_API_KEY"
输出结果如下表示可以使用
{
[
...
{
"id": "text-babbage:001",
"object": "model",
"created": 1642018370,
"owned_by": "openai",
"permission": [
{
"id": "snapperm-7oP3WFr9x7qf5xb3eZrVABAH",
"object": "model_permission",
"created": 1642018480,
"allow_create_engine": false,
"allow_sampling": true,
"allow_logprobs": true,
"allow_search_indices": false,
"allow_view": true,
"allow_fine_tuning": false,
"organization": "*",
"group": null,
"is_blocking": false
}
],
"root": "text-babbage:001",
"parent": null
}
]
}
客户端
-
OpenCat:一个支持
iOS/macOS/iPadOS
的ChatGPT客户端 -
chatbox:开源的ChatGPT桌面应用,下载安装包直接运行,Window、Mac、Linux全平台支持。
- 问题:chatbox设置成自己的api地址,提示:API 请求失败;不设置的话,必须富强才能使用
-
ChatGPT-Desktop:Window、Mac、Linux全平台支持
- 问题:设置成自己的api地址,提示:网络有问题;不设置的话,必须富强才能使用
-
xyhelper-desktop:支持Window、Mac,无需魔法, 也不需要账号密码, 只需要在本地运行即可。请求太快会限制(2023年停止更新)
总结
如果你对开发或者对使用没有太大的需求,可以看看 这篇文章,里面有免费的可以使用,不需要自己瞎折腾;有需求的可以仔细折腾一下,正所谓:方法总比困难多,不知道这个方法有效时间多长,先用起来,免费的还要啥自行车是吧。
你觉得这篇文章怎么样?
Teacher Du
已做好贵站的友链,请静候CDN缓存生效!
斌仔
好的
星辰
测试一下