-
Fork本项目 x-dr/chatgptProxyAPI点击Use this template按钮创建一个新的代码库。 -
登录到Cloudflare控制台.
-
选择你 Fork 的项目存储库,在
Set up builds and deployments
部分中,全部默认即可。
- 点击
Save and Deploy
部署
然后点
Continue to project
即可看到访问域名
至此便大功告成。等待片刻,应该就可以通过你自己的域名来代替 OpenAI 的 API 地址了,比如在本文搭建的api:https://openapi-dev.pages.dev
为例子,想要请求 ChatGPT 的 API ,即是把官方 API 地址 https://api.openai.com/v1/chat/completions 换为我自己的域名 https://openapi-dev.pages.dev/v1/chat/completions ,其他参数均参照官方示例即可。由于 Cloudflare 有每天免费 10 万次的请求额度,所以轻度使用基本是零成本的。
以我的搭建的服务
https://openapi-dev.pages.dev/
为例
- 对话
curl --location 'https://openapi-dev.pages.dev/v1/chat/completions' \
--header 'Authorization: Bearer sk-xxxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hello!"}]
}'
响应
{
"id": "chatcmpl-6rMlZybwjMQIhFAEaiCmWvMP1BXld",
"object": "chat.completion",
"created": 1678176917,
"model": "gpt-3.5-turbo-0301",
"usage": {
"prompt_tokens": 9,
"completion_tokens": 11,
"total_tokens": 20
},
"choices": [
{
"message": {
"role": "assistant",
"content": "\n\nHello! How can I assist you today?"
},
"finish_reason": "stop",
"index": 0
}
]
}
- 查询key余额
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();
console.log(usageData);
}