由于在国内无法直接访问OpenAI的官方API,因此我们使用官方提供的代码在本地调用API时会出现报错。
Error:Failed to connect to api.openai.com port 443: Timed out
使用宝塔面板反代OpenAI官方API访问网址,可快速实现API本地调用。具体操作步骤如下:
一、准备工作
- 一台国外服务器,安装宝塔面板;
- 一个域名;
二、具体操作
1. 将域名解析到服务器
新建一条记录,这里我使用的是api.lingotek.top
2. 打开宝塔面板,新建一个网站,访问之前新建的域名,确保可以成功访问
3. 打开网站设置,配置SSL证书
4. 添加反向代理
5.在反向代理->配置文件中添加下面两行代码
proxy_ssl_server_name on;
proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
6. 访问自己解析的域名
我的是https://api.lingotek.top。结果如下图所示,则说明反代配置成功。
接下来,我们就可以将官方提供的API调用代码中的https://api.openai.com替换为我们自己反代的IP,这样就能够成功实现在本地调用API。
三、原理分享
由于国内屏蔽了对api.openai.com的访问,OpenAI也禁止国内用户访问,双重限制使得我们无法在本地成功调用API。因此,要想实现本地调用就需要通过国外服务器进行反向代理。
什么是所谓的代理呢?我们要访问OpenAI官方API,我们就是服务需求方(Client),OpenAI就服务提供方(Server)。
但是由于种种原因,我们无法直接访问到OpenAI,而通过代理就搭建了一个桥梁,让本来无法直接访问到OpenAI的我们,能够获得访问途径。这里所谓的代理(proxy),其实就是位于Client和Server之间的中介。
那么什么是反向代理?有反向代理是不是也有正向代理呢?答案是肯定的。
知乎中这篇文章做了使用了生活中的一些场景做了比较通俗的解释。
什么是正向代理?
正向代理伪造Client的身份。
生活场景一些什么情况需要伪造client身份呢:
比如,想买烟的未成年和不准卖烟给未成年的烟店老板,一个是client,一个是server
这个未成年需要买烟的话,就不能以自己的身份来买,所以他需要叫个代跑腿的成年小哥,
这个时候这个跑腿小哥就是未成年小伙伪造的"client",属于正向代理
互联网场景
某用户小A,不想要某网站发现他的ip登录过,使用代理ip以后,他在互联网中的所作所为,就好像都是那个代理IP在做的,
代理ip代替着小A,互联网中的各个server们只知道代理ip来过,不知道小A来过
什么是反向代理?
正向代理是伪造的client身份,那么反向代理是伪造"server身份"。
生活场景
假如有这么一个生产车间,里面有价格高昂的各种加工设备,这个车间的服务是"拿到用户寄过来的材料,然后对材料进行加工后给客户",为了保证安全,车间安排在一个无人知晓的地下密室中,然后在人人能看到的地方建了一个"招待厅",再接受客户的材料时,需要先在招待厅验货,然后由招待厅秘密运输给地下密室车间去处理和加工,加工完以后通过一次招待厅把加工好的东西返给客户
这样的好处是:招待厅的搭建比车间肯定要简单,车间有各种机器,招待厅只要放几把"椅子",如果有一个招待厅被导弹炸了,车间还在,只需要再建一个招待厅,就可以继续工作。
互联网场景
就拿上面的生活场景对比,很多互联网公司的网站,都是做了类似的处理的,用户在网站上的操作和数据,需要在某个重点服务器上进行计算和处理,这个重要的服务器就等同于"真正的生产车间",所以就需要一个招待厅,一般的互联网公司都是用的Nginx服务器。
用户感觉自己的请求都是这个"招待厅-nginx服务器"处理的,但其实真正的server被隐藏起来了,如果有人炸掉了招待厅———"DDos"攻击导致服务器崩溃,主要生成环境没被破坏,可以快速搭建一个新的nginx服务器,nginx服务器搭建肯定比系统主环境服务器简单。
四、主要参考文献
- 宝塔快速反代openai官方的API接口,实现国内直接使用ChatGPT,https://juejin.cn/post/7215020908238749755
- 解决反代ChatGPT API接口后502 Bad Gateway问题,https://juejin.cn/post/7217648572535275578
- 正向代理和反向代理详解,https://zhuanlan.zhihu.com/p/589329583
[...]本文将介绍如何利用开源的 CMS WordPress 和 TMS MateCAT 搭建一个简易的翻译实践管理平台,实现以下功能:定时自动采集网站文章;文章同步到 MateCAT 平台供翻译团队进行翻译生产,完成后同步回采集网站;采集网站发布文章后自动同步到另外一个 WordPress 资讯网站;Note:本文运行采集网站运行的服务器配置如下操作系统:CentOS 7.6 64bit服务器地域:硅谷[...]