大模型 API 反代
在线

大模型 API 反代

阿里云 ESA 边缘节点上的通用大模型 API 中转 · 路径即目标地址 · 原生支持流式 SSE

01构造代理地址

把任意公开的大模型 API 地址拼在本站域名后面即可,格式与通用反代完全一致。

直接把这个地址当接口地址用;也可只保留到 /v1,例如

02调用示例

<PROXY> 换成上面的代理地址即可,其余参数与官方接口完全一致。

# 非流式
curl $PROXY/https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{"model":"gpt-4o-mini","messages":[{"role":"user","content":"你好"}]}'

# 流式(SSE)
curl -N $PROXY/https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{"model":"gpt-4o-mini","stream":true,"messages":[{"role":"user","content":"你好"}]}'
# Python
from openai import OpenAI

client = OpenAI(
    api_key="sk-...",
    base_url="$PROXY/https://api.openai.com/v1",
)

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

// Node.js
// const client = new OpenAI({ apiKey: "sk-...", baseURL: "$PROXY/https://api.openai.com/v1" });
from anthropic import Anthropic

client = Anthropic(
    api_key="sk-ant-...",
    base_url="$PROXY/https://api.anthropic.com",
)

msg = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=256,
    messages=[{"role": "user", "content": "你好"}],
)
# 站点已自动透传 x-api-key / anthropic-version 等请求头
# 只改环境变量,代码零改动
export OPENAI_BASE_URL="$PROXY/https://api.openai.com/v1"
export OPENAI_API_KEY="sk-..."

# Anthropic 兼容端点
export ANTHROPIC_BASE_URL="$PROXY/https://api.anthropic.com"

# 其它任意兼容 OpenAI 协议的服务,直接把地址拼在域名后即可
# $PROXY/https://api.deepseek.com/v1
# 可选:服务端配置 UPSTREAM_BASE_URL 后,支持固定上游模式
# 例如 UPSTREAM_BASE_URL=https://api.openai.com

curl $PROXY/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{"model":"gpt-4o-mini","messages":[{"role":"user","content":"你好"}]}'

# 此时 OpenAI SDK 的 base_url 直接写 $PROXY/v1

03特性

路径即目标 path

/https://api.example.com/v1/...,查询参数一并转发;也兼容单斜杠 /https:/...?url= 写法

流式透传 SSE

边到边转发,不缓冲整包,响应体直连回传,长连接聊天逐字可见

凭证透传 auth

Authorization / x-api-key / anthropic-version 等原样上送;剥离 cf-*eo-*x-forwarded-* 等边缘信息

压缩自适配 gzip

上游返回 gzip / br / deflate 时由边缘透明处理后再回传,不会出现截断;CORS 头统一重签

跨域直连 CORS

全量 CORS 与 OPTIONS 预检,浏览器端 LLM 前端(LobeChat / NextChat 等)可直接填本站地址

慢上游不 504 resilience

ESA 网关等待首字节上限 10 秒,超时直接 504。本站用双阶段响应绕过:7 秒内拿到上游响应头就直通(保留真实状态码),超窗则立刻切流式占位继续等待,思考型模型与非流式长回答不再被网关掐断

响应头自愈 hardened

上游返回非法 status / 非 ASCII statusText / 204 带 body 都会让 Response 构造抛异常;access-control-allow-credentials 与本站 allow-origin:* 冲突会被浏览器整体拒绝 —— 均已逐项净化

超时与容错 timeout

上游超时可用 UPSTREAM_TIMEOUT_MS 调整(上限夹到平台 120 秒);上游 30x 的 Location 自动改写回本站路径,跟随仍走反代

安全闸门 SSRF

默认拒绝内网 / 回环 / 云元数据目标(403 且不回源),IPv6 映射与整型写法一并覆盖;需反代内网模型可开 ALLOW_PRIVATE_TARGETS

诊断响应头 debug

x-proxy-upstream(实际命中域名)与 x-proxy-ttfb(毫秒);/healthz 返回服务状态

可选保护 token

配置 PROXY_TOKEN 后需带 x-proxy-token 请求头访问

04连通性自测

从你的浏览器经本站访问各厂商接口,验证链路是否通畅(401 / 403 表示已成功到达上游,仅缺密钥)。