Skip to content

一个轻量级、高性能的 Serverless AI 网关,专为沉浸式翻译 (Immersive Translate)、LobeChat 等高并发场景优化。

Notifications You must be signed in to change notification settings

LINKKDON/AI-Gateway

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 

Repository files navigation

Universal AI Gateway (Deno Edition) - v5.9.19

这是一个专为 Deno Deploy 设计的高性能、企业级 AI 网关。它不仅仅是一个反向代理,更是一个集成了智能流控并发管理故障重试资源优化的流量调度中心。

特别针对 沉浸式翻译LangChainAutoGPT 等高并发场景进行了深度优化,能够最大化利用免费/付费 API 的额度,同时极大地降低封号风险。


🌟 核心特性 (v5.9.19)

1. 🚀 令牌桶流控 (Token Bucket)

告别死板的固定延迟。采用令牌桶算法,允许突发流量 (Burst)

  • 效果:网页翻译时,前 8-10 段瞬间并发发出(秒开),后续请求平滑限速。既爽快又安全。

2. 🛡️ 双重熔断机制

  • RPS (Rate Per Second): 控制每秒请求数,防止触发上游速率限制。
  • MaxConn (最大并发): 控制同时在途(In-flight)的请求数。防止因上游响应慢导致连接堆积,进而触发 429 或封号。

3. 🔌 完美 SDK 兼容

  • 修复了传统网关拦截 GET 请求的问题。
  • 完美支持 OpenAI Python/Node.js SDKLangChain 等库的初始化检查(如 GET /v1/models)。
  • 根路径 / 伪装成 Nginx 欢迎页面,隐蔽性满分。

4. 🧠 智能协议优化

  • Accept-Encoding: identity: 主动请求上游返回明文 JSON,减少网关解压开销。
  • Transparent Headers: 智能透传响应头,保留上游的 content-encoding,彻底解决客户端解压失败导致的无限重试问题。
  • Resource Auto-Release: 在重试前显式释放连接资源,防止在高并发下 Deno 连接池耗尽。

🛠️ 部署指南

此项目专为 Deno Deploy 打造。

  1. 创建项目: 登录 Deno Deploy,创建一个新的 Playground 或从 GitHub 导入。
  2. 复制代码: 将 main.ts 的内容完整复制进去。
  3. 设置环境变量: 在 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 ...
  1. 保存并部署: 点击 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 版本。

About

一个轻量级、高性能的 Serverless AI 网关,专为沉浸式翻译 (Immersive Translate)、LobeChat 等高并发场景优化。

Resources

Stars

Watchers

Forks