一、项目概述

LiteLLM 是由 BerriAI 开发的开源项目(MIT 协议,GitHub 已超过 28,000 星),核心使命是通过统一的 OpenAI 格式接口,接入 100+ 家 LLM 提供商,让开发者无需面对各厂商 API 的差异性,同时提供完整的企业级管控能力。

用一句话概括:LiteLLM = 统一 LLM 入口 + 智能路由 + 成本治理 + 可观测性。

生产用例包括 Netflix、Lemonade、Rocket Money 等企业。


二、核心架构:两大使用形态

2.1 Python SDK(嵌入式)

直接在应用代码中 pip install litellm,作为一个 Python 库运行在应用进程内。适合单体应用或快速原型。

from litellm import completion
import os

# 调用 OpenAI
response = completion(model="openai/gpt-4o",
    messages=[{"role": "user", "content": "你好"}])

# 调用 Anthropic Claude
response = completion(model="anthropic/claude-sonnet-4-20250514",
    messages=[{"role": "user", "content": "你好"}])

# 调用 Ollama 本地模型
response = completion(model="ollama/llama2",
    messages=[{"role": "user", "content": "你好"}],
    api_base="http://localhost:11434")

2.2 Proxy Server / LLM Gateway(独立网关)

以独立进程(HTTP 服务)方式运行,监听在 http://0.0.0.0:4000,所有客户端应用统一指向这个地址,LiteLLM Proxy 负责鉴权、路由、计费、日志。

应用层 (OpenAI SDK / 任意 HTTP 客户端)
       ↓ POST /v1/chat/completions
  LiteLLM Proxy (port 4000)
       ↓ 路由 / 负载均衡 / 计费
  [OpenAI] [Azure] [Qwen] [Ollama] [vLLM] ...

这是企业级部署的标准方式。LiteLLM Proxy 通常以容器(Docker、Kubernetes、AWS ECS/EKS 等)形式部署,使用 PostgreSQL 持久化配置(模型列表、密钥、预算、团队),可选用 Redis 实现分布式限速,前端可以加 Load Balancer 实现高可用。


三、SDK 与 Gateway 的核心区别

维度 Python SDK LLM Gateway (Proxy)
运行位置 应用进程内 独立微服务
共享性 单应用使用 多应用共享同一入口
鉴权管理 各应用各自持有密钥 集中统一管理密钥,应用只拿 Virtual Key
计费追踪 单应用内 跨项目/团队/用户多维度追踪
适用场景 个人开发者、快速 POC 平台团队、多部门企业
运维负担 无额外服务 需维护 Proxy 服务本身
支持语言 Python 任何语言(HTTP REST)

选择 Gateway 可以得到:集中鉴权与授权、多租户成本追踪与预算管理、Virtual Key 访问控制、管理后台 UI;选择 SDK 适合直接嵌入 Python 代码库,含 Router 重试/fallback 逻辑、应用级负载均衡。

简单判断标准:团队里有多个业务方需要使用 LLM → 用 Gateway;个人项目或单一服务 → 用 SDK。


四、快速上手

4.1 安装与启动

# 安装
pip install 'litellm[proxy]'

# 最简启动(单模型)
litellm --model gpt-4o

# 或通过配置文件启动(推荐)
litellm --config litellm_config.yaml

4.2 配置文件结构(litellm_config.yaml

model_list:
  - model_name: gpt-4o            # 对外暴露的模型名(客户端使用)
    litellm_params:
      model: openai/gpt-4o
      api_key: os.environ/OPENAI_API_KEY

  - model_name: claude-3-5-sonnet
    litellm_params:
      model: anthropic/claude-3-5-sonnet-20241022
      api_key: os.environ/ANTHROPIC_API_KEY

  - model_name: qwen-plus         # 通义千问(下面详细讲)
    litellm_params:
      model: openai/qwen-plus
      api_base: https://dashscope.aliyuncs.com/compatible-mode/v1
      api_key: os.environ/DASHSCOPE_API_KEY

router_settings:
  routing_strategy: latency-based-routing   # 路由策略

general_settings:
  master_key: sk-1234  # Admin 主密钥

4.3 Docker 部署(生产推荐)

# 拉取配置文件
curl -O https://raw.githubusercontent.com/BerriAI/litellm/main/docker-compose.yml

# 设置环境变量
echo 'LITELLM_MASTER_KEY="sk-your-master-key"' > .env
echo 'LITELLM_SALT_KEY="sk-random-hash"' >> .env
echo 'DATABASE_URL="postgresql://user:pass@host:5432/litellm"' >> .env

# 启动
docker compose up -d

也可以直接用 Docker run:

docker run \
  -v $(pwd)/litellm_config.yaml:/app/config.yaml \
  -e OPENAI_API_KEY="sk-xxx" \
  -e DATABASE_URL="postgresql://..." \
  -p 4000:4000 \
  docker.litellm.ai/berriai/litellm:main-latest \
  --config /app/config.yaml

4.4 客户端接入(任意语言)

启动后,客户端只需把 base_url 指向 Proxy:

import openai

client = openai.OpenAI(
    api_key="sk-your-virtual-key",   # LiteLLM Virtual Key
    base_url="http://localhost:4000"
)

response = client.chat.completions.create(
    model="gpt-4o",     # 对应 model_list 中的 model_name
    messages=[{"role": "user", "content": "你好"}]
)

JavaScript/TypeScript、curl、LangChain 等完全一样,换个 base_url 即可。


五、私有化部署的模型接入

这是 LiteLLM 的核心优势之一,支持所有本地/私有化模型。

5.1 Ollama(本地运行)

model_list:
  - model_name: llama3
    litellm_params:
      model: ollama/llama3
      api_base: http://localhost:11434

5.2 vLLM(高性能推理)

model_list:
  - model_name: my-llama
    litellm_params:
      model: openai/meta-llama/Meta-Llama-3-8B-Instruct
      api_base: http://vllm-server:8000/v1
      api_key: "none"  # vLLM 不需要 key

5.3 任意 OpenAI 兼容端点(最通用)

所有兼容 OpenAI 格式的私有部署(如本地部署的 Qwen、DeepSeek、百川等)都可以用 openai/ 前缀:

model_list:
  - model_name: private-deepseek
    litellm_params:
      model: openai/deepseek-chat
      api_base: http://your-private-server:8080/v1
      api_key: your-internal-key

5.4 Hugging Face TGI / SGLang / LMDeploy

model_list:
  - model_name: tgi-llama
    litellm_params:
      model: huggingface/meta-llama/Llama-3-8b-chat-hf
      api_base: http://tgi-server:8080

六、阿里云通义千问(Qwen)和通义万相配置

6.1 通义千问(Qwen Chat/文本)

阿里云百炼平台(DashScope)提供了 OpenAI 兼容接口,这是最简单的接入方式:

model_list:
  # 通义千问 Plus
  - model_name: qwen-plus
    litellm_params:
      model: openai/qwen-plus
      api_base: https://dashscope.aliyuncs.com/compatible-mode/v1
      api_key: os.environ/DASHSCOPE_API_KEY

  # 通义千问 Max(最强)
  - model_name: qwen-max
    litellm_params:
      model: openai/qwen-max
      api_base: https://dashscope.aliyuncs.com/compatible-mode/v1
      api_key: os.environ/DASHSCOPE_API_KEY

  # 通义千问 Turbo(快速低成本)
  - model_name: qwen-turbo
    litellm_params:
      model: openai/qwen-turbo
      api_base: https://dashscope.aliyuncs.com/compatible-mode/v1
      api_key: os.environ/DASHSCOPE_API_KEY

  # 本地私有化部署的 Qwen(vLLM 启动)
  - model_name: qwen-private
    litellm_params:
      model: openai/Qwen2.5-72B-Instruct
      api_base: http://your-vllm-server:8000/v1
      api_key: "none"

Python SDK 直接调用:

from litellm import completion
import os

os.environ["DASHSCOPE_API_KEY"] = "your-key"

response = completion(
    model="openai/qwen-plus",
    api_base="https://dashscope.aliyuncs.com/compatible-mode/v1",
    messages=[{"role": "user", "content": "你是谁?"}]
)

6.2 通义万相(图像生成)

通义万相目前的接入方式需要走 DashScope 原生 API(非 OpenAI 兼容),在 LiteLLM 里可以通过 custom_llm_provider 或直接用 OpenAI 格式的图像生成端点接入。

实际上最近 LiteLLM 社区已有 PR 合并了 DashScope 作为独立 provider(参考 PR #12361),因此你也可以用 dashscope/ 前缀:

model_list:
  # 文本模型走 dashscope provider
  - model_name: qwen-plus-native
    litellm_params:
      model: dashscope/qwen-plus
      api_key: os.environ/DASHSCOPE_API_KEY

  # 图像生成(通义万相)—— 走 OpenAI image generation 格式
  - model_name: wanx-image
    litellm_params:
      model: openai/wanx-v1
      api_base: https://dashscope.aliyuncs.com/compatible-mode/v1
      api_key: os.environ/DASHSCOPE_API_KEY

注意:通义万相的完整多模态能力(视频生成等)目前需要使用 DashScope 原生 SDK,LiteLLM 对其覆盖还在完善中。对于图文多模态,可用 qwen-vl-plus 等视觉模型通过标准接口接入。


七、企业前端集成方案

7.1 整体架构

前端应用 (React/Vue/Next.js)
    │
    ▼
企业 API 网关 (Nginx/Kong/APIG)
    │ Bearer Token 验证
    ▼
LiteLLM Proxy (Docker/K8s, port 4000)
    │ Virtual Key 路由
    ▼
各模型后端 (OpenAI / Qwen / 私有模型...)

旁路:
PostgreSQL (配置/计费) + Redis (限速) + Langfuse/Grafana (可观测)

7.2 Virtual Key 体系

LiteLLM 的 Virtual Key 是企业多租户管理的核心。管理员通过 API 为不同团队/项目创建独立密钥,设置各自的预算和权限:

# 创建一个给"前端团队"的 Virtual Key,月预算 $100
curl -X POST http://localhost:4000/key/generate \
  -H "Authorization: Bearer sk-master-key" \
  -H "Content-Type: application/json" \
  -d '{
    "max_budget": 100,
    "budget_duration": "monthly",
    "models": ["gpt-4o", "qwen-plus"],
    "metadata": {"team": "frontend", "project": "customer-chat"}
  }'

返回的 key(如 sk-frontend-xxxxx)就是前端调用时使用的密钥。

7.3 前端 JavaScript/TypeScript 集成示例

// utils/llm-client.ts
import OpenAI from "openai";

const llmClient = new OpenAI({
  apiKey: process.env.NEXT_PUBLIC_LITELLM_KEY,  // Virtual Key
  baseURL: process.env.NEXT_PUBLIC_LITELLM_URL, // LiteLLM Proxy URL
  dangerouslyAllowBrowser: true,  // 前端直调时需要
});

// 普通聊天
export async function chat(messages: any[]) {
  return llmClient.chat.completions.create({
    model: "gpt-4o",
    messages,
  });
}

// 流式输出(SSE)
export async function streamChat(messages: any[], onChunk: (text: string) => void) {
  const stream = await llmClient.chat.completions.create({
    model: "gpt-4o",
    messages,
    stream: true,
  });

  for await (const chunk of stream) {
    const text = chunk.choices[0]?.delta?.content || "";
    if (text) onChunk(text);
  }
}

7.4 企业安全最佳实践

不要把 Virtual Key 直接暴露给浏览器(即使是 Virtual Key 也应保护)。推荐架构:

浏览器 → 企业自有后端 (Next.js API Route / BFF) → LiteLLM Proxy

Next.js API Route 示例:

// pages/api/chat.ts
import { OpenAI } from "openai";
import { NextApiRequest, NextApiResponse } from "next";

const litellm = new OpenAI({
  apiKey: process.env.LITELLM_VIRTUAL_KEY,  // 服务端环境变量,不暴露
  baseURL: process.env.LITELLM_BASE_URL,
});

export default async function handler(req: NextApiRequest, res: NextApiResponse) {
  // 这里可以加企业自己的用户鉴权
  const userId = req.headers["x-user-id"];

  const response = await litellm.chat.completions.create({
    model: "qwen-plus",
    messages: req.body.messages,
    // 传递 user 便于追踪
    user: userId as string,
  });

  res.json(response);
}

八、高级功能

8.1 负载均衡 & Fallback

model_list:
  - model_name: smart-gpt4
    litellm_params:
      model: openai/gpt-4o
      api_key: os.environ/OPENAI_KEY_1

  - model_name: smart-gpt4
    litellm_params:
      model: azure/gpt-4o-deployment
      api_key: os.environ/AZURE_KEY
      api_base: https://your-azure.openai.azure.com/

router_settings:
  routing_strategy: latency-based-routing
  fallbacks:
    - {"smart-gpt4": ["qwen-plus"]}   # 主模型失败时切换到通义千问
  num_retries: 3
  retry_after: 5

8.2 预算与限速

general_settings:
  master_key: sk-master
  alerting:
    - slack
  alerting_thresholds:
    spend: 80  # 达到 80% 预算时告警

8.3 可观测性集成(Langfuse)

litellm_settings:
  success_callback:
    - langfuse
  failure_callback:
    - langfuse

environment_variables:
  LANGFUSE_PUBLIC_KEY: "pk-..."
  LANGFUSE_SECRET_KEY: "sk-..."
  LANGFUSE_HOST: "https://cloud.langfuse.com"

九、LiteLLM vs 竞品横向对比

LiteLLM OpenRouter Helicone Portkey OneAPI
开源/自托管 ✅ 完全开源 ❌ SaaS only ✅ 开源可托管 ✅ 部分开源 ✅ 开源
模型数量 100+ 500+ 100+ 100+ 支持自定义
性能开销 ~8ms P95 ~25-40ms ~50ms 中等
企业功能 ✅ 完整 有限 中等 ✅ 完整 中等
数据驻留 ✅ 完全自控 ❌ 数据出境 可选 可选 ✅ 自控
国内模型支持 较好 一般 一般 一般 ✅ 专长
运维成本 中(需维护)
成本 免费/企业版付费 5% markup 免费基础 $49/月起 免费

十、LiteLLM 的优势与不足

优势

1. 真正的数据主权:完全自托管,数据不离开企业内网,满足金融、医疗、政府等合规要求。

2. 统一抽象层:LiteLLM 让平台团队轻松给开发者分配 LLM 访问权限,精准追踪团队用量,自动追踪 OpenAI/Azure/Bedrock/GCP 等各厂商的费用支出。

3. 强大的路由与容灾:支持基于延迟、成本、随机、轮询、加权等多种路由规则分发请求到多个后端,某个 provider 超速或失败时自动重试其他模型,支持超时、冷却期和请求排队。

4. 性能表现:LiteLLM P95 延迟在 1k RPS 下仅 8ms。

5. 生态完整:与 LangChain、LlamaIndex、Langfuse、OpenAI JS SDK、Anthropic SDK 等主流框架无缝集成。

不足与局限

1. 运维负担:LiteLLM 的自托管特性意味着团队需要负责扩容、监控和维护,这是它与 OpenRouter 等托管服务的核心差距。

2. 大规模下的性能问题:生产团队在高规模场景下越来越多地遭遇性能降级、内存泄漏和延迟增大等问题。(Go 语言写的竞品如 Bifrost、Helicone 在极高 RPS 下表现更好。)

3. 国内模型支持还在追赶:DashScope/通义万相的完整原生支持是近期才逐步完善的,部分多模态能力还需借道 OpenAI 兼容接口。

4. 配置复杂度:LiteLLM 需要 15-30 分钟的技术配置(包括 YAML 配置文件),复杂高级功能如自定义路由算法或分布式部署门槛更高。

5. 企业版功能收费:SSO、SCIM、OIDC/JWT、高级审计日志等功能需要购买 Enterprise License,核心开源功能免费但企业级治理能力需付费。

6. Python 语言绑定(SDK 层面):Python SDK 只适合 Python 应用,其他语言只能走 Proxy HTTP,无法享受 SDK 的便捷性。


十一、未来展望

根据社区动态和行业趋势,LiteLLM 的发展方向包括:

A2A Protocol 支持:已在最新版本中添加了 A2A(Agent-to-Agent)协议客户端,为多 Agent 协作场景铺路,这与 Anthropic MCP 的生态走向高度一致。

更多国内 Provider 原生支持:DashScope(通义千问)、智谱 GLM、百度文心、字节豆包等国内模型的原生 provider 正在持续添加,而不仅依赖 OpenAI 兼容模式。

多模态全覆盖:语音、视频、图像生成等多模态路由的标准化,通义万相等图像/视频生成模型的完整支持是路线图方向。

性能优化:面对 Bifrost(Go 实现)等竞品的压力,LiteLLM 的高并发性能优化是重要课题。

Guardrails 与安全:内置 prompt injection 检测、PII 脱敏、内容安全过滤等企业安全特性。


总结:适合谁用 LiteLLM?

LiteLLM 是目前企业自托管 LLM 网关的最优选择之一,尤其适合:

  • 数据合规要求严格(金融/医疗/政府)的企业
  • 需要同时接入国内外多个模型提供商
  • 平台团队需要为多个业务团队统一分发和管控 LLM 访问权
  • 已有 OpenAI 格式的应用,想以最小改动切换或扩展到其他模型

不适合:团队没有运维能力、只需要快速接入 1-2 个模型的小型项目(用 OpenRouter 或直连 SDK 更简单)。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐