一键在 EdgeOne Makers 上部署一个属于你自己的 OpenAI 兼容模型代理端点。 背后指向你已有的 AI 网关;客户端只需修改
base_url,即可用 OpenAI SDK 无感调用。
- OpenAI 兼容协议:完整透传
/v1/*全部端点(chat/completions/embeddings/models/rerank…) - 零业务耦合:所有模型路由、缓存、限流、Fallback 全部交给上游 AI 网关,本代理只负责暴露入口
- 完整流式:SSE (
stream: true) 逐字节透传,客户端体验与直连一致 - 鉴权隔离:对外发放独立的
PROXY_API_KEY,与上游网关 Key 完全解耦;可随时轮换而不动上游 - 全球边缘:跑在 EdgeOne 3200+ 边缘节点,就近响应
- 零依赖:全部使用 Web 标准 API(Fetch / Response / Streams),无
node_modules
Client (OpenAI SDK)
│ base_url = https://your-proxy.edgeone.app/v1
│ Authorization: Bearer <PROXY_API_KEY>
▼
EdgeOne Makers Edge Function (this repo)
│ 1. 校验 PROXY_API_KEY
│ 2. 剥离客户端 Authorization
│ 3. 注入真实 UPSTREAM_API_KEY
│ 4. 透传 method / path / query / body
▼
Your AI Gateway (UPSTREAM_BASE_URL)
│ 路由、缓存、Fallback、可观测、计费 …
▼
Real Model Providers (OpenAI / DeepSeek / Hunyuan / ...)
- Fork 本仓库到你自己的账号
- 打开 EdgeOne Makers 控制台
- 创建项目 → 连接 Git 仓库 → 选择本仓库
- 在项目 环境变量 中配置:
PROXY_API_KEY = eo-sk-xxxxxxxxxxxx ← 你要发放给客户端的 Key(自定义) UPSTREAM_BASE_URL = https://your-gateway/v1 ← 你的 AI 网关地址 UPSTREAM_API_KEY = sk-your-real-key ← 你的 AI 网关 Key - 点击部署,几十秒后拿到形如
xxx.edgeone.app的域名
npm install -g edgeone
git clone <this-repo>
cd model-proxy-starter
edgeone pages login
edgeone pages deployfrom openai import OpenAI
client = OpenAI(
base_url="https://your-proxy.edgeone.app/v1", # ← 你的 Makers 域名
api_key="eo-sk-xxxxxxxxxxxx", # ← 你在 PROXY_API_KEY 里配的
)
resp = client.chat.completions.create(
model="gpt-4o", # 模型 ID 由你上游 AI 网关定义
messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)stream = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "写一首七律"}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="", flush=True)curl https://your-proxy.edgeone.app/v1/chat/completions \
-H "Authorization: Bearer eo-sk-xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"messages": [{"role":"user","content":"Hello"}]
}'curl https://your-proxy.edgeone.app/v1/models \
-H "Authorization: Bearer eo-sk-xxxxxxxxxxxx"model-proxy-starter/
├── edge-functions/
│ ├── index.js # GET / 健康检查
│ ├── _lib/
│ │ ├── upstream.js # 上游配置读取
│ │ └── auth.js # 鉴权 & CORS
│ └── v1/
│ └── [[default]].js # ANY /v1/* 透传给上游 AI 网关
├── examples/
│ ├── curl-test.sh
│ └── python-test.py
├── package.json
├── .env.example
└── README.md
edge-functions/index.js→/edge-functions/v1/[[default]].js→/v1/**(多级动态路由,匹配/v1/*下的任意子路径)
PROXY_API_KEY支持逗号分隔配置多把 Key(例:k1,k2,k3),任一匹配即可- 请求头必须是
Authorization: Bearer <key> - 若
PROXY_API_KEY未配置,则放行所有请求(仅限本地开发) - 客户端的
Authorization会被剥离,替换为服务端的UPSTREAM_API_KEY才转发给上游
Edge Functions 平台限制(参考 官方文档):
| 项 | 限制 |
|---|---|
| 代码包大小 | 5 MB |
| 请求 body | 1 MB |
| CPU 时间 | 200 ms(不含 I/O 等待,流式响应完全不受影响) |
| 语言 | JavaScript ES2023+ |
上述限制对纯代理场景绰绰有余(本项目 CPU 用时 <5ms)。
MIT