国内如何访问 OpenAI 的 api

这个问题甚至我的一些大厂的朋友也不太清楚,所以我觉得有必备写一篇文章来简单盘盘它,希望能帮助到有需要的人

众所周知,由于大陆与 OpenAI 双方互相封锁,大陆是无法直接访问 OpenAI api 的

不过由于 GPT 4 的统治地位,国内很 AI 应用都首选 OpenAI,那么问题来了,这些应用该怎么访问 OpenAI 的 api 呢

其实主要有两种方式

1. 通过代理

大陆无法直接访问 OpenAI,那我能不能通过一种间接的方式来访问 OpenAI 呢

学习 HTTP 时我们都学过代理的概念,我们可以先把请求打到这个代理上,再由这个代理把请求转发到 OpenAI,这样就可以访问 OpenAI 了

ba29341209b50fb11c3125ab5a333c37.png

代理只是起到了一个转发流量的作用,所以除了 host 外,其他像 query,body 等与直接访问 OpenAI api 无异,这样使用者只需要把 host 替换一下(比如把 api.openai.com 换成 api.openai-proxy.com),其他请求格式不变,就可访问 OpenAI 的 api 了,很方便

当然了这个代理国内必须可以访问,比如 Cloudflare,DigitalOcean 等平台上的 server 都可以充当代理

那有人可能会问了,为了访问 OpenAI,我得额外花钱搭一个这样的代理,好像也有点不划算呢

你想到的别人也考虑好啦,目前市面上已经有一些搭建好的代理了,如 api.openai-proxy.com,你在使用的时候把 host 替换成这个,其他不变就可正常使用啦

当然了,第三方代理存在一定的安全隐患,比如虽然第三方代理号称只是转发,不保留数据,但谁知道呢,如果你的业务对安全性要求很高,估计自建代理才是最佳选择

2. 通过 vercel 等云服务平台

vercel 是全球非常知名的一个免费网站托管平台,无论是动态(如 api 服务)还是静态网站都可免费部署,而且部署非常方便,是很多开发者的首选

我们可以先把访问 OpenAI api 的服务部署在 vercel 上,但是问题来了,部署在 vercel 上的应用(通常是 xxx.vercel.app)国内也是没法访问的,那该怎么办?

这里就需要简单了解一下 HTTP 和 DNS 的原理了

假设我有一个域名叫 api.example.com,这个域名在国内是可以访问的,我想在访问这个域名时,最终经过 DNS 解析后打到的是我部署在 vercel 上的 访问 OpenAI 的 api 应用,该怎么办

实际上只要在访问 api.example.com 时解析出 vercel 平台上的 IP ,然后再通过 IP 来访问部署在 vercel 平台上的应用即可

那怎样才能在访问 api.example.com 时解析出 vercel 平台上的 IP 呢,答案是 CNAME(以下的记录值 cname.vercel-dns.net. 是我随便写的,实际上 vercel 提供了另一个正确的可被国内 DNS 解析的域名,比较敏感,不方便放,网上可找到哦)

07c49f620a8adbaaa5694d74fc49aa09.png

通过以上的记录值就可最终解析出 vercel 平台上的 IP,假设为 76.86.22.62(能解析出 IP 的原因在于 cname.vercel-dns.net. 可正常被解析,现在你知道为啥我要放这样一个随便写的值了吧,有风险)

注意这只是 vercel 平台的对外 IP,光凭 IP 是无法确定要打到哪个应用的,IP+Host 才可以哦

a14749e484ccd362443b32283406c5a0.png

所以我们要在 vercel 上的应用设置中先配置一下域名

1bab498c952c51b1bf08ae5a57b4be31.png

这样请求的时候有了 IP,有了 host:api.example.com,通过 api.example.com 访问的流量就可以转发到正确的应用上来啦

4a5d1ccc39cda707a27901e18b295289.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/9776.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++|二叉搜索树

一、二叉搜索树的概念 二叉搜索树又称为二叉排序树,它或者是一颗空树,或者是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根结…

Obsidian 下载安装和运行

1 官网页面 2 Github 页面 3 选择合适的版本,下载后运行。 附录: 官网: https://obsidian.md/ Github 地址: https://github.com/obsidianmd/obsidian-releases/releases 参考: Markdown 官方教程 https://markdow…

2024 年 数维杯(B题)大学生数学建模挑战赛 | 生物质和煤共热解 | 数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2022年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。 CS团队倾注了大量时间和心血,深入挖掘解决方案。通…

什么是FMEA的分析范围?——FMEA软件

免费试用FMEA软件-免费版-SunFMEA FMEA的分析范围广泛而深入,涵盖了产品设计、制造过程、供应链管理以及使用和维修等多个方面。 产品设计是FMEA分析的重要一环。在设计阶段,FMEA能够帮助工程师识别潜在的设计缺陷,并预测这些缺陷可能对产品…

【系统架构师】-案例篇(七)信息安全

某软件公司拟开发一套信息安全支撑平台,为客户的局域网业务环境提供信息安全保护。该支撑平台的主要需求如下: 1.为局域网业务环境提供用户身份鉴别与资源访问授权功能; 2.为局域网环境中交换的网络数据提供加密保护; 3.为服务…

综述列表(~2024.05.10)

(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 每周末更新,完整版进群获取。 Q 群在群文件,VX 群每周末更新。

多线程-写入读取文件,使用同步逻辑

在一个进程中&#xff0c;创建一个子线程。 主线程负责:向文件中写入数据 子线程负责:从文件中读取数据 要求使用线程的同步逻辑&#xff0c;保证一定在主线程向文件中写入数据成功之后&#xff0c;子线程才开始运行&#xff0c;去读取文件中的数据 #include <stdio.h> …

Linux0.11中MINIX 文件系统

阅读linux 的源码的时候对minix 文件系统有很多的疑惑&#xff0c;根据自己的认识将这些做一个总结。 MINIX 文件系统由六个部分组成&#xff0c;分别是引导块&#xff0c;超级块&#xff0c;i结点位图&#xff0c;逻辑块位图&#xff0c;i结点&#xff0c;数据块。 引导块&am…

部署xwiki服务需要配置 hibernate.cfg.xml如何配置?

1. 定位 hibernate.cfg.xml 文件 首先&#xff0c;确保您可以在 Tomcat 的 XWiki 部署目录中找到 hibernate.cfg.xml 文件&#xff1a; cd /opt/tomcat/latest/webapps/xwiki/WEB-INF ls -l hibernate.cfg.xml如果文件存在&#xff0c;您可以继续编辑它。如果不存在&#xff…

使用GitLab自带的CI/CD功能在远程服务器部署项目(三)

前置内容&#xff1a; 通过Docker Compose部署GitLab和GitLab Runner&#xff08;一&#xff09; 使用GitLab自带的CI/CD功能在本地部署项目&#xff08;二&#xff09; 目录 一、在GitLab服务器上生成私钥与公钥 二、将公钥拷贝到应用服务器上 三、将私钥给到Docker Exec…

深入解析Java中Set接口

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

数据驱动实战二

目标 掌握数据驱动的开发流程掌握如何读取JSON数据文件巩固PO模式 1. 案例 对TPshop网站的登录模块进行单元测试 1.1 实现步骤 编写测试用例采用PO模式的分层思想对页面进行封装编写测试脚本定义数据文件&#xff0c;实现参数化 1.2 用例设计 1.3 数据文件 {"login…

设置LCD为第二终端

我一直使用xshell端&#xff0c;开发板通过串口和 xshell进行通信。 调试好LCD 驱动之后&#xff0c;可以设置 LCD 作为终端&#xff0c;也就是开发板使用自己的显示 设备作为自己的终端&#xff0c;然后接上键盘就可以直接在开发板上敲命令了&#xff0c;将 LCD 设置为终端控制…

Linux(利用gdb进行调试)

gdb: gdb是GNU debugger的缩写&#xff0c;是编程调试工具。 gdb功能 1.启动程序&#xff0c;可以按照用户自定义的要求随心所欲的运行程序。 2.让被调试的程序在用户所指定的调试的断点处停住 (断点可以是条件表达式)。 3.当程序停住时&#xff0c;可以检查此时程序中所发…

基于torch_dispatch机制生成Megatron-DeepSpeed调用关系图

基于torch_dispatch机制生成Megatron-DeepSpeed调用关系图 一.局部效果图二.运行训练过程,拦截算子,生成调用关系信息三.可视化,生成SVG图像 想知道Megatron-DeepSpeed训练过程中各模块之间的调用关系。torch_dispatch机制可以拦截算子,inspect又能获取到调用栈(文件,类名,函数…

笔记本电脑怎么查看硬盘型号?无需额外软件,五招让你轻松掌握

随着科技的进步&#xff0c;笔记本电脑已经成为我们日常生活和工作中不可或缺的工具。而在选购或维护笔记本电脑时&#xff0c;了解硬盘的型号和性能是至关重要的。本文以windows10系统为例&#xff0c;将向您介绍几招&#xff0c;帮助您轻松掌握查看笔记本电脑硬盘型号的方法。…

适合年轻人的恋爱交友脱单软件有哪些?中国十大社交软件排行榜分享

交友始祖&#xff1a;Tinder 一直很受欢迎&#xff0c;可以向上扫给 super like (每日有一次免费机会)。如果双方互相 like&#xff0c;代表配对成功&#xff0c;就可以开始聊天。另外&#xff0c;每日有 10 个 top picks 供选择&#xff0c;你可以免费选一位 主力编外&#xf…

Java医院绩效考核系统源码maven+Visual Studio Code一体化人力资源saas平台系统源码

Java医院绩效考核系统源码mavenVisual Studio Code一体化人力资源saas平台系统源码 医院绩效解决方案包括医院绩效管理&#xff08;BSC&#xff09;、综合奖金核算&#xff08;RBRVS&#xff09;&#xff0c;涵盖从绩效方案的咨询与定制、数据采集、绩效考核及反馈、绩效奖金核…

67万英语单词学习词典ACCESS\EXCEL数据库

这似乎是最多记录的英语单词学习词典&#xff0c;包含复数、过去分词等形式的单词。是一个针对想考级的人员辅助背单词学英语必备的数据&#xff0c;具体请自行查阅以下的相关截图。 有了数据才能想方设法做好产品&#xff0c;结合权威的记忆理论&#xff0c;充分调动用户的眼…

Cocos creator实现《战机长空》关卡本地存储功能

Cocos creator实现《战机长空》关卡本地存储功能 Cocos creator在开放小游戏过程中&#xff0c;经常会出现设置关卡&#xff0c;这里记录一下关卡数据本地存储功能。 一、关卡设置数据 假如我们有关卡数据如下&#xff0c; let settings [ { level: 1, // 第1关 score: 0,…