跳至主要内容

LiteLLM - 入门

https://github.com/BerriAI/litellm

使用 OpenAI 输入/输出格式调用 100+ LLM

  • 将输入转换为提供商的 completionembeddingimage_generation 端点
  • 一致的输出,文本响应始终在 ['choices'][0]['message']['content'] 处可用
  • 跨多个部署(例如 Azure/OpenAI)的重试/回退逻辑 - 路由器
  • 跟踪支出并为每个项目设置预算 LiteLLM 代理服务器

如何使用 LiteLLM

您可以通过以下方式使用 litellm

  1. LiteLLM 代理服务器 - 服务器(LLM 网关)用于调用 100+ LLM,负载均衡,跨项目的成本跟踪
  2. LiteLLM python SDK - Python 客户端用于调用 100+ LLM,负载均衡,成本跟踪

何时使用 LiteLLM 代理服务器(LLM 网关)

提示

如果您想要一个中心服务(LLM 网关)来访问多个 LLM,请使用 LiteLLM 代理服务器

通常由 Gen AI 赋能 / ML 平台团队使用

  • LiteLLM 代理为您提供了一个统一的接口来访问多个 LLM(100+ LLM)
  • 跟踪 LLM 使用情况并设置护栏
  • 自定义日志记录、护栏、每个项目的缓存

何时使用 LiteLLM Python SDK

提示

如果您想在您的 python 代码中使用 LiteLLM,请使用 LiteLLM Python SDK

通常由构建 llm 项目的开发人员使用

  • LiteLLM SDK 为您提供了一个统一的接口来访问多个 LLM(100+ LLM)
  • 跨多个部署(例如 Azure/OpenAI)的重试/回退逻辑 - 路由器

LiteLLM Python SDK

基本用法

Open In Colab
pip install litellm
from litellm import completion
import os

## set ENV variables
os.environ["OPENAI_API_KEY"] = "your-api-key"

response = completion(
model="gpt-3.5-turbo",
messages=[{ "content": "Hello, how are you?","role": "user"}]
)

Responses API

对于支持推理内容的先进模型(如 GPT-5、o3 等),请使用 litellm.responses()

from litellm import responses
import os

## set ENV variables
os.environ["OPENAI_API_KEY"] = "your-api-key"

response = responses(
model="gpt-5-mini",
messages=[{ "content": "What is the capital of France?","role": "user"}],
reasoning_effort="medium"
)

print(response)
print(response.choices[0].message.content) # response
print(response.choices[0].message.reasoning_content) # reasoning

流式传输

completion 参数中设置 stream=True

from litellm import completion
import os

## set ENV variables
os.environ["OPENAI_API_KEY"] = "your-api-key"

response = completion(
model="gpt-3.5-turbo",
messages=[{ "content": "Hello, how are you?","role": "user"}],
stream=True,
)

异常处理

LiteLLM 将所有支持的提供商的异常映射到 OpenAI 异常。 我们的所有异常都继承自 OpenAI 的异常类型,因此您对该异常的任何错误处理都应该可以开箱即用地与 LiteLLM 一起工作。

from openai.error import OpenAIError
from litellm import completion

os.environ["ANTHROPIC_API_KEY"] = "bad-key"
try:
# some code
completion(model="claude-instant-1", messages=[{"role": "user", "content": "Hey, how's it going?"}])
except OpenAIError as e:
print(e)

日志可观测性 - 记录 LLM 输入/输出 (文档)

LiteLLM 暴露预定义的的回调函数,以将数据发送到 MLflow、Lunary、Langfuse、Helicone、Promptlayer、Traceloop、Slack

from litellm import completion

## set env variables for logging tools (API key set up is not required when using MLflow)
os.environ["LUNARY_PUBLIC_KEY"] = "your-lunary-public-key" # get your key at https://app.lunary.ai/settings
os.environ["HELICONE_API_KEY"] = "your-helicone-key"
os.environ["LANGFUSE_PUBLIC_KEY"] = ""
os.environ["LANGFUSE_SECRET_KEY"] = ""

os.environ["OPENAI_API_KEY"]

# set callbacks
litellm.success_callback = ["lunary", "mlflow", "langfuse", "helicone"] # log input/output to lunary, mlflow, langfuse, helicone

#openai call
response = completion(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hi 👋 - i'm openai"}])

跟踪流的成本、使用情况、延迟

使用回调函数来实现这一点 - 有关自定义回调的更多信息:https://docs.litellm.com.cn/docs/observability/custom_callback

import litellm

# track_cost_callback
def track_cost_callback(
kwargs, # kwargs to completion
completion_response, # response from completion
start_time, end_time # start/end time
):
try:
response_cost = kwargs.get("response_cost", 0)
print("streaming response_cost", response_cost)
except:
pass
# set callback
litellm.success_callback = [track_cost_callback] # set custom callback function

# litellm.completion() call
response = completion(
model="gpt-3.5-turbo",
messages=[
{
"role": "user",
"content": "Hi 👋 - i'm openai"
}
],
stream=True
)

LiteLLM 代理服务器(LLM 网关)

跟踪多个项目/人员的支出

ui_3

代理提供

  1. 身份验证钩子
  2. 日志记录钩子
  3. 成本跟踪
  4. 速率限制

📖 代理端点 - Swagger 文档

有关带有密钥 + 速率限制的完整教程,请访问 - 此处

快速启动代理 - CLI

pip install 'litellm[proxy]'

步骤 1:启动 litellm 代理

$ litellm --model huggingface/bigcode/starcoder

#INFO: Proxy running on http://0.0.0.0:4000

步骤 2:向代理发送 ChatCompletions 请求

import openai # openai v1.0.0+
client = openai.OpenAI(api_key="anything",base_url="http://0.0.0.0:4000") # set proxy to base_url
# request sent to model set on litellm proxy, `litellm --model`
response = client.chat.completions.create(model="gpt-3.5-turbo", messages = [
{
"role": "user",
"content": "this is a test request, write a short poem"
}
])

print(response)

更多细节