├── doc
├── 2023-04-11-20-19-54.png
├── 2023-04-11-21-42-30.png
├── 2023-04-11-21-42-47.png
├── 2023-04-11-21-42-57.png
├── 2023-04-11-21-45-47.png
├── 2023-04-11-21-47-17.png
├── 2023-04-11-21-47-57.png
├── 2023-04-11-21-48-21.png
├── 2023-04-11-21-48-38.png
├── 2023-04-11-21-48-51.png
├── 2023-04-11-21-49-12.png
├── 2023-04-11-21-49-26.png
├── 2023-06-10-11-10-29.png
├── 2023-06-10-11-12-09.png
└── 2023-06-10-11-44-29.png
├── src
└── vercel.json
└── README.md
/doc/2023-04-11-20-19-54.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LinLin00000000/vercel-proxy-openai/HEAD/doc/2023-04-11-20-19-54.png
--------------------------------------------------------------------------------
/doc/2023-04-11-21-42-30.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LinLin00000000/vercel-proxy-openai/HEAD/doc/2023-04-11-21-42-30.png
--------------------------------------------------------------------------------
/doc/2023-04-11-21-42-47.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LinLin00000000/vercel-proxy-openai/HEAD/doc/2023-04-11-21-42-47.png
--------------------------------------------------------------------------------
/doc/2023-04-11-21-42-57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LinLin00000000/vercel-proxy-openai/HEAD/doc/2023-04-11-21-42-57.png
--------------------------------------------------------------------------------
/doc/2023-04-11-21-45-47.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LinLin00000000/vercel-proxy-openai/HEAD/doc/2023-04-11-21-45-47.png
--------------------------------------------------------------------------------
/doc/2023-04-11-21-47-17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LinLin00000000/vercel-proxy-openai/HEAD/doc/2023-04-11-21-47-17.png
--------------------------------------------------------------------------------
/doc/2023-04-11-21-47-57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LinLin00000000/vercel-proxy-openai/HEAD/doc/2023-04-11-21-47-57.png
--------------------------------------------------------------------------------
/doc/2023-04-11-21-48-21.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LinLin00000000/vercel-proxy-openai/HEAD/doc/2023-04-11-21-48-21.png
--------------------------------------------------------------------------------
/doc/2023-04-11-21-48-38.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LinLin00000000/vercel-proxy-openai/HEAD/doc/2023-04-11-21-48-38.png
--------------------------------------------------------------------------------
/doc/2023-04-11-21-48-51.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LinLin00000000/vercel-proxy-openai/HEAD/doc/2023-04-11-21-48-51.png
--------------------------------------------------------------------------------
/doc/2023-04-11-21-49-12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LinLin00000000/vercel-proxy-openai/HEAD/doc/2023-04-11-21-49-12.png
--------------------------------------------------------------------------------
/doc/2023-04-11-21-49-26.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LinLin00000000/vercel-proxy-openai/HEAD/doc/2023-04-11-21-49-26.png
--------------------------------------------------------------------------------
/doc/2023-06-10-11-10-29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LinLin00000000/vercel-proxy-openai/HEAD/doc/2023-06-10-11-10-29.png
--------------------------------------------------------------------------------
/doc/2023-06-10-11-12-09.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LinLin00000000/vercel-proxy-openai/HEAD/doc/2023-06-10-11-12-09.png
--------------------------------------------------------------------------------
/doc/2023-06-10-11-44-29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LinLin00000000/vercel-proxy-openai/HEAD/doc/2023-06-10-11-44-29.png
--------------------------------------------------------------------------------
/src/vercel.json:
--------------------------------------------------------------------------------
1 | {
2 | "rewrites": [
3 | { "source": "/", "destination": "https://api.openai.com" },
4 | {
5 | "source": "/:match*",
6 | "destination": "https://api.openai.com/:match*"
7 | }
8 | ],
9 | "github": {
10 | "silent": true
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 使用 Vercel 反代 openai (图文教程)
2 |
3 | - [使用 Vercel 反代 openai (图文教程)](#使用-vercel-反代-openai-图文教程)
4 | - [简介](#简介)
5 | - [使用方法](#使用方法)
6 | - [要求](#要求)
7 | - [示例](#示例)
8 | - [部署](#部署)
9 |
10 | ## 简介
11 |
12 | 国内只是墙了 vercel 本身的域名,但是自定义域名没有墙,因此做了代理并绑定域名之后就可以用自己的域名在国内直连 openai api 了。
13 |
14 | 理论上也可以代理其他被墙的站点。
15 |
16 | ## 使用方法
17 |
18 | - 访问 openai api 时,将 "api.openai.com" 换成你的自定义域名,例如
19 |
20 | ```javascript
21 | const host = 'YOUR DOMAIN'
22 | const url = `https://${host}/v1/chat/completions`
23 | ```
24 |
25 | - 可参考 [OPENAI API 官方文档](https://platform.openai.com/docs/api-reference/chat)
26 |
27 | [官方文档中文翻译](https://linlin00.feishu.cn/docx/Fupxd8fIioGToIxv6Tacz4XbnBf)(部分过时,仅供参考)
28 |
29 | - 在其他 chatgpt 项目中,可以将变量 "OPENAI_API_BASE_URL" 设置为你的域名
30 |
31 | ## 要求
32 |
33 | - Openai API KEY, 形如 "sk-xxxxxxxx" 的字符串
34 |
35 | - 一个域名(无需备案),没有的话可以在阿里云上买一个几块钱一年的
36 | 
37 |
38 | ## 示例
39 |
40 | Postman
41 |
42 |
43 | 
44 | 
45 |
46 |
47 |
48 |
49 | 以下代码均由 Postman 生成
50 |
51 | cURL
52 |
53 |
54 | ```bash
55 | curl --location 'https://YOUR DOMAIN(改成你的域名)/v1/chat/completions' \
56 |
57 | --header 'Authorization: Bearer sk-xxxxxxxxxxxxx(改成你的APIKEY)' \
58 | --header 'Content-Type: application/json' \
59 | --data '{
60 | "model": "gpt-3.5-turbo",
61 | "messages": [
62 | {
63 | "role": "user",
64 | "content": "你好"
65 | }
66 | ]
67 | }
68 | '
69 |
70 | ```
71 |
72 |
73 |
74 |
75 | Python - Requests
76 |
77 |
78 | ```python
79 | import requests
80 | import json
81 |
82 | url = "https://YOUR DOMAIN(改成你的域名)/v1/chat/completions"
83 |
84 | payload = json.dumps({
85 | "model": "gpt-3.5-turbo",
86 | "messages": [
87 | {
88 | "role": "user",
89 | "content": "你好"
90 | }
91 | ]
92 | })
93 | headers = {
94 | 'Authorization': 'Bearer sk-xxxxxxxxxxxxx(改成你的APIKEY)',
95 | 'Content-Type': 'application/json'
96 | }
97 |
98 | response = requests.request("POST", url, headers=headers, data=payload)
99 |
100 | print(response.text)
101 | ```
102 |
103 |
104 |
105 |
106 | NodeJs - Axios
107 |
108 |
109 | ```javascript
110 | const axios = require('axios');
111 | let data = JSON.stringify({
112 | "model": "gpt-3.5-turbo",
113 | "messages": [
114 | {
115 | "role": "user",
116 | "content": "你好"
117 | }
118 | ]
119 | });
120 |
121 | let config = {
122 | method: 'post',
123 | maxBodyLength: Infinity,
124 | url: 'https://YOUR DOMAIN(改成你的域名)/v1/chat/completions',
125 | headers: {
126 | 'Authorization': 'Bearer sk-xxxxxxxxxxxxx(改成你的APIKEY)',
127 | 'Content-Type': 'application/json'
128 | },
129 | data : data
130 | };
131 |
132 | axios.request(config)
133 | .then((response) => {
134 | console.log(JSON.stringify(response.data));
135 | })
136 | .catch((error) => {
137 | console.log(error);
138 | });
139 | ```
140 |
141 |
142 |
143 |
144 | JavaScript - Fetch
145 |
146 |
147 | ```javascript
148 | var myHeaders = new Headers();
149 | myHeaders.append("Authorization", "Bearer sk-xxxxxxxxxxxxx(改成你的APIKEY)");
150 | myHeaders.append("Content-Type", "application/json");
151 |
152 | var raw = JSON.stringify({
153 | "model": "gpt-3.5-turbo",
154 | "messages": [
155 | {
156 | "role": "user",
157 | "content": "你好"
158 | }
159 | ]
160 | });
161 |
162 | var requestOptions = {
163 | method: 'POST',
164 | headers: myHeaders,
165 | body: raw,
166 | redirect: 'follow'
167 | };
168 |
169 | fetch("https://YOUR DOMAIN(改成你的域名)/v1/chat/completions", requestOptions)
170 | .then(response => response.text())
171 | .then(result => console.log(result))
172 | .catch(error => console.log('error', error));
173 | ```
174 |
175 |
176 |
177 |
178 | 飞书机器人
179 |
180 |
181 | 
182 |
183 |
184 |
185 |
186 | ## 部署
187 |
188 | 1. 点击一键部署按钮
189 |
190 | [](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FLinLin00000000%2Fvercel-proxy-openai&project-name=vercel-proxy-openai&repository-name=vercel-proxy-openai&root-directory=src)
191 |
192 | 2. 用 Github 登录 Vercel,没有 Github 账户的去注册一个,网上很多教程就不展开了
193 | 
194 | 3. 登录之后点击 Create 按钮
195 | 
196 | 4. 接着等十几秒钟就创建好项目了,接下来进入仪表盘
197 | 
198 | 5. 进入到项目里之后,依次点击 Settings -> Domains,然后添加你的域名。添加的域名类型有两种,一种是一级域名(xxxx.com)和二级域名(openai.xxxx.com),我个人推荐使用二级域名,因为一级域名一般用来做网站展示用,只能有一个,而二级域名可以有无限个(只要你有一个域名就可以自己创建无限个二级域名)
199 | 
200 | 6. 添加域名有三种方式,这里我们选第三种,因为简单
201 | 
202 | 7. 接下来会分两种情况,分为一级域名和二级域名,都有教程,以阿里云为例(其他厂商也是差不多的配置,很简单的)
203 |
204 | 1. 一级域名
205 |
206 | 添加一级域名后 Vercel 会提示让你添加 DNS 解析记录
207 | 
208 | 在阿里云域名解析的解析设置里点击 添加记录,按照 Vercel 的提示配置好图中三个选项,点击确认
209 | 
210 | 回 Vercel 点击 Refresh 按钮,出现下图所示的情况就表明配置完成了
211 | 
212 | 2. 二级域名(以 openai 主机记录为例,可以改成自己喜欢的)
213 |
214 | 添加二级域名后 Vercel 会提示让你添加 DNS 解析记录
215 | 
216 | 在阿里云域名解析的解析设置里点击 添加记录,按照 Vercel 的提示配置好图中三个选项,点击确认
217 | 
218 | 回 Vercel 点击 Refresh 按钮,出现下图所示的情况就表明配置完成了
219 | 
220 |
221 | 🎉接下来就可以愉快地使用 openai api 啦~
222 |
223 | 有问题可以 [在此](https://github.com/LinLin00000000/vercel-proxy-openai/issues) 留言
224 |
--------------------------------------------------------------------------------