阿里云模型代理

基于 Hono.js 的反向代理服务,同时支持阿里云 DashScope Anthropic 兼容接口和 OpenAI 兼容接口。客户端只需一个代理地址和一个代理密钥,真实 DashScope API Key 和模型池均在服务端隐藏管理。当免费额度耗尽时,代理自动切换模型。

阿里云 DashScope 每个模型提供 1000 万免费 tokens,通过模型池聚合多个模型,可最大化利用免费额度。

模型试用明细

功能

  • 对外只暴露一个 API Key
  • 隐藏真实 DashScope API Key 和模型池
  • Anthropic 协议 POST /v1/messages 代理
  • OpenAI Chat Completions 协议 POST /v1/chat/completions 代理
  • OpenAI 协议 GET /v1/models 返回本地模型池列表
  • 自动替换请求体中的 model 字段
  • Key 优先故障转移:在当前 Key 下尝试所有可用模型,全部失败后才切换到下一个 Key
  • 免费额度耗尽自动重试,触发条件(满足任意一组):
    • HTTP 403codeAccessDenied,且 message 同时包含 free tierexhausted
    • codetypeAllocationQuota.FreeTierOnly
  • 冷却状态按 Key+模型组合持久化到 JSON 文件,重启不丢失
  • 上游返回正常状态码后,流式响应直接透传,不做缓冲

相关文档

快速开始

pnpm install
cp .env.example .env

按需修改 .env

PORT=3300

PROXY_API_KEY=sk-001

DASHSCOPE_API_KEYS=sk-your-real-key-1,sk-your-real-key-2
UPSTREAM_BASE_URL=https://dashscope.aliyuncs.com/apps/anthropic
OPENAI_UPSTREAM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1

MODEL_IDS=deepseek-v4-flash,deepseek-v4-pro,qwen3.7-max,qwen3.7-plus
MODEL_COOLDOWN_SECONDS=2592000
STATE_PATH=./data/proxy-state.json
UPSTREAM_AUTH_MODE=authorization
CORS_ORIGIN=*

开发模式:

pnpm dev

启动日志

生产模式:

pnpm build
pnpm start

客户端调用

Anthropic 协议

代理地址:

http://localhost:3300

请求头二选一:

Authorization: Bearer sk-001

或:

x-api-key: sk-001

示例:

curl http://localhost:3300/v1/messages \
  -H "Authorization: Bearer sk-001" \
  -H "Content-Type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "any-model-name",
    "max_tokens": 256,
    "messages": [
      {
        "role": "user",
        "content": "你好"
      }
    ]
  }'

OpenAI 协议

代理 base URL

http://localhost:3300/v1

示例:

curl http://localhost:3300/v1/chat/completions \
  -H "Authorization: Bearer sk-001" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "any-model-name",
    "messages": [
      {
        "role": "user",
        "content": "你好"
      }
    ],
    "stream": true
  }'

客户端可以使用 OpenAI SDK 接入 http://localhost:3300/v1。服务端本身只是反代,使用原生 fetch,不需要 openai SDK。

服务状态

健康检查:

curl http://localhost:3300/health

模型池状态:

curl http://localhost:3300/models/status \
  -H "Authorization: Bearer sk-001"

Docker

docker build -t dashscope-model-proxy .
docker run --env-file .env -p 3300:3300 dashscope-model-proxy

说明

冷却状态保存在 STATE_PATH 指定的 JSON 文件中,存储内容包括 Key 哈希、模型 ID、冷却截止时间、失败次数和最近错误信息,不保存明文 DashScope API Key。

状态文件仅供单进程写入设计。若部署多实例,需各自维护独立状态文件或引入外部协调存储。

Languages
TypeScript 87.9%
JavaScript 10.9%
Dockerfile 1.2%