大型语言模型供应商的快速增长为开发者带来了新的挑战:每个供应商都有自己的 API 格式、认证方法、定价模型和功能集。与多个供应商集成——甚至是在它们之间切换——传统上需要重写大量的集成代码。LiteLLM 通过提供一个统一的、OpenAI 兼容的接口来解决这个问题,该接口可与超过 100 个 LLM 供应商协同工作。
由 BerriAI 开发,LiteLLM 已成为 AI 基础设施生态系统中最广泛采用的工具之一。它扮演双重角色:作为程序化访问的轻量级 Python SDK,以及作为可部署为团队和组织中央路由层的代理服务器(AI 网关)。
该项目的增长令人瞩目,这得益于一个实际情况:大多数生产级 AI 系统需要与多个 LLM 供应商交互——无论是为了冗余、成本优化,还是访问特定模型的能力。LiteLLM 将这种多供应商的复杂性简化为单一、一致的 API 调用。
LiteLLM 的统一 API 模型是如何工作的?
LiteLLM 的核心抽象概念出奇地简单:它提供一个单一的 completion() 函数,该函数接受一组标准化的参数并返回一个标准化的响应对象,无论哪个底层供应商处理请求。
graph LR
A[你的应用程序] --> B[LiteLLM SDK / 代理]
B --> C[OpenAI]
B --> D[Anthropic]
B --> E[Google Gemini]
B --> F[Mistral / Together]
B --> G[通过 Ollama/vLLM/TGI<br>的开源模型]
B --> H[通过 OpenRouter / Bedrock<br>的 70+ 个供应商]
C --> I[标准化响应]
D --> I
E --> I
F --> I
G --> I
H --> I
from litellm import completion
# 相同的函数,不同的模型——只需更改字符串
response = completion(
model="claude-3-5-sonnet-20241022",
messages=[{"role": "user", "content": "Hello!"}]
)
# 或:model="gpt-4o"
# 或:model="gemini/gemini-1.5-pro"
# 或:model="mistral/mistral-large-latest"
# 或:model="ollama/llama3"
print(response.choices[0].message.content)
在底层,LiteLLM 处理供应商特定的认证、请求格式化、流式传输(SSE)、错误处理和重试、token 计数,以及响应标准化。响应对象始终遵循 OpenAI 格式,使得在不更改应用程序代码的情况下切换供应商变得轻而易举。
LiteLLM 支持哪些供应商和模型?
LiteLLM 的供应商支持是任何集成库中最广泛的之一,涵盖云 API、托管服务和自托管模型服务器。
| 供应商类别 | 供应商 | 示例模型 | 集成方式 |
|---|---|---|---|
| 主要云服务 | OpenAI、Anthropic、Google、Cohere | GPT-4o、Claude 3.5 Sonnet、Gemini 1.5 Pro、Command R+ | 直接 API 密钥 |
| 托管 AI | Together AI、Fireworks、Groq、Perplexity | Llama 3 70B、Mixtral 8x22B、DeepSeek R1 | API 密钥 |
| 聚合器 | OpenRouter、AWS Bedrock、GCP Vertex AI | 通过单一密钥访问 200+ 模型 | 供应商 SDK |
| 开源服务器 | Ollama、vLLM、TGI、LMI | 任何开放权重模型 | 本地端点 |
| 企业 | Azure OpenAI、Watsonx、SageMaker | GPT-4o (Azure)、Llama (Watsonx) | 云特定认证 |
列表随着新供应商进入市场而不断增长。LiteLLM 的社区积极贡献供应商实现,而 BerriAI 团队则维护与每个供应商不断演进的 API 的兼容性。
LiteLLM 代理(AI 网关)提供哪些功能?
除了 SDK 之外,LiteLLM 的代理模式是一个功能完整的 AI 网关,可以部署为组织中所有 LLM 使用的中央路由和管理层。
| 功能 | 描述 | 效益 |
|---|---|---|
| OpenAI 兼容 API | /v1/chat/completions、/v1/embeddings | 可无缝替代 OpenAI SDK |
| 负载均衡 | 跨模型/密钥/供应商分配请求 | 成本优化、冗余 |
| 速率限制 | 每个用户、密钥、模型的速率限制 | 成本控制、防止滥用 |
| 成本追踪 | 每次请求的成本记录与预算警报 | 支出可见性、费用分摊 |
| 缓存 | 重复查询的语义缓存 | 降低延迟、节省成本 |
| 日志记录 | 详细的请求/响应日志记录至数据库 | 审计、调试 |
| 护栏 | LLM 调用前后的内容过滤 | 安全、合规 |
| 密钥管理 | 具有使用限制的虚拟密钥 | 团队管理 |
代理可以以 Docker 容器或 Kubernetes 服务的形式部署,使其易于集成到现有基础设施中。许多组织将其部署为所有 LLM 调用的唯一入口点,无需修改应用程序代码即可实现集中治理。
# 启动 LiteLLM 代理
docker run -p 4000:4000 \
-e OPENAI_API_KEY=$OPENAI_API_KEY \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
ghcr.io/berriai/litellm:main-latest \
--config ./proxy_config.yaml
# 像使用 OpenAI 一样使用它
curl http://localhost:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "claude-3-5-sonnet-20241022",
"messages": [{"role": "user", "content": "Hello!"}]
}'
公司如何在生产环境中使用 LiteLLM?
生产环境的使用模式差异很大,但常见的部署架构揭示了 LiteLLM 如何融入 AI 基础设施堆栈。
| 使用场景 | 架构 | 使用的关键功能 |
|---|---|---|
| 多供应商冗余 | SDK 故障转移 | 从主要供应商回退到次要供应商 |
| 团队成本管理 | 具有虚拟密钥的代理 | 每个团队的预算、使用仪表板 |
| 模型评估 | 用于比较模型的 SDK | 切换模型字符串、比较输出 |
| 生产 LLM 服务 | 具有负载均衡的代理 | 高可用性、缓存、速率限制 |
| 离线开发 | 具有本地模型的 SDK | 用于隐私的 Ollama/vLLM 后端 |
典型的企业部署模式是 LiteLLM 代理位于应用层和上游 LLM 供应商之间。开发者使用标准的 OpenAI SDK 与代理交互,无论哪个供应商最终处理请求,都能体验一致的 API。运维团队通过代理配置管理供应商密钥、成本限制和速率限制,无需更改应用程序。
常见问题
什么是 LiteLLM? LiteLLM 是由 BerriAI 开发的开源 Python SDK 和 AI 网关,为调用超过 100 个大型语言模型供应商提供统一的接口。它标准化不同供应商的输入和输出、支持成本追踪和预算管理、提供跨模型和密钥的负载均衡,并且可以部署为具有 OpenAI 兼容 API 的代理服务器。
LiteLLM 的统一 API 是如何工作的?
LiteLLM 在标准化输入格式和每个供应商的原生 API 之间进行转换。你指定模型名称(例如 claude-3-5-sonnet-20241022),LiteLLM 会处理认证、请求格式化、流式传输、错误处理和响应解析。这意味着你可以通过更改一个字符串参数来切换供应商。
LiteLLM 支持成本追踪和预算管理吗? 是的,LiteLLM 有内置的成本追踪功能,记录每次请求的 token 使用量和相关成本。它支持每个用户和每个密钥的支出限制、预算警报,以及超出预算时的自动请求阻止。成本数据可以导出到 Datadog、Prometheus 或自定义 webhook 等监控工具。
LiteLLM 可以部署为代理服务器吗? 是的,LiteLLM 可以部署为代理服务器,公开一个 OpenAI 兼容的 API 端点。此代理处理所有上游供应商的认证、速率限制、负载均衡、缓存和日志记录。它可以通过 Docker、Kubernetes 或直接在 VM 上部署,使其适用于团队使用和生产环境。
LiteLLM 适合生产环境使用吗? 是的,LiteLLM 已被许多公司用于生产环境。它通过跨多个 API 密钥和供应商的负载均衡支持高可用性、缓存以降低成本与延迟、速率限制以防止滥用、详细日志记录以进行审计追踪,并且在代理模式下每分钟可处理数千个请求。
延伸阅读
- LiteLLM GitHub 仓库 – 源代码、文档和社区
- LiteLLM 代理文档 – 部署指南和代理配置
- OpenAI API 参考 – LiteLLM 标准化输出格式的参考
- Docker Hub: litellm – 用于代理部署的官方 Docker 镜像