Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

crypto888666/chatgptProxyAPI

Repository files navigation

新项目 基于OpenAI的微信机器人

Demo

https://chatai.451024.xyz

api

https://openai.451024.xyz

(削除) https://openai.1rmb.tk (削除ここまで)

https://openai-proxy-api.pages.dev/api

演示站为公共服务,如有大规模使用需求请自行部署,演示站有点不堪重负

worker

1、利用Cloudflare Worker中转api.openai.com

  1. 新建一个 Cloudflare Worker
  2. 复制 cf_worker.js 里的代码粘贴到 Worker 中并部署
  3. 给 Worker 绑定一个没有被墙的域名
  4. 使用自己的域名代替 api.openai.com

详细教程

2、使用CloudFlare Pages进行中转

详细教程

3、利用nextjs edge中转api.openai.com

利用Cloudflare pages部署

官方文档

  1. (削除) Fork本项目 (削除ここまで) 点击Use this template按钮创建一个新的代码库。
  2. 登录到Cloudflare控制台.
  3. 在帐户主页中,选择pages> Create a project > Connect to Git
  4. 选择你 Fork 的项目存储库,在Set up builds and deployments部分中,选择Next.js作为您的框架预设。您的选择将提供以下信息。

(削除) 一般默认即可 (削除ここまで)

Configuration option Value
Production branch main
Framework preset next.js
Build command npx @cloudflare/next-on-pages@pre-v1 --experimental-minify
Build directory .vercel/output/static

Environment variables (advanced)添加一个参数

Variable name Value
NODE_VERSION 16
  1. 点击Save and Deploy部署,然后点Continue to project即可看到访问域名

把官方接口的https://api.openai.com替换为https://xxx.pages.dev/api 即可 (https://xxx.pages.dev/api 为你的域名)

注意路径多了一个api

详细教程

docker 部署(要境外vps)

好像不支持sse 所以不建议

e.g.
docker run -itd --name openaiproxy \
 -p 3000:3000 \
 --restart=always \
 gindex/openaiproxy:latest

使用

api : http://vpsip:3000/proxy/v1/chat/completions

curl --location 'http://vpsip:3000/proxy/v1/chat/completions' \
--header 'Authorization: Bearer sk-xxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
 "model": "gpt-3.5-turbo",
 "messages": [{"role": "user", "content": "Hello!"}]
 }'

用法

JavaScript用fetch
const requestOptions = {
 method: 'POST',
 headers: {
 "Authorization": "Bearer sk-xxxxxxxxxxxx",
 "Content-Type": "application/json"
 },
 body: JSON.stringify({
 "model": "gpt-3.5-turbo",
 "messages": [
 {
 "role": "user",
 "content": "hello word"
 }
 ]
 })
};
fetch("https://openai.1rmb.tk/v1/chat/completions", requestOptions)
 .then(response => response.text())
 .then(result => console.log(result))
 .catch(error => console.log('error', error));
 
用python
import requests
url = "https://openai.1rmb.tk/v1/chat/completions"
api_key = 'sk-xxxxxxxxxxxxxxxxxxxx'
headers = {
 'Authorization': f'Bearer {api_key}',
 'Content-Type': 'application/json'
}
payload = {
 "model": "gpt-3.5-turbo",
 "messages": [
 {
 "role": "user",
 "content": "hello word"
 }
 ]
}
try:
 response = requests.post(url, headers=headers, json=payload)
 response.raise_for_status() # 抛出异常,如果响应码不是200
 data = response.json()
 print(data)
except requests.exceptions.RequestException as e:
 print(f"请求错误: {e}")
except json.JSONDecodeError as e:
 print(f"无效的 JSON 响应: {e}")
用nodejs chatgpt库

transitive-bullshit/chatgpt-api

import { ChatGPTAPI } from 'chatgpt'
async function example() {
 const api = new ChatGPTAPI({
 apiKey: "sk-xxxxxxxxxxxxxx",
 // proxy+/v1
 apiBaseUrl:"https://openai.1rmb.tk/v1"
 })
 const res = await api.sendMessage('Hello World!')
 console.log(res.text)
}
example()
查询余额
 const headers = {
 'content-type': 'application/json',
 'Authorization': `Bearer sk-xxxxxxxxxxxxxxxxx`
 }
 // 查是否订阅
 const subscription = await fetch("https://openai.1rmb.tk/v1/dashboard/billing/subscription", {
 method: 'get',
 headers: headers
 })
 if (!subscription.ok) {
 const data = await subscription.json()
 // console.log(data);
 return data
 // throw new Error('API request failed')
 } else {
 const subscriptionData = await subscription.json()
 const endDate = subscriptionData.access_until
 const startDate = new Date(endDate - 90 * 24 * 60 * 60);
 console.log(formatDate(endDate, "YYYY-MM-DD"));
 console.log(formatDate(startDate, "YYYY-MM-DD"));
 const response = await fetch(`https://openai.1rmb.tk/v1/dashboard/billing/usage?start_date=${formatDate(startDate, "YYYY-MM-DD")}&end_date=${formatDate(endDate, "YYYY-MM-DD")}`, {
 method: 'get',
 headers: headers
 })
 
 const usageData = await response.json();
 // 账号类型
 const plan = subscriptionData.plan.id
 console.log(usageData);
 }

Star History

Star History Chart

About

🔥 使用cloudflare 搭建免费的 OpenAI api代理 ,解决网络无法访问问题。支持流式输出

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

  • JavaScript 45.2%
  • HTML 31.1%
  • Shell 10.8%
  • CSS 8.6%
  • Dockerfile 4.3%

AltStyle によって変換されたページ (->オリジナル) /