这是一个专为 Deno Deploy 设计的高性能、企业级 AI 网关。它不仅仅是一个反向代理,更是一个集成了智能流控、并发管理、故障重试和资源优化的流量调度中心。
特别针对 沉浸式翻译、LangChain、AutoGPT 等高并发场景进行了深度优化,能够最大化利用免费/付费 API 的额度,同时极大地降低封号风险。
告别死板的固定延迟。采用令牌桶算法,允许突发流量 (Burst)。
- 效果:网页翻译时,前 8-10 段瞬间并发发出(秒开),后续请求平滑限速。既爽快又安全。
- RPS (Rate Per Second): 控制每秒请求数,防止触发上游速率限制。
- MaxConn (最大并发): 控制同时在途(In-flight)的请求数。防止因上游响应慢导致连接堆积,进而触发 429 或封号。
- 修复了传统网关拦截
GET请求的问题。 - 完美支持 OpenAI Python/Node.js SDK、LangChain 等库的初始化检查(如
GET /v1/models)。 - 根路径
/伪装成 Nginx 欢迎页面,隐蔽性满分。
- Accept-Encoding: identity: 主动请求上游返回明文 JSON,减少网关解压开销。
- Transparent Headers: 智能透传响应头,保留上游的
content-encoding,彻底解决客户端解压失败导致的无限重试问题。 - Resource Auto-Release: 在重试前显式释放连接资源,防止在高并发下 Deno 连接池耗尽。
此项目专为 Deno Deploy 打造。
- 创建项目: 登录 Deno Deploy,创建一个新的 Playground 或从 GitHub 导入。
- 复制代码: 将
main.ts的内容完整复制进去。 - 设置环境变量: 在 Deno Deploy 的 Settings -> Environment Variables 中添加以下变量:
| 变量名 | 说明 | 示例值 |
|---|---|---|
ACCESS_PASSWORD |
(必填) 网关访问密码 | sk-mysecretpassword |
CEREBRAS_API_KEYS |
Cerebras 密钥 (支持多行/逗号分隔) | key1,key2,key3 |
GROQ_API_KEYS |
Groq 密钥 | gsk_1...,gsk_2... |
CLAUDE_API_KEYS |
Anthropic Claude 密钥 | sk-ant... |
OPENAI_API_KEYS |
OpenAI 密钥 | sk-... |
... |
其他服务的 Key,参考代码中的 envKey |
... |
- 保存并部署: 点击 Save & Deploy。
在代码顶部的 SERVICES_CONFIG 常量中,你可以针对不同服务商进行精细化调优。以下是推荐的生产环境参数:
- rps: 每秒平均生成的令牌数(回血速度)。
- burst: 令牌桶容量(允许瞬间并发的最大数量)。
- maxConn: 最大同时处理的连接数(硬性并发红线)。
| 服务商 | RPS | Burst | MaxConn | 适用场景 / 备注 |
|---|---|---|---|---|
| Cerebras | 4 | 8 | 6 | 沉浸式翻译神选。4 Key 轮询配置,首屏秒开,防封号。 |
| Groq | 1 | 3 | 2 | 单 Key 保号配置。Groq 70b 模型限速严,需保守。 |
| Claude | 2 | 2 | 1 | 极度敏感。Claude 对并发非常排斥,建议串行。 |
| DeepSeek | 10 | 20 | 10 | 耐操型 API,可以放开跑。 |
| OpenAI | 10 | 20 | 10 | 付费号通常限制宽松。 |
| Nvidia | 3 | 6 | 5 | 免费额度较高,可适度并发。 |
修改示例:
'/cerebras': {
// 使用 Cloudflare Gateway 作为上游以利用缓存
target: '[https://gateway.ai.cloudflare.com/v1/YOUR_ID/gpt-load/cerebras](https://gateway.ai.cloudflare.com/v1/YOUR_ID/gpt-load/cerebras)',
envKey: 'CEREBRAS_API_KEYS',
rps: 4, // 长期速度
burst: 8, // 瞬间爆发力
maxConn: 6 // 安全刹车
},
💻 客户端使用方法
网关部署成功后,你会获得一个 URL,例如 https://my-gateway.deno.dev。
1. 沉浸式翻译 / 浏览器插件
API 接口地址: https://my-gateway.deno.dev/cerebras/v1/chat/completions
注意:加上服务前缀,如 /cerebras, /groq, /openai 等
API Key: 填写你在环境变量 ACCESS_PASSWORD 中设置的密码。
模型: 填写对应服务商支持的模型(如 llama3.1-70b)。
2. OpenAI Python SDK
Python
from openai import OpenAI
client = OpenAI(
# 注意加服务前缀,并以 /v1 结尾
base_url="[https://my-gateway.deno.dev/cerebras/v1](https://my-gateway.deno.dev/cerebras/v1)",
api_key="sk-mysecretpassword" # 填写你的网关密码
)
completion = client.chat.completions.create(
model="llama3.1-70b",
messages=[{"role": "user", "content": "Hello!"}]
)
print(completion.choices[0].message.content)
3. LangChain
Python
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
openai_api_base="[https://my-gateway.deno.dev/groq/v1](https://my-gateway.deno.dev/groq/v1)",
openai_api_key="sk-mysecretpassword",
model_name="llama3-70b-8192"
)
⚠️ 常见问题 (FAQ)
Q: 为什么打开网关首页显示 "Welcome to nginx!"? A: 这是为了伪装。为了防止被恶意扫描或探测,根路径 / 会故意返回 Nginx 的默认页面。API 功能都在 /v1/... 路径下正常工作。
Q: 为什么我有 10 个 Key,速度还是没起飞? A: 检查 burst 和 maxConn 参数。如果 maxConn 设得太小(例如 1),即使你有 100 个 Key,网关也只会同一时间发 1 个请求。Cerebras 建议设为 6~8。
Q: 遇到 429 错误怎么办? A: 网关内置了指数退避重试机制。如果依然 429,说明你的 Key 总量太少,或者 rps 设得太高。请降低 rps 或增加 Key 的数量。
Q: Worker 版本和 Deno 版本通用吗? A: 不通用。本代码专为 Deno Runtime 设计(利用了 Deno 的内存驻留特性实现令牌桶)。Cloudflare Workers 请使用专门的 Failover 版本。