入门
LiteLLM 是一个开源库,它为你提供了一个单一、统一的接口来调用 100 多种大语言模型(LLM)——包括 OpenAI、Anthropic、Vertex AI、Bedrock 等——且均使用 OpenAI 格式。
- 使用相同的
completion()接口调用任何提供商的模型 —— 无需为每个模型重新学习 API - 无论使用哪种提供商或模型,输出格式保持一致
- 通过 Router(路由)在多个部署之间实现内置的重试/回退逻辑
- 自托管 LLM 网关(代理),支持虚拟密钥、成本跟踪和管理 UI
安装
uv add litellm
运行完整的代理服务器(LLM 网关)
uv tool install 'litellm[proxy]'
快速入门
使用你选择的提供商进行首次 LLM 调用
- OpenAI
- Anthropic
- Vertex AI
- Bedrock
- Ollama
- Azure OpenAI
from litellm import completion
import os
os.environ["OPENAI_API_KEY"] = "your-api-key"
response = completion(
model="openai/gpt-4o",
messages=[{"role": "user", "content": "Hello, how are you?"}]
)
print(response.choices[0].message.content)
from litellm import completion
import os
os.environ["ANTHROPIC_API_KEY"] = "your-api-key"
response = completion(
model="anthropic/claude-3-5-sonnet-20241022",
messages=[{"role": "user", "content": "Hello, how are you?"}]
)
print(response.choices[0].message.content)
from litellm import completion
import os
# auth: run 'gcloud auth application-default login'
os.environ["VERTEXAI_PROJECT"] = "your-project-id"
os.environ["VERTEXAI_LOCATION"] = "us-central1"
response = completion(
model="vertex_ai/gemini-1.5-pro",
messages=[{"role": "user", "content": "Hello, how are you?"}]
)
print(response.choices[0].message.content)
from litellm import completion
import os
os.environ["AWS_ACCESS_KEY_ID"] = "your-key"
os.environ["AWS_SECRET_ACCESS_KEY"] = "your-secret"
os.environ["AWS_REGION_NAME"] = "us-east-1"
response = completion(
model="bedrock/anthropic.claude-haiku-4-5-20251001:0",
messages=[{"role": "user", "content": "Hello, how are you?"}]
)
print(response.choices[0].message.content)
from litellm import completion
response = completion(
model="ollama/llama3",
messages=[{"role": "user", "content": "Hello, how are you?"}],
api_base="https://:11434"
)
print(response.choices[0].message.content)
from litellm import completion
import os
os.environ["AZURE_API_KEY"] = "your-key"
os.environ["AZURE_API_BASE"] = "https://your-resource.openai.azure.com"
os.environ["AZURE_API_VERSION"] = "2024-02-01"
response = completion(
model="azure/your-deployment-name",
messages=[{"role": "user", "content": "Hello, how are you?"}]
)
print(response.choices[0].message.content)
无论提供商是谁,每个响应都遵循 OpenAI Chat Completions 格式。✅
响应格式
非流式响应返回一个 ModelResponse 对象
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1677858242,
"model": "gpt-4o",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! I'm doing well, thanks for asking."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 13,
"completion_tokens": 12,
"total_tokens": 25
}
}
流式响应(stream=True)会产生 ModelResponseStream 数据块
{
"id": "chatcmpl-abc123",
"object": "chat.completion.chunk",
"created": 1677858242,
"model": "gpt-4o",
"choices": [
{
"index": 0,
"delta": {
"role": "assistant",
"content": "Hello"
},
"finish_reason": null
}
]
}
刚接触 LiteLLM?
想快速上手? 前往教程获取分步指南 —— 包括 AI 编码工具、代理 SDK、代理服务器设置等。
需要了解特定功能? 查看指南以获取关于流式传输、函数调用、提示词缓存和其他操作的说明。
选择你的路径
- completion()、embedding()、image_generation() 等
- 支持重试、回退和负载均衡的 Router
- 跨所有提供商的 OpenAI 兼容异常处理
- 可观测性回调(Langfuse、MLflow、Helicone 等)
- 支持虚拟密钥,可为每个密钥/团队/用户设置预算
- 集中式日志记录、护栏和缓存
- 用于监控和管理的管理 UI
- 任何 OpenAI 兼容客户端的直接替代品
LiteLLM Python SDK
流式传输
添加 stream=True 以在数据块生成时接收它们
from litellm import completion
import os
os.environ["OPENAI_API_KEY"] = "your-api-key"
for chunk in completion(
model="openai/gpt-4o",
messages=[{"role": "user", "content": "Write a short poem"}],
stream=True,
):
print(chunk.choices[0].delta.content or "", end="")
异常处理
LiteLLM 会将每个提供商的错误映射为 OpenAI 异常类型 —— 你现有的错误处理代码可以直接使用
import litellm
try:
litellm.completion(
model="anthropic/claude-instant-1",
messages=[{"role": "user", "content": "Hey!"}]
)
except litellm.AuthenticationError as e:
print(f"Bad API key: {e}")
except litellm.RateLimitError as e:
print(f"Rate limited: {e}")
except litellm.APIError as e:
print(f"API error: {e}")
日志记录与可观测性
仅需一行代码即可将输入/输出发送到 Langfuse、MLflow、Helicone、Lunary 等平台
import litellm
litellm.success_callback = ["langfuse", "mlflow", "helicone"]
response = litellm.completion(
model="gpt-4o",
messages=[{"role": "user", "content": "Hi!"}]
)
跟踪成本与使用情况
使用回调来捕获每次响应的成本
import litellm
def track_cost(kwargs, completion_response, start_time, end_time):
print("Cost:", kwargs.get("response_cost", 0))
litellm.success_callback = [track_cost]
litellm.completion(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello!"}],
stream=True
)
LiteLLM 代理服务器(LLM 网关)
代理服务器是一个自托管的、兼容 OpenAI 的网关。任何适用于 OpenAI 的客户端都可以与该代理配合使用 —— 无需修改代码。
第一步 —— 启动代理
- LiteLLM CLI
- Docker
litellm --model huggingface/bigcode/starcoder
# Proxy running on http://0.0.0.0:4000
model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: azure/your-deployment
api_base: os.environ/AZURE_API_BASE
api_key: os.environ/AZURE_API_KEY
api_version: "2023-07-01-preview"
docker run \
-v $(pwd)/litellm_config.yaml:/app/config.yaml \
-e AZURE_API_KEY=your-key \
-e AZURE_API_BASE=https://your-resource.openai.azure.com/ \
-p 4000:4000 \
docker.litellm.ai/berriai/litellm:main-latest \
--config /app/config.yaml --detailed_debug
第二步 —— 使用 OpenAI 客户端进行调用
import openai
client = openai.OpenAI(api_key="anything", base_url="http://0.0.0.0:4000")
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "Write a short poem"}]
)
print(response.choices[0].message.content)
使用 /utils/transform_request 精确检查 LiteLLM 发送给任何提供商的内容 —— 这对于调试提示词格式、Header 问题和特定提供商的参数非常有用。
代理与 MCP 网关
LiteLLM 是一个用于 LLM、代理 (Agents) 和 MCP 的统一网关 —— 你不需要单独的代理或 MCP 网关。一个端点即可对接 100 多种模型、A2A 代理和 MCP 工具。