🏠 首页 攻略 一个接口调用100+大模型:LiteLLM Proxy 完整使用指南

一个接口调用100+大模型:LiteLLM Proxy 完整使用指南

想用ChatGPT、Claude、Gemini但被API格式搞烦了?LiteLLM Proxy让你用一个统一接口调用100+大模型,自动处理鉴权、限流和负载均衡。本文手把手教你搭建和使用。

你是不是也遇到过这种场景——项目里同时用了 ChatGPT 和 Claude,每次切换模型都要改一遍 API 调用代码?

更头疼的是,不同模型的参数格式还不一样。GPT 用 temperature,某些模型用 top_p,迁移成本极高。

LiteLLM Proxy 就是为了解决这个问题诞生的。它像一个万能翻译器,把你的请求统一翻译成各个模型能看懂的格式。

一、LiteLLM Proxy 能做什么

先说最核心的三个能力:

统一接口。你只需要按 OpenAI 的格式发请求,Proxy 会自动转发给 GPT、Claude、Gemini、Llama 等 100+ 模型。代码一行不用改。

智能路由。你可以配置权重,让 70% 的请求走便宜模型,30% 走高性能模型。模型挂了自动切换备用,不会让你的服务中断。

成本控制。每个模型设置每日预算上限,超了就拒绝新请求。再也不用担心账单爆炸。

二、5 分钟搭建 LiteLLM Proxy

安装非常简单,一条命令搞定:

pip install litellm[proxy]

接下来创建一个 config.yaml 配置文件:

model_list:
  - model_name: gpt-4o
    litellm_params:
      model: openai/gpt-4o
      api_key: YOUR_OPENAI_KEY
  - model_name: claude-opus
    litellm_params:
      model: anthropic/claude-opus-4-20250514
      api_key: YOUR_ANTHROPIC_KEY
  - model_name: gemini-pro
    litellm_params:
      model: gemini/gemini-2.0-flash
      api_key: YOUR_GOOGLE_KEY

router_settings:
  routing_strategy: usage-based-v2

启动服务:

litellm --config config.yaml --port 4000

看到 LiteLLM Proxy running on http://0.0.0.0:4000 就成功了。

三、用统一接口调用任意模型

现在你的服务地址是 http://localhost:4000。调用方式和 OpenAI 完全一致:

from openai import OpenAI

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

# 调用 GPT-4o
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "解释量子计算"}]
)

# 调用 Claude(代码不用改)
response = client.chat.completions.create(
    model="claude-opus",
    messages=[{"role": "user", "content": "解释量子计算"}]
)

# 调用 Gemini
response = client.chat.completions.create(
    model="gemini-pro",
    messages=[{"role": "user", "content": "解释量子计算"}]
)

看明白了吗?同一个客户端对象,换一下 model 参数就能切模型。所有代码逻辑都不用动。

四、高级用法:负载均衡和故障转移

多模型负载均衡

想让多个模型分担流量?在 config.yaml 里这样配:

model_list:
  - model_name: cheap-model
    litellm_params:
      model: azure/gpt-35-turbo
      api_key: KEY1
  - model_name: cheap-model
    litellm_params:
      model: vertex_ai/chat-bison
      api_key: KEY2

两个模型同名,Proxy 会自动轮流分配请求。省钱的秘诀。

故障自动转移

如果主模型响应超时或报错,Proxy 会自动切换到备用模型:

model_list:
  - model_name: primary-model
    litellm_params:
      model: openai/gpt-4o
      api_key: YOUR_KEY
      max_retries: 3
  - model_name: fallback-model
    litellm_params:
      model: anthropic/claude-sonnet-4-20250514
      api_key: YOUR_KEY
      num_retries: 3

router_settings:
  retry_policy: "retry-on-server-error"
  allowed_fails: 5
  fail_timeout: 60

配置了 allowed_fails 后,主模型连续失败 5 次,Proxy 会自动把后续请求全部切到备用模型。60 秒后恢复探测。

五、监控面板和成本统计

LiteLLM Proxy 自带一个 Web 管理界面,访问 http://localhost:4000 就能看到:

  • 每个模型的调用次数和延迟
  • 实时 Token 消耗统计
  • 错误率监控
  • 各模型的响应时间分布

你也可以通过 API 查询详细日志:

curl http://localhost:4000/health
curl http://localhost:4000/ping

配合 Grafana + Prometheus 做长期监控也很方便。LiteLLM 内置了 Prometheus metrics 端点,加一行配置就行:

litellm_settings:
  telemetry: false
  set_metrics_provider: "prometheus"

六、生产环境部署建议

Docker 一键部署

FROM python:3.11-slim
RUN pip install litellm[proxy]
COPY config.yaml /app/config.yaml
WORKDIR /app
CMD ["litellm", "--config", "config.yaml", "--port", "4000"]
docker build -t litellm-proxy .
docker run -p 4000:4000 litellm-proxy

安全加固

生产环境一定要做这些:

  1. 设置 API Key 白名单。在 config.yaml 里配置 general_settings.default_api_key
  2. 启用 HTTPS。用 Nginx 反代,加 Let’s Encrypt 证书
  3. 限制并发数。配置 max_concurrent_requests 防止过载
  4. 定期轮换密钥。所有 API Key 存在环境变量里,不要硬编码

关键配置清单

general_settings:
  master_key: sk-master-key-change-this
  proxy_budget_refresh_min_seconds: 60

model_list:
  - model_name: gpt-4o
    litellm_params:
      model: openai/gpt-4o
      api_key: ${OPENAI_API_KEY}
      min_latency: 0.5
      max_latency: 10.0
      max_requests_per_minute: 100

七、LiteLLM 适合什么场景

团队多人共用 API Key。把 Key 存在 Proxy 上,团队成员只拿 Proxy 地址,不用各自存 Key。

模型对比测试。同一批 prompt 同时发给 GPT、Claude、Gemini,直接比输出质量。

灰度发布。新版本 prompt 先走 10% 的流量到新模型,效果不好随时切回来。

成本优化。简单任务走便宜模型,复杂任务走高配模型,自动分流。

总结

LiteLLM Proxy 解决了一个很实际的问题——多模型调用的碎片化。搭好之后,你的代码不需要因为换模型而改动一行。

它的优势很明显:统一接口、智能路由、成本可控、自带监控。对于任何需要接入多个 LLM 的团队来说,值得花 10 分钟搭建试试。

你现在用的是哪个模型?有没有被 API 格式差异折磨过?