2026 年 AI Gateway 实战:用 LiteLLM 把 5 个大模型 API 统一管理,成本直降 40%

阿里云上云采购季 2核2G云服务器99元/年 续费同价

你公司是不是同时接了 GPT-4o、Claude Sonnet、DeepSeek-V3、通义千问、文心一言?每次换模型改代码改到崩溃?今天这篇文章帮你一劳永逸。


为什么你需要一个 AI Gateway?

先看一个真实的场景:你花了两周时间接入了 OpenAI 的 API,代码里写满了 openai.ChatCompletion.create()。结果老板说”GPT 太贵了,换成 DeepSeek 吧”。你一脸懵逼——所有调用逻辑都得重写。

更惨的是,你以为换完就完事了?不是的。公司内部可能有 5 个不同的项目,分别接了 5 个大模型。每个项目的调用方式、错误处理、重试逻辑都长得不一样。出问题了排查半天,日志格式五花八门。

AI Gateway 就是来解决这个问题的——它像一个”翻译官”,你在代码里只写一种调用方式,它自动帮你路由到不同的模型,还顺带做了负载均衡、成本追踪、速率限制。

场景 不用 Gateway 用 LiteLLM Gateway
切换模型 改核心代码 改一行配置
多模型负载 自己写轮询逻辑 内置负载均衡
成本追踪 手动算 Dashboard 实时看
速率限制 自己实现令牌桶 配置即生效
错误重试 各项目各自实现 统一 fallback

LiteLLM 是什么?

LiteLLM 是目前 GitHub 上最火的 AI Gateway 开源项目(50K+ Star)。它支持 100+ 大模型提供商,包括 OpenAI、Anthropic、Google、Azure、Cohere、Hugging Face,以及国产的通义千问、DeepSeek、文心、智谱等。

核心原理很简单:它实现了一套和 OpenAI API 完全兼容的接口格式。你的代码只需要调 OpenAI 格式的请求,LiteLLM 在背后帮你翻译成各个模型的真实调用。

更牛的是,它提供 Proxy Server 模式——部署一个独立服务,你公司所有项目都指向这个 Gateway,统一管理所有大模型 API。


5 分钟上手:Docker 部署 LiteLLM Proxy

# 1. 拉取镜像
docker pull ghcr.io/berriai/litellm:main-latest

# 2. 创建配置目录
mkdir -p ~/litellm && cd ~/litellm

# 3. 创建一个 .env 文件放 API Key
cat > .env << 'EOF'
OPENAI_API_KEY=sk-your-openai-key
ANTHROPIC_API_KEY=sk-ant-your-anthropic-key
DEEPSEEK_API_KEY=sk-your-deepseek-key
DASHSCOPE_API_KEY=sk-your-dashscope-key
EOF

# 4. 创建 litellm_config.yaml 配置文件
cat > litellm_config.yaml << 'EOF'
general_settings:
  master_key: "sk-litellm-admin-key"

model_list:
  - model_name: gpt-4o
    litellm_params:
      model: openai/gpt-4o
      api_key: os.environ/OPENAI_API_KEY
      rpm: 500        # 每分钟请求限制
      tpm: 100000     # 每分钟 token 限制

  - model_name: claude-sonnet
    litellm_params:
      model: anthropic/claude-sonnet-4-20250514
      api_key: os.environ/ANTHROPIC_API_KEY
      rpm: 200

  - model_name: deepseek-v3
    litellm_params:
      model: deepseek/deepseek-chat
      api_key: os.environ/DEEPSEEK_API_KEY
      rpm: 300

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

  # 定义一个路由组:优先用 deepseek,失败则降级到 gpt-4o
  - model_name: smart-router
    litellm_params:
      model: deepseek/deepseek-chat
      rpm: 300
    model_info:
      mode: single
      fallbacks: ["gpt-4o"]

litellm_settings:
  set_verbose: true
  request_timeout: 60
  num_retries: 3
  fallbacks: [{"deepseek-v3": ["gpt-4o"]}]

router_settings:
  routing_strategy: "latency-based-routing"
  enable_pre_call_checks: true
EOF

# 5. 启动
docker run -d \
  --name litellm-proxy \
  --env-file .env \
  -v $(pwd)/litellm_config.yaml:/app/config.yaml \
  -p 4000:4000 \
  ghcr.io/berriai/litellm:main-latest \
  --config /app/config.yaml --port 4000

# 6. 验证:打开 http://localhost:4000 看到 Swagger UI
echo "Gateway 已启动,访问 http://localhost:4000"

代码调用:和调 OpenAI 一模一样

Gateway 部署好之后,你所有服务的代码都指向 http://localhost:4000,API 格式和 OpenAI 完全兼容。

Python 示例

from openai import OpenAI

# 把 base_url 指向你的 Gateway
client = OpenAI(
    base_url="http://localhost:4000/v1",
    api_key="sk-litellm-admin-key"  # master_key
)

# 调用 GPT-4o
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "用一句话解释什么是容器化"}]
)
print(response.choices[0].message.content)

# 调用 DeepSeek —— 只改一个 model 参数!
response = client.chat.completions.create(
    model="deepseek-v3",
    messages=[{"role": "user", "content": "用一句话解释什么是容器化"}]
)
print(response.choices[0].message.content)

# 使用智能路由 —— 自动 fallback
response = client.chat.completions.create(
    model="smart-router",
    messages=[{"role": "user", "content": "给我写一段 Python 快速排序代码"}]
)
print(response.choices[0].message.content)

其他语言的兼容性

因为 LiteLLM 是 OpenAI 兼容的,你在任何语言中直接用 OpenAI SDK 就行:

// Node.js
import OpenAI from 'openai';
const client = new OpenAI({
    baseURL: 'http://localhost:4000/v1',
    apiKey: 'sk-litellm-admin-key'
});
# curl 也行
curl http://localhost:4000/v1/chat/completions \
  -H "Authorization: Bearer sk-litellm-admin-key" \
  -H "Content-Type: application/json" \
  -d '{"model":"deepseek-v3","messages":[{"role":"user","content":"Hello"}]}'

进阶玩法:负载均衡 + 成本控制

1. 多实例负载均衡

同一个模型部署多个 Key,自动轮询:

model_list:
  - model_name: gpt-4o
    litellm_params:
      model: openai/gpt-4o
      api_key: os.environ/OPENAI_API_KEY_1
  - model_name: gpt-4o
    litellm_params:
      model: openai/gpt-4o
      api_key: os.environ/OPENAI_API_KEY_2

router_settings:
  routing_strategy: "usage-based-routing"  # 按用量分配

LiteLLM 支持四种路由策略:

策略 说明 适用场景
simple-shuffle 随机轮询 简单场景
usage-based-routing 根据 TPM/RPM 用量分配 多 Key 配额管理
latency-based-routing 选延迟最低的实例 追求速度
cost-based-routing 选成本最低的模型 预算优先

2. 按预算限额控制成本

model_list:
  - model_name: gpt-4o
    litellm_params:
      model: openai/gpt-4o
      api_key: os.environ/OPENAI_API_KEY
      max_budget: 100          # 日预算 $100
      budget_duration: "1d"

3. 为不同用户/团队设置不同权限

general_settings:
  master_key: "sk-admin-xxx"

litellm_settings:
  enable_jwt_auth: true

# 创建虚拟 Key,不同团队不同限额
# 通过 Admin UI 或 API 创建
# curl http://localhost:4000/key/generate \
#   -H "Authorization: Bearer sk-admin-xxx" \
#   -d '{"models": ["gpt-4o"], "max_budget": 50, "team_id": "backend-team"}'

真实场景:一个调用 5 个模型的完整工作流

假设你在开发一个”AI 批量文档处理”系统,需要同时用到多个模型做不同的事:

import asyncio
from openai import AsyncOpenAI

client = AsyncOpenAI(
    base_url="http://localhost:4000/v1",
    api_key="sk-litellm-admin-key"
)

async def process_document(text):
    """一个文档,三个任务,两种模型"""

    # 任务1:用 DeepSeek-V3 做摘要(便宜)
    summary = await client.chat.completions.create(
        model="deepseek-v3",
        messages=[{"role": "user", "content": f"请用3句话总结以下内容:\n{text}"}]
    )

    # 任务2:用 Claude Sonnet 做深度分析(推理强)
    analysis = await client.chat.completions.create(
        model="claude-sonnet",
        messages=[{"role": "user", "content": f"分析这段文字的核心观点,输出 JSON 格式:\n{text}"}]
    )

    # 任务3:用 GPT-4o 做翻译(多语言强)
    translation = await client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role": "user", "content": f"把以下内容翻译成英文:\n{text}"}]
    )

    return {
        "summary": summary.choices[0].message.content,
        "analysis": analysis.choices[0].message.content,
        "translation": translation.choices[0].message.content
    }

# 批量处理
async def batch_process(documents):
    tasks = [process_document(doc) for doc in documents]
    results = await asyncio.gather(*tasks)
    return results

# 运行
results = asyncio.run(batch_process(["文档1内容...", "文档2内容..."]))
print(f"处理完成,共 {len(results)} 份文档")

看,代码里没有任何 if model == "gpt" 或 elif model == "claude" 的分支判断。你只需要改 model= 参数,Gateway 自动完成路由、重试、日志记录。


踩坑经验(我替你先踩了)

坑1:环境变量不生效

Docker 启动时如果没用 --env-file,容器内读不到宿主机变量。务必用 --env-file .env,或者在 docker run 里逐个 -e 传。

坑2:中国大陆访问 OpenAI API

如果你在国内部署 LiteLLM,需要配置代理。在 litellm_config.yaml 里加上 ssl_verify: false:

litellm_settings:
  ssl_verify: false

坑3:模型名称必须和配置文件的 model_name 一致

我在代码里写了 model="deepseek",但配置里定义的是 model_name: deepseek-v3,调了半天才发现是对不上。


总结

维度 LiteLLM Gateway 能力
模型兼容 100+ 提供商,OpenAI 格式统一
部署方式 Docker 一条命令
负载均衡 4 种策略可选
成本控制 按 Key / 用户 / 模型设预算
速率限制 RPM/TPM 双层限制
监控 内建 Dashboard,可接 Prometheus

用 LiteLLM 之前,你管 3 个大模型要维护 3 套调用代码。用了 LiteLLM 之后,任何模型切换都变成改一行配置。如果你公司的微服务里散落着各种大模型 API Key,是时候建一个统一的 AI Gateway 了。


👤 作者简介

一枚在大中原腹地(河南)卖公有云的从业者,主营腾讯云/阿里云/火山云,曾踩坑无数,现专注AI大模型应用落地。关注公众号「公有云cloud」,围观AI前沿动态~

博客:y1cloud.cn

发表评论