利用一个代理层,使用Flask,记录每个openai-apikey的用量,对Request和Response做转发
python main.py
此服务基于Google Cloud Functions
或AWS Lambda
构建。您可以将其部署到您自己的云提供商。以下是针对Google Cloud Functions
的说明。
- 如果您还没有,请设置一个Google Cloud项目:https://console.cloud.google.com/
- 为您的项目启用Cloud Functions API:https://console.cloud.google.com/apis/library/cloudfunctions.googleapis.com
- 在本地计算机上安装Google Cloud SDK:https://cloud.google.com/sdk/docs/install
- 通过在终端运行
gcloud auth login
来验证您的帐户。
-
克隆此代码库。
git clone https://github.com/hiyoungshen/openai-proxy.git cd openai-proxy
-
将服务部署到Google Cloud Functions。请先编辑./deploy.sh并修改USER_ID为自定义,例如
shy
,然后bash ./deploy.sh
-
终端中的输出类似于这样:
url: https://ip-address-of-service.cloudfunctions.net/${USER_ID}
请复制粘贴此url以供后续使用:
bash export PROXY_URL="the_url_in_output" # 粘贴你获得的 url 在这里
就像通常调用 OpenAI API 一样,但您需要将 API 地址更改为代理地址,并更改Authorization: UserName
字段。
我在request.sh
中给出了一个示例。像这样:
# 请注意 ${PROXY_URL} 为上一步获取的 url
curl ${PROXY_URL}/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: sk-xxx" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hello world!"}]
}'
curl ${PROXY_URL}/singleuseage -H "Authorization: Bearer sk-xxx"
curl ${PROXY_URL}/alluseage -H "Authorization: Bearer sk-xxx"
警告!!! 尽管在OpenAI使用条款中没有明确提到,但使用此代理将您剩余的配额分享/分发给公众可能被认为是违反 OpenAI 规则的行为,将导致帐户受限/禁止。请不要尝试这样做!!请仅在您的团队内使用此系统来控制 API 访问。
代码修改自[openai-proxy](git clone https://github.com/doem97/openai-proxy.git)