侧边栏壁纸
博主昵称

利用cf反代实现国内直接使用openai的api接口

烟斗汪
2023-04-19 / 0 评论 / 398 阅读 / 正在检测是否收录...

之前烟斗汪分享了一篇本地私有chatgpt客户端,可以实现私有的chatgpt本地服务。但是其中需要一个key以及一个代理地址。key比较好解决,购买即可。但是代理地址最好是用的人越少越好,自己搭建一个api域名地址就成了有些人的刚需。

该方案的主要思路是使用 Cloudflare 的 Workers 来代理 OpenAI 的 API 地址,配合自己的域名即可在境内实现访问。因为 Cloudflare Workers 有每天免费 10 万次的请求额度,也有可以免费注册的域名,所以几乎可以说是零经济成本。技术成本请自己学习。

使用这个方案需要你有以下东西:

一个国内可访问的域名(没有请自己购买)

一个 Cloudflare 账号(免费注册)

步骤大纲

1新建一个 Cloudflare Worker

2将反代代码粘贴到 Worker 中并部署

3给 Worker 绑定一个国内可访问的域名

4使用自己的域名代替 api.openai.com

5使用自己的域名在各种chatgpt项目中填上去,即可实现国内直接访问

具体步骤

将域名 NS 转到 Cloudflare

没有域名的请自己购买一个,腾讯云阿里云都能买,基本教程官方也都有,如果这都不会,建议别折腾了···

如果域名已经托管在 Cloudflare ,忽略这一步即可。

没有 Cloudflare 账号的话可以注册一个,具体注册细节就不多说了。注册或登录到 Cloudflare 的管理界面后,点击侧边栏的 “Websites” ,然后点击 “Add a Site” 按钮准备将域名转到 Cloudflare:

在 “Enter your site (example.com)” 处输入要转入的域名后,点击 “Add Site”:

根据 Cloudflare 的提示,在域名注册商处将 NS 修改到 Cloudflare 指定的地址,等待域名解析成功后,即可进行后续操作。

创建一个 Cloudflare Worker

登录到 Cloudflare 的管理界面后,点击侧边栏的 “Workers” 选项,然后点击 “Create a Service” 创建一个 Worker。

然后在创建界面中输入 “Service name” 后点击 “Create Service” 按钮新建 Worker。“Select a starter” 项先不用管。

至此 Cloudflare 的 Worker 便创建好了,下面开始修改 Worker 的代码,使其能代理 OpenAI 的 API。

修改 Cloudflare Worker 的代码

在 Worker 的管理界面,点击右上角的 “Quick Edit” 按钮编辑代码 Worker 的代码。

在左侧的代码编辑器中,删除现有的所有代码,然后复制粘贴以下内容到代码编辑器:

const TELEGRAPH_URL = 'https://api.openai.com';

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
  const url = new URL(request.url);
  url.host = TELEGRAPH_URL.replace(/^https?:\/\//, '');

  const modifiedRequest = new Request(url.toString(), {
    headers: request.headers,
    method: request.method,
    body: request.body,
    redirect: 'follow'
  });

  const response = await fetch(modifiedRequest);
  const modifiedResponse = new Response(response.body, response);

  // 添加允许跨域访问的响应头
  modifiedResponse.headers.set('Access-Control-Allow-Origin', '*');

  return modifiedResponse;
}

最后点击编辑器右下角的 “Save and deploy” 按钮部署该代码,在弹出的对话框中继续选择 “Save and deploy” 确认部署。

至此,便可以使用该 worker 的地址来代替 OpenAI 的 API 地址了。比如想要请求 ChatGPT 的 API 时,把官方文档中的 https://api.openai.com/v1/chat/completions 替换成 https://你自己的地址.workers.dev 即可

但是你可能会发现,这样做了依然还是没有解决问题,因为 Cloudflare Workers 的 workers.dev 域名是无法在国内直接访问的。所以我们需要给 Worker 绑定一个自己的域名。

绑定域名

在 Cloudflare Workers 的管理界面中,点击 “Triggers” 选项卡,然后点击 “Custom Domians” 中的 “Add Custom Domain” 按钮以绑定域名。

输入域名后点击 “Add Custom Domain”, 添加你之前绑定在cloudflare上的域名。

随后,就可以通过你自己的域名来代替 OpenAI 的 API 地址了,你就可以在国内直接使用了。

比如在本文的例子中,想要请求 ChatGPT 的 API ,即是把官方 API 地址 https://api.openai.com 换为你自己的域名 https://openai.nooc.ink 即可。由于 Cloudflare 有每天免费 10 万次的请求额度,所以个人使用基本是零成本的,如果要商用,这点额度是不够的。

0

评论 (0)

取消