LiteLLM:一个 AI 网关打通 100+ 大模型

知识点总结

摘要

LiteLLM 是一个开源 AI Gateway,把 OpenAI、Anthropic、Gemini、Bedrock、Azure 等 100+ 大模型供应商统一成一套 OpenAI 格式的接口——换供应商不用重写代码,一行代码切换模型。既可以当 Python SDK 直接嵌进代码里用,也可以部署成独立的代理服务(AI Gateway)给团队统一管理密钥、限流和计费,1000 RPS 下 P95 延迟只有 8ms,Stripe、Netflix 等公司都在生产环境用。

核心优势

  • 一套接口打通所有供应商:不用为每个厂商单独学一套 SDK、认证方式和报错格式,/chat/completions/embeddings/images/audio 等接口全部统一成 OpenAI 格式
  • 换模型不用改代码:Proxy 模式下客户端代码完全不变,只需要把 base_url 指向本地网关,模型名一换就切换到不同供应商
  • 生产级网关能力开箱即用:虚拟密钥(Virtual Keys)、按项目/用户的用量计费、限流、护栏(Guardrails)、负载均衡、管理后台 UI,这些企业级功能不需要自己再搭一遍
  • 不止大模型,还打通 Agent 和 MCP:内置 A2A 协议网关(转发到 LangGraph、Vertex AI Agent Engine、Bedrock AgentCore 等)、MCP 网关(把任意 MCP Server 挂载成可被大模型直接调用的工具)
  • 两种落地形态自由选:Python SDK 适合直接嵌入代码做路由/重试/降级;Proxy Server 适合团队统一托管、做集中式密钥和成本管理
  • 官方 Terraform 模块:AWS(ECS Fargate + Aurora + ElastiCache)和 GCP(Cloud Run + Cloud SQL + Memorystore)都有现成的生产级componentized 部署方案,网关/后端/UI 独立成服务

面向人群

  • 需要接入多个大模型供应商、厌倦了为每家单独写适配代码的开发者
  • 负责公司内部 LLM 网关、需要统一管理密钥和成本的 Gen AI Enablement / ML Platform 团队
  • 想给已有的 OpenAI 代码加上多模型容灾/降级能力,又不想大改代码结构的团队
  • 需要把 A2A Agent 或 MCP Server 暴露给下游应用统一调用的团队

快速上手

方式一:Python SDK(直接在代码里用):

uv add litellm
from litellm import completion
import os

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

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

# Anthropic —— 只换了 model 参数,其他代码完全不变
response = completion(model="anthropic/claude-sonnet-4-20250514", messages=[{"role": "user", "content": "Hello!"}])

方式二:AI Gateway(Proxy Server)(团队统一托管,客户端代码保持 OpenAI SDK 不变):

uv tool install 'litellm[proxy]'
litellm --model gpt-4o
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!"}]
)

两种方式的选择很直接:Python SDK 适合直接嵌入自己的代码库;Proxy Server 适合作为团队/组织的中心化服务,统一做鉴权、多租户计费和管理后台。

进阶用法

MCP 网关——把任意 MCP Server 挂到网关上,大模型可以直接调用其中的工具:

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"
    }]
  }'

也可以直接在 Cursor 这类支持 MCP 的 IDE 里把 LiteLLM 网关配成 MCP Server:

{
  "mcpServers": {
    "LiteLLM": {
      "url": "http://localhost:4000/mcp/",
      "headers": {
        "x-litellm-api-key": "Bearer sk-1234"
      }
    }
  }
}

A2A Agent 网关——把已有的 Agent(LangGraph、Vertex AI Agent Engine、Bedrock AgentCore 等)挂载到网关后,用统一的 A2A SDK 调用:

import httpx
from a2a.client import A2ACardResolver, ClientConfig, ClientFactory
from a2a.types import Message, Part, Role, SendMessageRequest
from uuid import uuid4

base_url = "http://localhost:4000/a2a/my-agent"  # LiteLLM 网关 + Agent 名称
headers = {"Authorization": "Bearer sk-1234"}    # LiteLLM 虚拟密钥

async with httpx.AsyncClient(headers=headers, timeout=60.0) as http_client:
    resolver = A2ACardResolver(httpx_client=http_client, base_url=base_url)
    agent_card = await resolver.get_agent_card()
    client = ClientFactory(ClientConfig(httpx_client=http_client)).create(agent_card)
    request = SendMessageRequest(
        message=Message(message_id=uuid4().hex, role=Role.ROLE_USER, parts=[Part(text="Hello!")])
    )
    async for event in client.send_message(request):
        print(event)

生产级部署:官方维护的 AWS/GCP Terraform 模块可以一键拉起完整的componentized 生产架构(网关、后端、UI 拆成独立服务,配好 Postgres + Redis + 对象存储):

git clone https://github.com/BerriAI/litellm.git
cd litellm/terraform/litellm/aws/examples/default
cp terraform.tfvars.example terraform.tfvars
terraform init && terraform apply

对安全性有要求的团队还可以验证 Docker 镜像签名(cosign 签名,绑定固定 commit hash):

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
  ghcr.io/berriai/litellm:<release-tag>
posted @ 2026-07-12 08:46  RobinDevNotes  阅读(24)  评论(0)    收藏  举报