Skip to content
This repository has been archived by the owner on Sep 14, 2024. It is now read-only.

LinLin00000000/vercel-proxy-openai

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 

Repository files navigation

使用 Vercel 反代 openai (图文教程)

简介

国内只是墙了 vercel 本身的域名,但是自定义域名没有墙,因此做了代理并绑定域名之后就可以用自己的域名在国内直连 openai api 了。

理论上也可以代理其他被墙的站点。

使用方法

  • 访问 openai api 时,将 "api.openai.com" 换成你的自定义域名,例如

    const host = 'YOUR DOMAIN'
    const url = `https://${host}/v1/chat/completions`
  • 可参考 OPENAI API 官方文档

    官方文档中文翻译(部分过时,仅供参考)

  • 在其他 chatgpt 项目中,可以将变量 "OPENAI_API_BASE_URL" 设置为你的域名

要求

  • Openai API KEY, 形如 "sk-xxxxxxxx" 的字符串

  • 一个域名(无需备案),没有的话可以在阿里云上买一个几块钱一年的 阿里云域名注册

示例

Postman

Example of Postman, Header Example of Postman, Body

以下代码均由 Postman 生成

cURL

curl --location 'https://YOUR DOMAIN(改成你的域名)/v1/chat/completions' \

--header 'Authorization: Bearer sk-xxxxxxxxxxxxx(改成你的APIKEY)' \
--header 'Content-Type: application/json' \
--data '{
    "model": "gpt-3.5-turbo",
    "messages": [
        {
            "role": "user",
            "content": "你好"
        }
    ]
}
'

Python - Requests

import requests
import json

url = "https://YOUR DOMAIN(改成你的域名)/v1/chat/completions"

payload = json.dumps({
  "model": "gpt-3.5-turbo",
  "messages": [
    {
      "role": "user",
      "content": "你好"
    }
  ]
})
headers = {
  'Authorization': 'Bearer sk-xxxxxxxxxxxxx(改成你的APIKEY)',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

NodeJs - Axios

const axios = require('axios');
let data = JSON.stringify({
  "model": "gpt-3.5-turbo",
  "messages": [
    {
      "role": "user",
      "content": "你好"
    }
  ]
});

let config = {
  method: 'post',
  maxBodyLength: Infinity,
  url: 'https://YOUR DOMAIN(改成你的域名)/v1/chat/completions',
  headers: { 
    'Authorization': 'Bearer sk-xxxxxxxxxxxxx(改成你的APIKEY)', 
    'Content-Type': 'application/json'
  },
  data : data
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});

JavaScript - Fetch

var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer sk-xxxxxxxxxxxxx(改成你的APIKEY)");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
  "model": "gpt-3.5-turbo",
  "messages": [
    {
      "role": "user",
      "content": "你好"
    }
  ]
});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https://YOUR DOMAIN(改成你的域名)/v1/chat/completions", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

飞书机器人

Example of Feishu robot

部署

  1. 点击一键部署按钮

    Deploy with Vercel

  2. 用 Github 登录 Vercel,没有 Github 账户的去注册一个,网上很多教程就不展开了 Vercel login

  3. 登录之后点击 Create 按钮 Vercel create

  4. 接着等十几秒钟就创建好项目了,接下来进入仪表盘 Vercel dashboard

  5. 进入到项目里之后,依次点击 Settings -> Domains,然后添加你的域名。添加的域名类型有两种,一种是一级域名(xxxx.com)和二级域名(openai.xxxx.com),我个人推荐使用二级域名,因为一级域名一般用来做网站展示用,只能有一个,而二级域名可以有无限个(只要你有一个域名就可以自己创建无限个二级域名) Vercel domains

  6. 添加域名有三种方式,这里我们选第三种,因为简单 Add Domain

  7. 接下来会分两种情况,分为一级域名和二级域名,都有教程,以阿里云为例(其他厂商也是差不多的配置,很简单的)

    1. 一级域名

      添加一级域名后 Vercel 会提示让你添加 DNS 解析记录 DNS Config 在阿里云域名解析的解析设置里点击 添加记录,按照 Vercel 的提示配置好图中三个选项,点击确认 DNS Set 回 Vercel 点击 Refresh 按钮,出现下图所示的情况就表明配置完成了 Complete

    2. 二级域名(以 openai 主机记录为例,可以改成自己喜欢的)

      添加二级域名后 Vercel 会提示让你添加 DNS 解析记录 DNS Config 在阿里云域名解析的解析设置里点击 添加记录,按照 Vercel 的提示配置好图中三个选项,点击确认 DNS Set 回 Vercel 点击 Refresh 按钮,出现下图所示的情况就表明配置完成了 Complete

🎉接下来就可以愉快地使用 openai api 啦~

有问题可以 在此 留言

About

使用 Vercel 代理 openai

Resources

Stars

Watchers

Forks