BerriAI / litellm

BerriAI/litellm

open_in_new前往仓库

最快的轻量级AI网关,Rust核心与Python SDK。以OpenAI(或原生)格式调用100多个LLM API,支持成本追踪、护栏、负载均衡和日志记录(支持Bedrock、Azure、OpenAI、Anthropic、VertexAI、vLLM、Nvidia NIM等)。

项目概览

项目概述

LiteLLM 是一个开源 AI 网关,提供统一的接口来调用 100+ 个 LLM 提供商(如 OpenAI、Anthropic、Gemini、Bedrock、Azure 等),支持 OpenAI 格式。它既可以作为 Python SDK 直接集成,也可以作为集中式 AI 网关(代理服务器)部署,供团队或组织使用。项目采用 Rust 核心与 Python SDK,强调高性能(P95 延迟 8ms @ 1k RPS)和企业级特性。

核心功能

  • 统一 API:一个接口调用 100+ LLM,支持 /chat/completions、/responses、/embeddings、/images、/audio、/batches、/rerank、/a2a、/messages 等端点。
  • OpenAI 兼容:可无缝切换提供商,无需重写代码。
  • AI 网关(代理服务器):提供虚拟密钥、成本追踪、护栏、负载均衡、管理仪表盘等生产级功能。
  • A2A 智能体支持:支持调用 A2A 协议智能体(如 LangGraph、Vertex AI Agent Engine 等)。
  • MCP 网关:连接 MCP 服务器到任意 LLM,支持通过 /chat/completions 调用 MCP 工具。
  • Python SDK:直接集成到代码中,支持 Router 重试/回退、负载均衡、成本追踪、可观测性回调。
  • 多提供商支持:涵盖 Bedrock、Azure、OpenAI、Anthropic、VertexAI、vLLM、Nvidia NIM 等。

适用与不适用场景

适用场景:

  • 需要统一管理多个 LLM 提供商的企业或团队。
  • 希望以 OpenAI 格式调用不同模型,降低迁移成本。
  • 需要集中式 API 网关,实现认证、成本控制、负载均衡和日志记录。
  • 构建智能体或 MCP 工具,需要统一接入层。

不适用场景:

  • 仅使用单一 LLM 提供商且无扩展需求的小型项目(可能引入额外复杂度)。
  • 需要完全离线、无外部依赖的推理场景(LiteLLM 本身是网关,不提供模型推理)。
  • 对延迟极度敏感且无法接受网关额外跳转的场景(尽管延迟很低,但仍有开销)。

技术架构与依赖

  • 核心语言:Rust(核心)与 Python(SDK)。
  • 主要依赖:Python SDK 依赖 openai、anthropic 等客户端库;代理服务器依赖 FastAPI、Prisma(数据库 ORM)、Redis 等。
  • 部署组件:支持 Docker、Helm、Terraform(AWS/GCP)等。
  • 数据库:PostgreSQL(生产环境推荐)、Redis(缓存)。
  • 前端:管理仪表盘基于 React(ui/litellm-dashboard)。
  • 签名验证:Docker 镜像使用 cosign 签名。

安装与快速开始

Python SDK 安装

uv add litellm

快速开始(Python SDK)

from litellm import completion
import os

os.environ["OPENAI_API_KEY"] = "your-openai-key"

response = completion(model="openai/gpt-4o", messages=[{"role": "user", "content": "Hello!"}])

AI 网关(代理服务器)安装与启动

uv tool install 'litellm[proxy]'
litellm --model gpt-4o

然后使用 OpenAI 客户端调用:

import openai

client = openai.OpenAI(api_key="anything", base_url="http://0.0.0.0:4000")
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Hello!"}]
)

Docker 部署

仓库资料未提供具体的 Docker 运行命令,但提供了 Dockerfile(如 docker/Dockerfile.non_root)和镜像签名验证方法。

典型使用方法

调用 A2A 智能体(Python SDK)

from litellm.a2a_protocol import A2AClient
from a2a.types import SendMessageRequest, MessageSendParams
from uuid import uuid4

client = A2AClient(base_url="http://localhost:10001")

request = SendMessageRequest(
    id=str(uuid4()),
    params=MessageSendParams(
        message={
            "role": "user",
            "parts": [{"kind": "text", "text": "Hello!"}],
            "messageId": uuid4().hex,
        }
    )
)
response = await client.send_message(request)

通过网关调用 MCP 工具

curl -X POST 'http://0.0.0.0:4000/v1/chat/completions' \
  -H 'Authorization: Bearer sk-1234' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gpt-4o",
    "messages": [{"role": "user", "content": "Summarize the latest open PR"}],
    "tools": [{
      "type": "mcp",
      "server_url": "litellm_proxy/mcp/github",
      "server_label": "github_mcp",
      "require_approval": "never"
    }]
  }'

使用 Router 进行负载均衡

仓库资料未提供具体 Router 代码示例,但文档提到支持 Router 重试/回退。

配置与部署要点

  • 环境变量:需要设置各提供商 API 密钥(如 OPENAI_API_KEY)。
  • 代理服务器配置:通过 YAML 配置文件(如 proxy_config.yaml)或环境变量配置模型、密钥、数据库等。
  • 生产部署:推荐使用 Terraform 模块(AWS/GCP)或 Helm chart,组件化部署(网关、后端、UI 分离),使用托管 Postgres + Redis + 对象存储。
  • 数据库迁移:部署时需运行 prisma migrate deploy。
  • 安全:生产环境建议配置 ACM 证书(AWS)或 DNS 域名(GCP),避免明文 HTTP。
  • 镜像签名验证:使用 cosign 验证镜像签名,推荐使用固定 commit hash 的密钥。
  • 稳定版本:使用 -stable 标签的 Docker 镜像,经过 12 小时负载测试。

限制、风险与许可证

  • 许可证:仓库许可证字段为 NOASSERTION,但 README 提到存在 LiteLLM Commercial License(企业版),开源部分可能采用 MIT 或 Apache 2.0,具体需查看仓库 LICENSE 文件(仓库资料未提供)。
  • 风险:作为网关,可能引入单点故障;依赖外部 LLM 提供商,其 API 变更可能影响兼容性;企业版功能可能受商业许可限制。
  • 限制:不支持模型推理本身;需要网络连接访问 LLM 提供商;部分高级功能(如 SSO)可能仅限企业版。

官方链接

信息来源和分析时间

  • 信息来源:GitHub 仓库 README、CONTRIBUTING.md、最新 Release 信息。
  • 分析时间:2026-08-10(基于最新 Release 发布时间)。