/openai-proxy

openai-proxy is a solution provided for Chinese users to address the issue of being unable to make requests to the OpenAI API.

Primary LanguageTypeScriptMIT LicenseMIT

Hi, there 👋

API 文档请查看 👉 https://openai-proxy.apifox.cn

openai-proxy 是为**用户提供的一个方案,目前可以帮你解决的问题有:

  • ✅ OpenAI API 请求超时
  • ✅ OpenAI API 不支持查询费用消耗量
  • ✅ Claude API 还在等待列表中
  • ✅ Google Bard 没有提供 API
  • 。。。

OpenAI API 请求超时

现在您只需要将 https://api.openai.com 替换成 https://openai.aihey.cc/openai 即可食用

# openai api
curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-3.5-turbo",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

# 替换后
curl https://openai.aihey.cc/openai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-3.5-turbo",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

OpenAI API 不支持查询费用消耗量

自从 2023 年 04 月份开始,https://api.openai.com/dashboard/billing/credit_grants 只能通过网页登录生成的 session id 来请求,而 key (sk-*****) 的方式将无效。不过您可以通过下述两个方式来请求

方式 1:使用 openai-proxy

缺点:

  • 可能和网页端显示的数据存在差异(这个不知道为啥,有了解的小伙伴欢迎在 ISSUES 指出)
# 指定统计开始日期和结束日期
curl https://openai.aihey.cc/openai/billing/credit_grants?start_date=2022-05-10&end_date=2023-05-10 \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-***********"

# 不指定参数,默认统计最近 90 天的数据
curl https://openai.aihey.cc/openai/billing/credit_grants \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-**********"

方式 2:使用网页端生成的 sensitive_id

缺点:

  • 首次需要去网页端获取(按 F12 后刷新网页)
  • 可能随时会失效(但目前来看只要网页端不退出登录,sensitive_id 时效都比较长)

curl https://openai.aihey.cc/openai/billing/credit_grants\
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sess-*****"

Claude web API 支持

开始之前

  • 访问 claude.ai 创建账号(暂时只有美国和英国 IP 可访问)
  • 从网页端拿到 orgId
  • 从网页端拿到 sessionKey

>

获取全部会话

curl -X GET 'https://openai.aihey.cc/claude/organizations/dca2a902-a463-41f0-88cb-b047deb40178/chat_conversations' \
--header 'Accept: */*' \
--header 'Content-Type: application/json' \
--header 'Cookie: sessionKey=sk-***********'

生成 AI 回复

curl -X POST 'https://openai.aihey.cc/claude/append_message' \
--header 'Accept: text/event-stream' \
--header 'Cookie: sessionKey=sk-***********' \
--header 'Content-Type: application/json' \
--data-raw '{
  "completion": {
    "prompt": "hello",
    "timezone": "Asia/Shanghai",
    "model": "claude-2"
  },
  "organization_uuid": "dca2a902-a463-41f0-88cb-b047deb40178",
  "conversation_uuid": "5446798e-0e11-4e8f-994c-3d8386f01bd6",
  "text": "hello",
  "attachments": []
}'

生成 AI 回复(类 OpenAI)

已经支持类似 gpt 的请求格式,如果你使用的第三方插件支持自定义 OpenAI 地址,现在可以直接将 https://api.openai.com 替换成 http://openai.aihey.cc/claude/{organization_uuid}

curl -X POST 'https://openai.aihey.cc/claude/dca2a902-a463-41f0-88cb-b047deb40178/v1/chat/completions' \
--header 'Accept: */*' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer your-sessionKey' \
--data-raw '{
    "model":"gpt-3.5-turbo",
    "messages": [
        {"role": "user", "content":"hello"}
    ],
    "stream": false
}'

更多接口请参考 https://openai-proxy.apifox.cn/doc-2721086

支持 Google Bard API(非官方)

承诺:当 Google Bard 官方开放 API 时,将替换为官方 API 请求

官方 API 申请:https://www.googlecloudcommunity.com/gc/AI-ML/Google-Bard-API/m-p/538517

借助 PawanOsman/GoogleBard 现成的封装,现支持通过 api 请求 Google Bard

curl -X POST https://openai.aihey.cc/google/bard \
  -H "Content-Type: application/json" \
  -H "Cookie: __Secure-1PSID=*****;__Secure-1PSIDTS=*******" \
  -d '{
    "prompt": "hello"
  }'

__Secure-1PSID 获取方式如下图,网页端打开 Google Bard 后,F12 查看 Cookies。 __Secure-1PSIDTS 获取方式同理 googlebard.png

🎉 自行部署

你可以使用以下任一方式进行部署,之后只需将前文中的 https://openai.aihey.cc 替换成你自己的即可

方式 1:使用 vercel 部署

注意:vercel 免费版本对函数执行时间存在限制,具体可参考 UNICKCHENG#10

Deploy with Vercel

如果你希望也能在国内正常访问,可以试试域名解析的方案

  1. 首先请准备一个域名

  2. 去域名服务商添加 CNAME

cname-china.vercel-dns.com
  1. 自定义域名,注意请将 openai.aihey.cc 替换成你自己的域名

方式 2:使用 Sealos 部署

可参考: https://mp.weixin.qq.com/s/qbyKE_Uf_3xbWWqFKidreA

方式 3:使用 Docker

docker run -itd --name openai-proxy -p 13000:3000  unickcheng/openai-proxy

# 查看服务
docker ps -a

如果你熟悉 docker compose,可参考 docker-compose.yml 文件,使用 docker compose up -d 命令来启动服务

👉 一些疑问

openai api key 会不会被盗用(重点)

不会,但也不要放下警惕。市面上也有很多同类开源的优秀产品,都不会恶意地盗用使用者的 key,遗憾的是,这并不代表全部。因此,在使用第三方平台的产品,尽量使用一个定期更新的 key

如果有条件的话,建议参考前面内容自行部署,如果遇到问题,可在 Issues 中提问。

为什么创建这个项目

因为想入门 Next.js,所以就有了这个项目。

另外,这里只是提供一个方案,对于 API 请求速度并没得到多少提升,自行部署还需要额外提供域名,似乎听着就嫌麻烦。

  • 如果你是名爱折腾的开发者,或许也可以尝试 Nginx、Cloudflare 等方案
  • 如果你希望有个直接拿来用的方案,那么请放心大胆地白嫖
打赏作者

💖 感谢

Star History Chart