分享下轻量好用的模型网关 GT AI Gateway 新版本,增加了多上游负载均衡和自动故障切换

AlexaZhou 2026-09-13 15:31 1

大家好,分享一个我自己维护的开源项目:GT AI Gateway 。它解决的问题很朴素——当你手里有一个或多个上游 API Key ,想分给团队里多个人用的时候,直接发 Key 既控制不了用量,也防不住泄漏。这个网关就是插在中间的那一层。


项目地址: https://github.com/alexazhou/gt_ai_gateway


多上游负载均衡与故障切换


一个模型可以同时挂多个上游渠道(比如官方 + 代理 + 备用)。请求会自动分摊到各个渠道上,某个渠道挂了会自动切到还活着的那个,用的人基本无感。


选渠道的方式可以自己定:让同一个用户固定走同一个渠道(上游那边的缓存命中率更高,更省钱),或者每次请求都随机分配。失败后要不要自动切换,是个独立开关。


限流与访问控制(本版新增)


举个常见的例子:上游 API 被单个用户占满了怎么办?


有人跑了批任务,或者不小心写出个死循环,把上游额度刷满,其他人就跟着一起干等。这个版本加了限流和访问控制,可以在网关这一层把问题挡掉:



  • 按用户限速:给每个人配一个每分钟请求上限。避免出现单个用户把整个上游占满的情况。

  • 按模型、按渠道限速:也可以给某个模型或某个上游渠道设总量上限,防止被集中打满。

  • 被拦下时给出明确反馈:网关会告诉客户端等多久再试,客户端据此退避就行,不用盲目猛冲。

  • 访问控制:也可以按用户控制可以访问的模型。


什么是 GT AI Gateway ?(写给还没用过的朋友)


如果你是第一次看到这个项目,简单来说,GT AI Gateway 是一个轻量级、开箱即用的 AI API 网关。


它的核心作用是帮你聚合和管理各种大模型 API 。当你手头有多个大模型接口( OpenAI, Anthropic, Gemini 等)时,可以通过它实现:


🔍 请求分析与改写: 深入解析请求上下文,支持在网关层对请求体和提示词进行拦截、分析及智能改写。
🔄 协议转换与兼容: 统一 API 入口,支持主流大模型协议( OpenAI 、Anthropic 等)的自动适配与双向转换。
🔐 用户管理与鉴权: 支持把单个上游 API 分发给多用户使用,精准控制各自用量,有效防止上游 Key 泄漏。
📝 完整请求记录: 全量记录所有 AI 请求、响应日志以及耗时数据,方便进行排查、对账和二次分析。
⚡ 极轻量与高性能: 低资源占用,无额外的独立数据库依赖。Serverless 模式下使用 Cloudflare 原生的 D1 数据库,其他环境下默认使用轻量级内嵌的 SQLite 。
🚀 多运行模式:支持 Serverless 部署、Docker 部署、本地源码运行以及跨平台桌面端应用 (App) 运行。


如果你在寻找一个好用的工具来统一接管你的 AI 开发流,或者想在团队内更优雅地分发大模型接口,非常推荐试一试!


项目地址: https://github.com/alexazhou/gt_ai_gateway


欢迎大家来体验,有任何建议都可以回帖,或者提 Issue ;


如果觉得有用,求个 Star 支持一下~🙏

最新回复 (9)
  • xiaoz 09-13 16:46
    1
    看起来挺不错的,我目前用的是 bifrost 和 newapi ,空了部署这个试试。

    另外有考虑兼容 opencode go 吗?现在 go 要求必须传递指定的 header 头才能用。
  • stardust21 09-13 17:44
    2
    和 Litellm 对比主要特点是轻量么?
  • baizheng 09-13 17:48
    3
    这是伪需求, 就像在 Loadbalancer 前面套无数层 Loadbalancer
  • jetsung 09-13 19:39
    4
    @stardust21 litellm 用 python 写的,我觉得非常重。

    ---
    https://github.com/agentgateway/agentgateway
    https://github.com/maximhq/bifrost
    上面两个,一个是 rust 写的,一个是 go 写的。后面这个非常精美。前面这个感觉比较类似 litellm (直接用 yaml 配置)
  • AlexaZhou 楼主 09-13 20:29
    5
    @xiaoz
    感谢支持,预计这两天就把 opencode go 的 header 支持上
  • AlexaZhou 楼主 09-13 20:36
    6
    @stardust21

    主要有三个区别:
    1. 轻量且高性能
    2. 另外提供 litellm 没有的一些功能,如:可视化分析,缓存优化,去隐私追踪等
    3. 支持多平台,包括:桌面应用,serverless 平台部署,docker 容器
  • liuxu 09-14 08:52
    7
    好东西,已 star
  • vus520 09-14 11:02
    8
    bifrost 比较狗,很多企业版的功能。
    litellm 强在多 mcp 等功能,仅有极少功能是企业版。

    但这两个产品,我都有一个感觉,就是合并的 pr 越来越多,功能越来越不受控,很多版本出来是有 bug 的。
  • liuxu 09-14 14:44
    9
    prompt_cache_key 是什么特性,模型选择“首选可用”,配置了 1 个账号,有多个上游,现在一直命中第一个,即使第一个返回错误,也没有切到第二个上游。用 docker 部署的 latest

    这是上游的 response:
    {
    "type": "response.failed",
    "response": {
    "id": "resp_05213572943d5c61016aa794c408a887d0b53591e0b90bc990",
    "object": "response",
    "created_at": 1789367492,
    "status": "failed",
    "background": false,
    "completed_at": null,
    "error": {
    "code": "server_error",
    "message": "Our servers are currently overloaded. Please try again later."
    },
    "frequency_penalty": 0,
    "max_tool_calls": null,
    "model": "gpt-5.6-terra",
    "moderation": null,
    "presence_penalty": 0,
    "previous_response_id": null,
    "prompt_cache_key": "3ac9a2e42f9ce975",
    "prompt_cache_retention": "24h",
    "safety_identifier": "user-FUNwHz0HFakp",
    "service_tier": "default",
    "store": false,
    "temperature": 1,
    "tool_usage": {
    "image_gen": {
    "input_tokens": 0,
    "input_tokens_details": {
    "image_tokens": 0,
    "text_tokens": 0
    },
    "output_tokens": 0,
    "output_tokens_details": {
    "image_tokens": 0,
    "text_tokens": 0
    },
    "total_tokens": 0
    },
    "web_search": {
    "num_requests": 0
    }
    },
    "top_logprobs": 0,
    "top_p": 0.98,
    "user": null
    },
    "sequence_number": 4
    }
* 帖子来源V2EX
返回