教程中心部署
部署

用 LiteLLM 给 Agent 做统一模型网关与故障回退(一处配置接百家模型)

2026.09.16· 7 个步骤 · 18 分钟阅读· 🔌 LiteLLM

你的 Agent 今天用 OpenAI、明天想换 Claude、后天又想试本地模型——结果代码里散落着十几个 Key、十几种 SDK 调用方式,换一个模型就要改一大片业务代码?LiteLLM 就是来解决这个痛点的:它把几十家模型统一成「同一个 OpenAI 兼容接口」,你只改一个 model 名字,路由、限流、重试、故障回退全在配置里搞定。本教程带你从零跑通 LiteLLM 网关。

⚙️ 本教程适合:正在做多模型 Agent、被密钥管理和模型切换折磨的工程/架构同学。你只需会一点 Python 和命令行。

先搞懂:网关解决什么?

没有网关时,每接一家模型都要:装对应 SDK、适配返回格式、单独管 Key、自己写重试。LiteLLM 在中间插一层代理,对外暴露标准 /v1/chat/completions,你的业务代码只认这一个接口,模型差异被网关吸收。

关注点无网关LiteLLM 网关
接口各家不同统一 OpenAI 兼容
切换模型改业务代码只改 model 名
重试/回退自己写配置声明
花费看板各平台分开看统一日志

Step 1:为什么需要统一网关

1 认清痛点

当 Agent 同时接多家模型,你会遇到三类问题:Key 散落难管理、某家限流/宕机时无处可退、成本难统一核算。网关把这三类问题收口到一处。

典型场景:
· 主力用 gpt-4o,成本太高时回退到 claude 或本地模型
· 某模型 429 限流,希望自动换一家重试
· 多家 Key 想集中托管,业务代码不碰明文密钥

Step 2:安装与最小启动

2 先跑通单模型

用 pip 安装,然后直接以命令行方式调用一个模型,确认链路通:

pip install litellm

# 临时用环境变量放 Key,验证能通
export OPENAI_API_KEY=sk-xxx
litellm --model gpt-4o
# 进入交互后直接对话,能回就说明 SDK 装好

版本差异提示:LiteLLM 迭代很快,CLI 子命令(litellm 直跑 vs litellm proxy)与配置字段可能随版本变化。下文配置以官方文档当前版为准,若字段报错请以 pip show litellm 对应版本的文档为准。

Step 3:写 config.yaml

3 声明多模型

核心是一个 model_list,每个模型给一个「网关别名」+ 真实模型路径 + Key 来源(建议走环境变量,不写死)。

model_list:
  - model_name: gpt-4o            # 网关别名,业务代码用这个
    litellm_params:
      model: openai/gpt-4o       # 真实模型,前缀标厂商
      api_key: os.environ/OPENAI_API_KEY
  - model_name: claude-opus
    litellm_params:
      model: anthropic/claude-opus-4
      api_key: os.environ/ANTHROPIC_API_KEY
  - model_name: local-qwen
    litellm_params:
      model: openai/qwen3-32b
      api_base: http://localhost:8000/v1
      api_key: not-needed
💡 model 里的 openai/anthropic/ 前缀告诉 LiteLLM 用哪家协议;本地 OpenAI 兼容服务用 openai/模型名 + api_base 即可。

Step 4:启动代理

4 起服务并指向网关

用配置启动代理,默认监听 4000 端口;之后你的代码把 base_url 指向它就行。

litellm proxy --config config.yaml --port 4000

# 业务侧环境变量(让 OpenAI SDK 走本地网关)
export OPENAI_API_BASE_URL=http://localhost:4000/v1
export OPENAI_API_KEY=anything   # 网关侧再决定真实 Key

生产注意:网关一旦上线就掌握了所有模型 Key,必须放在受信任的内网/专有环境,配合防火墙与访问控制;Key 只从环境变量读取,配置文件中不留明文。

Step 5:配置路由、限流与回退

5 让切换与重试自动化

router_settings 里声明超时、重试次数、以及「主模型挂了回退到谁」:

router_settings:
  timeout: 60
  retry_after: 5
  num_retries: 3
  fallbacks:
    - { "gpt-4o": ["claude-opus", "local-qwen"] }
  # 可选:按 rpm/tpm 做限流
  # rpm: 1000
  # tpm: 1000000
🔁 这样配置后,gpt-4o 一旦持续出错,网关会自动按列表切到 claude-opus,再不行切本地模型——业务代码一行都不用改。

Step 6:在 Agent 代码里接入

6 零改业务只换名字

业务代码用标准 OpenAI SDK,只把 base_url 指向网关,模型名用网关别名:

from openai import OpenAI
client = OpenAI(
    base_url="http://localhost:4000/v1",
    api_key="anything",
)
# 想换模型?只改下面这一行
resp = client.chat.completions.create(
    model="gpt-4o",          # 改 "claude-opus" 即切换,无需改其它代码
    messages=[{"role": "user", "content": "帮我总结这段日志"}],
)
print(resp.choices[0].message.content)

回退透明化:回退发生时,真实用的是哪家模型可能与你指定的不同。若业务对模型能力敏感(如强依赖某家工具调用格式),要在响应里读取实际模型字段并记录,避免「以为用了 A 实际跑了 B」导致行为差异。

Step 7:生产加固

7 上线前 checklist
· Key 全部走环境变量 / 密钥管理,绝不进配置与镜像
· 开启 LiteLLM 的花费与请求日志,做统一看板
· 用虚拟密钥(virtual key)给不同业务发额度,而非共享主 Key
· 配置 rpm/tpm 限流,防单业务把额度打爆
· 网关本身做健康检查与多副本,避免成为单点
🎉 跑通这七步,你的 Agent 就拥有了「一处配置、百家模型、自动回退」的能力,后续接入新模型只是往 config 加一行。

常见问题速查

现象原因与解决
401 鉴权失败真实 Key 未设置或环境变量名拼错
回退没生效fallbacks 列表里模型名要与 model_name 别名一致
字段报错LiteLLM 版本差异,对照当前版官方文档
延迟变高网关多一跳网络,属正常;回退链过长会叠加