LiteLLM 基本介绍
为什么需要LiteLLM?
在AI应用开发过程中,开发者常常遇到以下痛点:
- 接口碎片化:不同厂商的API接口差异巨大,从参数命名到响应格式都不统一
- 密钥管理复杂:每个服务商都有独立的认证机制,密钥管理成为运维负担
- 多模型管理成本:更换模型提供商需要重写大量代码,项目难以灵活调整
- 安全与合规:医疗或金融场景需确保数据不经过第三方模型,需要在调用第三方模型前拦截
- 开发迭代:快速对比不同模型在业务场景中的效果,需为每个模型单独编写评测代码
- 系统稳定性:动态路由与负载均衡,容灾与故障转移,智能重试与限流
项目概述
LiteLLM 是一个开源工具,LiteLLM通过提供统一的OpenAI兼容接口,作为 LLM API 的通用适配器,简化大型语言模型(LLM)的集成与管理,允许开发人员通过标准化接口与各种大模型进行交互。该项目支持目前市面上大多数LLM提供商,包括 Anthropic、AWS Bedrock、AWS SageMaker、Azure OpenAI、deepseek、Google Vertex AI、OpenAI等等,除了云端产品,还支持本地化部署工具,如Ollama等。
除了统一接口之外,还实现了成本跟踪、访问控制和 API 调用的实时监控等功能。该项目核心目标是是简化多 LLM 应用的开发,提高平台团队管理多提供商的效率。目前,LiteLLM 集成了100多个LLM的访问、费用跟踪和回退。
使用LiteLLM,可为开发团队节省时间和精力。开发者无需自定义集成每个新的模型 API ,或等待特定提供商发布SDK。
核心功能
-
标准化API接口
- 统一调用格式:无论底层模型如何,所有请求均使用相同结构(如OpenAI格式),降低代码适配成本。
- 示例:调用GPT-4与Claude 2均通过
litellm.completion(model="模型名", messages=[...])实现。
-
多模型支持
- 覆盖主流LLM:支持包括OpenAI、Anthropic、Google Vertex AI、Hugging Face、Cohere等20+模型,持续扩展中。
- 自定义模型接入:通过配置可接入私有化部署模型或小众API。
-
智能路由与负载均衡
- 路由策略:根据模型类型、可用性、成本或时延自动选择最优服务节点。
- 故障转移:当某模型服务不可用时,自动切换至备用模型,确保业务连续性。
-
缓存与成本优化
- 请求缓存:对重复查询结果缓存,减少API调用次数。
- 用量统计:实时监控各模型Token消耗,生成成本报告,支持预算告警。
-
监控与日志
- 性能指标:记录响应时间、错误率、Token用量等关键指标。
- 审计日志:追踪所有请求详情,便于调试与合规审查。
-
安全增强
- API密钥管理:集中存储加密密钥,避免硬编码泄露风险。
- 访问控制:支持基于角色的权限管理(RBAC),限制敏感操作。
技术架构
LiteLLM采用模块化设计,关键组件包括:
- API网关:接收请求并转发至适配器,处理认证、限流等。
- 模型适配器:将统一API转换为各LLM原生接口(如将OpenAI格式转为Anthropic的HTTP参数)。
- 路由引擎:动态决策模型调用路径,支持自定义规则(如“优先使用成本低于$0.01/1k Tokens的模型”)。
- 缓存层:基于Redis或内存存储高频查询结果。
- 监控代理:集成Prometheus、Grafana等工具,提供可视化看板。
典型应用场景
-
多模型A/B测试
- 同时向GPT-4和Claude 2发送请求,比较生成质量,辅助模型选型。
-
混合云LLM调度
- 结合公有云API(如OpenAI)与本地部署模型(如Llama 2),根据数据敏感性自动路由。
-
成本敏感型应用
- 配置路由策略,在非关键任务中使用低价模型(如GPT-3.5),关键任务切换至高成本模型(如GPT-4)。
-
容灾备份
- 当Qwen模型调用服务出现故障时,自动将请求转发至deepseek模型调用服务,避免服务中断。
优势对比
| 特性 | 原生多模型开发 | 使用LiteLLM |
|---|---|---|
| 代码复杂度 | 需为每个模型编写适配层 | 统一API,代码复用率高 |
| 维护成本 | 需跟踪各API更新 | 自动处理接口变更 |
| 故障恢复 | 手动实现重试逻辑 | 内置智能故障转移 |
| 成本优化 | 需自行统计与分析 | 提供用量仪表盘 |
总结
LiteLLM通过抽象化底层LLM的复杂性,显著降低了多模型应用的开发门槛。其核心价值在于:
- 开发者友好:减少70%以上的模型集成代码量。
- 企业级管控:提供从成本控制到安全审计的全生命周期管理。
- 生态兼容性:无缝对接现有MLOps工具链(如MLflow、Weights & Biases)。
随着LLM技术的快速演进,LiteLLM正成为构建稳健、可扩展AI应用的关键基础设施。
LiteLLM 两种使用方式介绍
LiteLLM有两种使用方式:
- Python SDK:在 Python 代码中使用 LiteLLM,通常由构建 llm 项目的开发人员使用。
- Proxy Server:需要中央服务(LLM 网关)访问多个 LLM,通常由 Gen AI 支持/ML 平台团队使用。
LiteLLM Proxy Server vs. Python SDK:核心区别详解
定位与架构差异
| 维度 | LiteLLM Python SDK | LiteLLM Proxy Server |
|---|---|---|
| 本质 | 轻量级Python客户端库 | 独立部署的API网关服务 |
| 运行方式 | 嵌入应用代码中(如Django/Flask/fastapi) | 独立进程(Docker/K8s部署) |
| 通信协议 | 函数调用(Python进程内) | HTTP REST API(跨语言调用) |
| 依赖 | 需Python环境 | 需要单独部署(任何HTTP客户端可访问,无语言限制) |
一、LiteLLM Python SDK
核心特征
- 本地集成:作为Python包直接安装(
pip install litellm) - 开发者友好:面向Python开发者,提供同步/异步API
- 无服务依赖:无需额外基础设施
典型使用场景
-
单应用快速集成
import litellm # 单库集成所有功能 # 直接调用模型 response = litellm.completion(model="gpt-4", messages=[...]) -
脚本/实验环境
# Jupyter Notebook中快速测试模型 import litellm model_list = litellm.model_list # 查看支持模型 print(len(model_list)) # 791 -
与其他Python库协同
# 安装 langchain-litellm 依赖 !pip install -qU langchain-litellm # 无缝接入LangChain from langchain_litellm import ChatLiteLLM llm = ChatLiteLLM(model="gpt-4.1-nano", temperature=0.1)
二、LiteLLM Proxy Server
使用docker部署
docker run \
-v $(pwd)/litellm_config.yaml:/app/config.yaml \
-e AZURE_API_KEY=d6*********** \
-e AZURE_API_BASE=https://openai-***********/ \
-p 4000:4000 \
ghcr.io/berriai/litellm:main-latest \
--config /app/config.yaml --detailed_debug
核心功能
- 中心化网关:独立服务,通过HTTP暴露统一API
- 企业级功能:
- 多租户管理(团队/项目隔离)
- 集中式监控面板
- 全局速率限制
- 成本跟踪
典型使用场景
-
多语言架构
使用 javascript 调用
// 前端JS直接调用 fetch("http://llm-gateway.company.com/completions", { method: "POST", headers: { "Authorization": "Bearer team-123", "Content-Type": "application/json" }, body: JSON.stringify({ model: "gpt-4", messages: [{role: "user", content: "Hello"}] }) })使用 curl 调用
curl -X POST 'http://0.0.0.0:4000/chat/completions' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer sk-1234' \ -d '{ "model": "gpt-4o", "messages": [ { "role": "system", "content": "You are an LLM named gpt-4o" }, { "role": "user", "content": "what is your name?" } ] }'使用 openai 兼容接口调用
import openai # openai v1.0.0+ client = openai.OpenAI(api_key="anything",base_url="http://0.0.0.0:4000") # set proxy to base_url messages = [{ "role": "user", "content": "this is a test request, write a short poem" }] # request sent to model set on litellm proxy, `litellm --model` response = client.chat.completions.create(model="gpt-3.5-turbo", messages=messages ) print(response)
三、核心能力对比
| 功能 | Python SDK | Proxy Server |
|---|---|---|
| 多模型调用 | ✅ 支持 | ✅ 支持 |
| 负载均衡 | ✅ 基础路由策略 | ✅ 高级算法(一致性哈希/权重轮询) |
| 成本跟踪 | ✅ 单进程级统计 | ✅ 多团队细粒度分析 |
| 密钥管理 | ❌ 需自行实现加密 | ✅ 集中存储(Vault集成) |
| 访问控制 | ❌ 无 | ✅ RBAC/团队隔离 |
| 全局速率限制 | ❌ 仅单进程有效 | ✅ 集群级控制 |
| 审计日志 | ✅ 基础日志 | ✅ 结构化日志(ElasticSearch集成) |
| 服务发现 | ❌ 无 | ✅ 健康检查+自动故障转移 |
四、如何选择?
选择 Python SDK :
- 构建纯Python应用(如AI助手脚本)
- 需要极简原型验证(POC阶段)
- 无多团队/多语言集成需求
选择 Proxy Server :
- 企业生产环境部署
- 需要支持Java/Go/Node.js等多语言客户端
- 要求团队隔离与SLA保障
- 已有Prometheus/Grafana监控栈
五、协同使用方案
graph LR
A[Python应用] -->|直接调用| B(Python SDK)
C[Java应用] -->|HTTP| D(Proxy Server)
E[Node.js应用] -->|HTTP| D
D -->|路由请求| F[OpenAI]
D -->|路由请求| G[Anthropic]
D -->|路由请求| H[本地模型]
B -->|绕过网关直连| F
B -->|绕过网关直连| G
最佳实践:
- 开发环境用SDK快速迭代
- 生产环境通过Proxy统一管理
- SDK应用可逐步迁移至Proxy
参考文档