跳至主要内容

入门

LiteLLM 是一个开源库,它为你提供了一个单一、统一的接口来调用 100 多种大语言模型(LLM)——包括 OpenAI、Anthropic、Vertex AI、Bedrock 等——且均使用 OpenAI 格式。

  • 使用相同的 completion() 接口调用任何提供商的模型 —— 无需为每个模型重新学习 API
  • 无论使用哪种提供商或模型,输出格式保持一致
  • 通过 Router(路由)在多个部署之间实现内置的重试/回退逻辑
  • 自托管 LLM 网关(代理),支持虚拟密钥、成本跟踪和管理 UI

PyPI GitHub Stars


安装

uv add litellm

运行完整的代理服务器(LLM 网关)

uv tool install 'litellm[proxy]'

快速入门

使用你选择的提供商进行首次 LLM 调用

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)

无论提供商是谁,每个响应都遵循 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
}
]
}

📖 完整输出格式参考 →

在 Colab 中打开
Open In Colab

刚接触 LiteLLM?

想快速上手? 前往教程获取分步指南 —— 包括 AI 编码工具、代理 SDK、代理服务器设置等。

需要了解特定功能? 查看指南以获取关于流式传输、函数调用、提示词缓存和其他操作的说明。


选择你的路径


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 Proxy Dashboard

第一步 —— 启动代理

litellm --model huggingface/bigcode/starcoder
# Proxy running on http://0.0.0.0:4000

第二步 —— 使用 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)

👉 使用 Docker 快速启动代理 →

调试工具

使用 /utils/transform_request 精确检查 LiteLLM 发送给任何提供商的内容 —— 这对于调试提示词格式、Header 问题和特定提供商的参数非常有用。

🔗 交互式 API 浏览器 (Swagger) →


代理与 MCP 网关

LiteLLM 是一个用于 LLM、代理 (Agents) 和 MCP 的统一网关 —— 你不需要单独的代理或 MCP 网关。一个端点即可对接 100 多种模型、A2A 代理和 MCP 工具。


下一步探索