用 Cloudflare Workers 打造 1min.ai API Relay
1min.ai 是一個 AI 聚合平台,一個訂閱就能用 GPT、Claude、Mistral 等多家模型。可惜它的 API 格式跟 OpenAI 不完全相容,所以現成的工具和 SDK 多半沒辦法直接串。
1min-relay-worker 就是針對這件事的 workaround:跑在 Cloudflare Workers 上的中繼服務,把 1min.ai 的 API 包成 OpenAI API 格式。
為什麼需要 Relay
直接用 1min.ai 的原生 API 幾個痛點:
- API 格式跟 OpenAI SDK 不相容,沒辦法直接用
openai套件串 - 沒有內建的 Rate Limiting
- Token 用量算不準
過 Relay 之後,把 base_url 指到自己的 Worker,原本熟的 OpenAI SDK 就可以直接打 1min.ai 的所有模型。
支援的功能
- Chat Completions(Streaming、Vision)
- Responses API(Structured Outputs,JSON Object / JSON Schema)
- Image Generation(DALL-E 等)
- Audio Transcription / Translation(Whisper)
- 動態模型列表:不用手動維護清單,Worker 會自己打 1min.ai API 拉最新可用的模型。兩層快取(記憶體 5 分鐘 + KV 1 小時),1min.ai 那邊上下架什麼,Relay 會自己跟上。
部署
前置需求
- Node.js 18+
- Wrangler CLI
- Cloudflare 帳號(需啟用 Workers 和 KV)
快速開始
git clone https://github.com/7a6163/1min-relay-worker.git
cd 1min-relay-worker
npm install
建立 KV namespace:
wrangler kv:namespace create "RATE_LIMIT_STORE"
wrangler kv:namespace create "MODEL_CACHE"
把回傳的 namespace ID 填入 wrangler.jsonc,然後部署:
npm run deploy使用方式
部署完成後,把 base_url 指向你的 Worker 即可:
from openai import OpenAI
client = OpenAI(
base_url="https://your-worker.workers.dev/v1",
api_key="YOUR_1MIN_API_KEY",
)
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello!"}],
)
Streaming 也完全支援:
curl -X POST https://your-worker.workers.dev/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "gpt-4o",
"messages": [{"role": "user", "content": "Tell me a story"}],
"stream": true
}'Rate Limiting
內建分散式限流,靠 Cloudflare KV 在所有 Worker 實例之間同步:
- 每 IP 每分鐘 60 次請求
- 每 IP 每分鐘 10,000 tokens
超過會回 HTTP 429,附上 Rate Limit headers。
技術細節
整個服務 TypeScript 寫的,跑在 Cloudflare Workers 上,限流和模型快取放 KV,token 計算用 gpt-tokenizer。Cloudflare 免費方案就夠用,延遲低,也不用自己顧伺服器。
專案原始碼:GitHub