请求的生命周期
高层架构
请求流程
用户发送请求:当用户向 LiteLLM 代理服务器(网关)发送请求时,流程开始。
虚拟密钥:在此阶段,检查请求中的
Bearer
token 是否有效且未超出预算。 这里是每次请求运行的检查列表- 2.1 检查虚拟密钥是否存在于 Redis 缓存或内存缓存中
- 2.2 如果不在缓存中,则在数据库中查找虚拟密钥
速率限制:MaxParallelRequestsHandler 检查以下组件的速率限制(每分钟请求数/每分钟 token 数)
- 全局服务器速率限制
- 虚拟密钥速率限制
- 用户速率限制
- 团队限制
LiteLLM
proxy_server.py
:包含/chat/completions
和/embeddings
端点。对这些端点的请求通过 LiteLLM 路由器发送LiteLLM 路由器:LiteLLM 路由器处理 LLM API 部署的负载均衡、故障转移和重试。
litellm.completion() / litellm.embedding():使用 litellm Python SDK 以 OpenAI API 格式调用 LLM(翻译和参数映射)
请求后处理:在响应发送回客户端后,执行以下异步任务
- 记录到 Lunary、MLflow、LangFuse 或其他日志记录目的地
- MaxParallelRequestsHandler 更新以下组件的每分钟请求数/每分钟 token 数使用量
- 全局服务器速率限制
- 虚拟密钥速率限制
- 用户速率限制
- 团队限制
_ProxyDBLogger
更新 LiteLLM 数据库中的消费/使用量。 这里是按请求记录在数据库中的所有信息
常见问题
- 数据库事务是否与请求的生命周期绑定?
- 否,数据库事务不与请求的生命周期绑定。
- 检查虚拟密钥是否有效依赖于数据库读取,如果它不在缓存中。
- 所有其他数据库事务都在后台任务中异步执行