为什么越来越多人用 AI Gateway?

前言

大家好,我是苏三。

前阵子有球友反馈说,他们做了一个 AI 客服系统,光是"调模型"这个动作,他们在业务层写了三个适配器:一个 OpenAI 的,一个 Anthropic 的,一个通义千问的。

每个适配器里都有自己的一套重试逻辑、自己的一套错误码映射、自己的一套 Token 统计。

我问他:"如果明天老板说 DeepSeek 便宜,全量切过去,你要改多少地方?"

他苦笑了一下:"三个适配器都得动,业务代码里还有一堆 if provider == 'openai'的判断。"

这就是 AI Gateway 要解决的问题。

它不是"又一个中间件",而是把"调模型"这件事从业务代码里抽出来,变成一层统一的基础设施。

你对着一个地址说话,剩下的路由、翻译、兜底、记账,交给网关。

今天这篇文章,我就把 AI Gateway 到底解决了什么、它的核心原理、以及怎么用,从头到尾给你拆解一遍。

希望对你会有所帮助。

一、为什么"直接调模型"会变成灾难?

有些小伙伴可能会说:"我直接调 OpenAI 的 API 不就行了?加个 try-catch 不就完了?"

单模型、单供应商的时候,确实没问题。但一旦你的系统开始"长大",问题就藏不住了。

第一个问题,协议不统一。

OpenAI 用 tool_calls 字段,Anthropic 用 tool_use content block,Gemini 用 functionCall part。

你每接一个供应商,就要写一套入参转换、出参转换、流式事件转换。三套适配器,加起来就是几百行胶水代码。

第二个问题,故障处理零散。

某个供应商突然 5xx 了,你希望自动切到备用模型。

但如果你在每个业务方法里都写 try-catch 加 fallback,代码会变得极其难看。而且"什么时候该重试、什么时候该降级、429 限流该怎么处理",每个地方写的逻辑可能还不一样。

第三个问题,成本不可见。

你的应用同时调了 OpenAI 和 DeepSeek,月底账单来了,你想知道"哪个业务线花了多少钱",结果发现两个供应商的账单格式不一样,对不上。

第四个问题,安全管控分散。

你想给每个部门设置不同的 Token 限额,想对用户输入做 PII 脱敏,想审计每一次模型调用。

如果每个应用各管各的,这些事根本做不统一。

AI Gateway 的本质,就是把这些问题从业务代码里"抽出来",放在一个统一的地方解决。

二、一张图看懂 AI Gateway 的位置

业务应用只对着 Gateway 说一种"语言"(通常是 OpenAI Chat Completions 格式),Gateway 负责把它翻译成各个供应商能听懂的话,然后根据你的策略,决定把请求发给谁。

这个设计的核心价值是:业务代码和供应商解耦了。 你今天用 OpenAI,明天换 DeepSeek,后天加一个自建的 Ollama,业务代码一行都不用改。你只需要改 Gateway 的配置。

三、AI Gateway 到底在做什么?

3.1 协议归一化:让所有供应商"说普通话"

这是 AI Gateway 最基础、也最繁琐的工作。

各家 API 的差异比看起来深。

以工具调用为例:OpenAI 用 tool_calls 字段,Anthropic 用 tool_use content block,Gemini 用 functionCall part。

系统提示的位置也不一样。

流式响应的增量结构更是各不相同。

Gateway 在中间做翻译。

你发一个标准的 OpenAI 格式请求进来,Gateway 根据路由规则,把它翻译成目标供应商的格式,发出去;收到响应后,再翻译回标准格式,返回给你。

这意味着你的代码只需要认一种协议。

换供应商的时候,你不需要重写任何请求构造逻辑。

LiteLLM 的文档把这件事说得很清楚:litellm.completion() 负责的就是"Translation and parameter mapping"。

3.2 模型路由:按策略选"谁来回答"

这是 AI Gateway 最有技术含量的部分。路由策略从简单到复杂,大概有这几个层次:

固定模型:写死,手动改。最简单,也最不灵活。

规则路由:按场景、租户、风险等级映射模型。比如"内部测试用便宜模型,生产环境用旗舰模型"。

成本路由:小模型先试,不够用再升级强模型。比如先用 DeepSeek 回答,如果它返回的置信度低,再转给 GPT-4o 重答。

Fallback 与熔断 :不是所有错误都该 Fallback。网络瞬断、5xx 服务端错误适合切换;429 限流要谨慎,需要读 Retry-After;认证错误切了也没用。

LiteLLM 的 Router 把 Load balancing、Fallbacks、Retries 都收在这一层处理。

3.3 Key 管理:虚拟 Key 到真实 Key 的映射

这是企业级场景的刚需。

你的应用不应该直接持有 OpenAI 的 Key。

正确的做法是:Gateway 给每个应用或每个用户发一个"虚拟 Key",应用拿着虚拟 Key 来调 Gateway,Gateway 根据虚拟 Key 找到对应的真实供应商 Key,再转发出去。

LiteLLM 的请求流程里,第一步就是检查 Bearer token 对应的 Virtual Key 是否有效、是否在预算内。你可以随时吊销某个虚拟 Key 而不影响其他人;你可以追踪"哪个应用调了多少次、花了多少钱";你可以给不同部门设置不同的预算上限。

3.4 可观测性:Token 和成本是新的 QPS

传统 API 网关看的是 QPS、延迟、错误率。

AI Gateway 看的是 Token 消耗、成本归因、首 Token 延迟。

这些指标的意义完全不同。

两个请求的 QPS 可能一样,但一个请求消耗 100 个 Token,另一个消耗 10 万个 Token,成本差一千倍。传统按 QPS 限流在这里几乎无效。

AI Gateway 按 Token 限流、按成本预算控制,这才是 AI 场景下正确的治理方式。

阿里云 AI 网关的文档里,Token 计量计费和语义缓存是并列的两个核心能力。

四、用 LiteLLM 跑通一个 AI Gateway

有些小伙伴可能会说:"说了这么多,到底怎么用?"

LiteLLM 是目前最广泛使用的开源 AI Gateway。

Thoughtworks 的技术雷达把它从"语言与框架"移到了"平台"类别,理由是"我们更多把它看作基础设施,而不是一个库"。

4.1 安装与启动

bash 复制代码
pip install 'litellm[proxy]'
litellm --config /path/to/config.yaml

4.2 配置文件:定义模型路由

yaml 复制代码
model_list:
  - model_name: "gpt-4o"
    litellm_params:
      model: "openai/gpt-4o"
      api_key: os.environ/OPENAI_API_KEY

  - model_name: "deepseek-chat"
    litellm_params:
      model: "deepseek/deepseek-chat"
      api_key: os.environ/DEEPSEEK_API_KEY

  - model_name: "qwen-max"
    litellm_params:
      model: "dashscope/qwen-max"
      api_key: os.environ/DASHSCOPE_API_KEY

4.3 客户端调用:完全不用改代码

python 复制代码
from openai import OpenAI

client = OpenAI(
    api_key="sk-litellm-virtual-key",
    base_url="http://localhost:4000"
)

response = client.chat.completions.create(
    model="gpt-4o",  # 或者 "deepseek-chat"、"qwen-max"
    messages=[{"role": "user", "content": "解释一下什么是 AI Gateway"}]
)

你的业务代码只认 base_url 和 model 两个东西。 背后是 OpenAI 还是 DeepSeek,业务代码完全不知道。

五、用 AI 帮你排查网关配置问题

AI Gateway 本身是一个"中间层",出问题时,排查链路比直连长。但正因为它是网关,它的日志是集中的、结构化的,AI 可以帮你快速定位。

假设你的应用突然报错,说某个模型不可用。你怎么快速判断是网关配置问题还是供应商问题?

传统方式:看应用日志、看网关日志、看供应商状态页,三方对比,十分钟过去了。

AI 辅助方式:你把网关的请求日志和错误日志喂给 AI,说:

"这是我的 LiteLLM 网关日志。应用调用 gpt-4o 时返回 500,但调用 deepseek-chat 正常。帮我分析一下是网关配置问题还是 OpenAI 侧问题。"

AI 会扫描日志,发现 gpt-4o 的请求在网关侧就失败了,错误信息是 AuthenticationError: Incorrect API key。

它会告诉你:"网关到 OpenAI 的 Key 配置有问题,不是 OpenAI 服务本身挂了。检查 OPENAI_API_KEY 环境变量是否正确加载。"

AI 不能替你做的事:判断"这个 Key 为什么失效了"------是过期了、被吊销了、还是环境变量没注入?这个需要你去看供应商控制台、看部署配置。

AI 帮你缩小范围,你来做最终判断。

六、优缺点

优点

1. 业务与供应商解耦

业务代码只认一种协议、一个地址。换供应商、加模型,改网关配置就行,业务代码不动。

2. 故障处理集中化

Fallback、重试、熔断、限流,全部在网关层统一配置。不需要每个应用自己写一套。

3. 成本可观测、可控制

Token 消耗、成本归因、预算上限,网关层统一管理。知道钱花在哪、花给谁。

4. Key 管理更安全

虚拟 Key 映射真实 Key,应用不直接持有供应商密钥。轮换、吊销、权限控制都在网关层完成。

5. 协议翻译自动化

OpenAI、Anthropic、Gemini 之间的格式差异,网关帮你翻译。你不需要写三套适配器。

缺点

1. 多了一层,就多了一个故障点

网关本身挂了,所有应用都调不了模型。所以网关的高可用是必须的,不能单点。

2. 供应商特有功能可能被"抹平"

LiteLLM 的 drop_params 模式会静默丢弃不支持的参数。如果你依赖某个供应商的特有能力,可能需要绕过网关直连,或者接受"跨供应商时功能降级"。

3. 自托管有运维成本

开源网关(如 LiteLLM)需要自己部署、自己保证可用性、自己跟安全补丁。Thoughtworks 指出 LiteLLM 在 2026 年已经报告了超过 25 个 CVE,需要及时打补丁。

4. 不是所有场景都需要

只接一个模型、只有一个调用方、不在乎成本细节的系统,加网关是过度设计。

七、适用场景

场景 推荐程度 理由
多模型/多供应商切换 ✅✅✅ 强烈推荐 协议翻译+路由,业务代码零改动
需要成本管控和归因 ✅✅✅ 强烈推荐 Token 级限流、预算控制、成本归因
企业级 Key 管理和审计 ✅✅✅ 强烈推荐 虚拟 Key、审计日志、权限控制
供应商故障自动兜底 ✅✅✅ 强烈推荐 Fallback、熔断、重试集中配置
单模型简单应用 ❌ 不推荐 加网关是过度设计
依赖供应商特有功能 ⚠️ 需评估 网关可能抹平差异,需确认支持范围

八、写在最后

回到最初的问题:为什么越来越多人用 AI Gateway?

因为"调模型"这件事,正在从"写一行代码"变成"管一套基础设施"。

当你的系统只接一个模型的时候,直接调 API 没问题。

但当你的系统接了三个供应商、五个模型、十几个应用、几十个用户的时候,"怎么调"就变成了一件需要统一治理的事。

协议不统一、故障处理零散、成本看不见、Key 管不住------这些问题,每一个单独解决都不难,但加在一起,就是几千行胶水代码和无数个深夜的应急电话。

AI Gateway 的价值,就是把这些"横切关注点"从业务代码里抽出来,放在一个统一的地方解决。 业务代码只管"我要什么",网关负责"怎么拿到"。

当然,它不是银弹。

多一层就多一个故障点,自托管有运维成本,供应商特有功能可能被抹平。

但对于多模型、多供应商、需要成本管控和审计的团队来说,它已经从一个"可选项"变成了"基础设施"。

相关推荐: