LiteLLM:统一大型语言模型(LLM)生态,实现无缝开发体验
June 04, 2025
项目描述
LiteLLM是一个Python SDK和代理服务器(LLM网关),旨在简化与100多个大型语言模型(LLM)API的交互。它将各种LLM提供商(如Bedrock、Azure、OpenAI、VertexAI、Cohere、Anthropic、Sagemaker、HuggingFace、Replicate、Groq)统一到一种类似OpenAI的格式中。
LiteLLM致力于解决以下复杂问题: - 将输入转换为针对特定提供商的补全、嵌入和图像生成端点。 - 确保不同LLM之间输出格式的一致性。 - 利用其路由功能,在多部署(如Azure/OpenAI)之间实现重试和回退逻辑。 - 通过LiteLLM代理服务器,按项目、API密钥和模型强制执行预算和速率限制。
使用说明
要使用LiteLLM,可以通过pip安装:
pip install litellm
基本聊天补全
from litellm import completion
import os
# 设置API密钥环境变量
os.environ["OPENAI_API_KEY"] = "your-openai-key"
os.environ["ANTHROPIC_API_KEY"] = "your-anthropic-key"
messages = [{ "content": "Hello, how are you?","role": "user"}]
# 调用OpenAI
response = completion(model="openai/gpt-4o", messages=messages)
# 调用Anthropic
response = completion(model="anthropic/claude-3-sonnet-20240229", messages=messages)
print(response)
异步调用
from litellm import acompletion
import asyncio
async def test_get_response():
user_message = "Hello, how are you?"
messages = [{"content": user_message, "role": "user"}]
response = await acompletion(model="openai/gpt-4o", messages=messages)
return response
response = asyncio.run(test_get_response())
print(response)
流式响应
from litellm import completion
response = completion(model="openai/gpt-4o", messages=messages, stream=True)
for part in response:
print(part.choices[0].delta.content or "")
日志记录与可观测性
LiteLLM通过回调支持各种日志记录和可观测性工具(Lunary、MLflow、Langfuse、DynamoDB、S3、Helicone、Promptlayer、Traceloop、Athina、Slack)。
from litellm import completion
import os
import litellm
# 设置日志工具和API密钥的环境变量
os.environ["LUNARY_PUBLIC_KEY"] = "your-lunary-public-key"
os.environ["HELICONE_API_KEY"] = "your-helicone-auth-key"
os.environ["LANGFUSE_PUBLIC_KEY"] = "" # 使用实际密钥
os.environ["LANGFUSE_SECRET_KEY"] = "" # 使用实际密钥
os.environ["ATHINA_API_KEY"] = "your-athina-api-key"
os.environ["OPENAI_API_KEY"] = "your-openai-key"
# 设置回调
litellm.success_callback = ["lunary", "mlflow", "langfuse", "athina", "helicone"]
response = completion(model="openai/gpt-4o", messages=[{"role": "user", "content": "Hi 👋 - i'm openai"}])
LiteLLM 代理服务器
运行LiteLLM代理服务器的步骤:
- 安装代理依赖项:
pip install 'litellm[proxy]'
- 启动代理:
litellm --model huggingface/bigcode/starcoder # INFO: Proxy running on http://0.0.0.0:4000
- 使用OpenAI SDK向代理发送请求:
import openai # openai v1.0.0+ client = openai.OpenAI(api_key="anything",base_url="http://0.0.0.0:4000") # 将代理设为base_url 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)
主要特性
- 统一API接口:使用单一的类似OpenAI的API格式连接到100多个LLM。
- 提供商支持:支持主要LLM提供商,包括Bedrock、Azure、OpenAI、VertexAI、Cohere、Anthropic、Sagemaker、HuggingFace、Replicate、Groq等。
- 一致的输出:所有文本响应都在
['choices'][0]['message']['content']
中一致可用。 - 路由(重试/回退逻辑):自动处理多个LLM部署之间的重试和回退机制。
- 流式支持:支持所有集成模型的流式响应。
- 异步操作:提供异步API调用以提高性能。
- 可观测性:通过回调与各种日志记录和可观测性工具(如Lunary、MLflow、Langfuse、Helicone)集成。
- LiteLLM 代理服务器(LLM网关):
- 成本追踪:监控不同项目的开销。
- 负载均衡:将请求分发到多个LLM部署。
- 速率限制:按项目、API密钥和模型强制执行速率限制。
- 密钥管理:连接PostgreSQL数据库,创建并管理代理密钥,对模型、持续时间和元数据进行精细控制。
- Web UI:提供用户界面(
/ui
)用于管理代理服务器,包括设置预算和速率限制。
- 企业级功能:为商业用户提供增强的安全性、用户管理和专业支持,包括自定义集成和SLA协议。
目标受众
- 开发者和工程师:寻求与各种LLM提供商交互的统一接口,简化代码和管理。
- AI/ML团队:寻求管理LLM访问、监控使用情况、控制成本以及实施健壮的重试/回退策略的解决方案。
- 构建LLM驱动应用的组织:需要为其AI基础设施提供速率限制、预算管理和可观测性等功能。
- 研究人员:需要高效地试验多种LLM模型和提供商。
项目链接
- GitHub 仓库:https://github.com/BerriAI/litellm
- 文档:https://docs.litellm.ai/docs/
- PyPI 包:https://pypi.org/project/litellm/
应用场景
- 构建多LLM应用:轻松切换或组合不同的LLM(例如,GPT-4用于创意写作,Claude用于摘要),而无需改变核心应用逻辑。
- 成本优化和预算管理:通过代理为每个用户、项目或API密钥实现硬配额和软预算,防止意外开销。
- 确保高可用性和可靠性:如果某个LLM提供商发生故障或达到速率限制,利用路由功能自动回退到备用LLM提供商或部署。
- A/B测试LLM模型:无缝将流量路由到不同模型,以比较生产环境中的性能和成本。
- 集中式LLM网关:为组织内所有LLM调用建立单一入口点,简化安全性、日志记录和访问控制。
- 监控和可观测性:通过与各种可观测性工具集成,深入了解LLM的使用情况、性能和成本。
- 开发LLM智能体/编排:为需要与多样化LLM能力(聊天、嵌入、图像生成)交互的智能体提供强大而灵活的后端。