云渡中转站

一个密钥,
同时接入 OpenAI 与 Claude

部署在 Cloudflare Pages 上的中转站。内置完整注册登录、邮箱验证、 自动换号与自动重试,一个账号池里混放 OpenAI 密钥与 Claude 密钥, 客户端用哪种协议都能直接调用。

OpenAI 标准协议 Anthropic 协议 Claude Code 可用 自动换号 自动重试 流式输出

核心能力

不是一个简单的反向代理,而是一套带账号池调度与协议转换的完整网关。

🔁

自动换号

账号池按「并发最低 + 最久未用」轮转。某个号被限流或鉴权失效时自动切到下一个,请求对客户端完全无感。

♻️

自动重试

遇到 429 / 401 / 5xx / 超时自动重试。遵循 Retry-After,并对故障账号做指数退避熔断,避免雪崩。

🔀

双协议互转

Claude Code 用 Anthropic 协议请求,账号池里放的是 OpenAI 密钥 —— 请求与流式响应都会被自动转换。

✉️

邮箱验证

注册需邮箱验证码,6 位数字、10 分钟有效、带重发冷却与错误次数限制,防刷防爆破。

🔐

会话与密钥

PBKDF2 哈希密码,HttpOnly 签名 Cookie 会话,每个用户可创建多把独立密钥,支持随时停用。

⚡

零成本部署

纯 Cloudflare Pages Functions + D1 + Workers KV 之外的服务,无需服务器。边缘节点全球加速。

三行接入

注册后在控制台创建密钥,替换下面的 sk-xxx 即可。

Claude Code(Anthropic 协议)

把 ANTHROPIC_BASE_URL 指向本站根地址即可,Claude Code 会自行拼接 /v1/messages。

export ANTHROPIC_BASE_URL="https://云渡中转站"
export ANTHROPIC_AUTH_TOKEN="sk-你的中转密钥"

# 可选:覆盖模型
export ANTHROPIC_MODEL="claude-3-5-sonnet"
如果你用的是 ANTHROPIC_API_KEY 变量名,Claude Code 同样支持,两者任选其一。

用 Claude Code 协议请求 OpenAI 账号

在控制台添加一个 provider = openai 的账号,Claude Code 发的 /v1/messages 会被转成 /chat/completions 发出去,工具调用与流式输出都会正确还原。

OpenAI 官方 SDK

from openai import OpenAI

client = OpenAI(
    api_key="sk-你的中转密钥",
    base_url="云渡中转站/api/relay/v1",
)

resp = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)

Node.js 同理:new OpenAI({ apiKey, baseURL: 'https://你的域名/api/relay/v1' })。

cURL · OpenAI 协议

curl https://云渡中转站/api/relay/v1/chat/completions \
  -H "Authorization: Bearer sk-你的中转密钥" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o",
    "messages": [{"role": "user", "content": "你好"}]
  }'

cURL · Anthropic 协议

curl https://云渡中转站/v1/messages \
  -H "x-api-key: sk-你的中转密钥" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-3-5-sonnet",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "你好"}]
  }'

Anthropic SDK / Python

from anthropic import Anthropic

client = Anthropic(
    api_key="sk-你的中转密钥",
    base_url="https://云渡中转站",
)

with client.messages.stream(
    model="claude-3-5-sonnet",
    max_tokens=1024,
    messages=[{"role": "user", "content": "写一首关于夜晚的短诗"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="")

流式响应会在中转站逐块转换下发,不会整体缓冲,首字延迟接近直连。

模型别名

用同一个模型名调用,系统会根据目标账号的协议自动换成对应型号。也可在 MODEL_MAP 中自定义。

模型别名→ OpenAI 账号→ Claude 账号
加载中…