请求流程
高层架构
请求流程
-
用户发送请求:流程始于用户向 LiteLLM 代理服务器(网关)发送请求。
-
虚拟密钥 (Virtual Keys):在此阶段,请求中的
Bearer令牌会被检查,以确保其有效且未超出预算。此处列出了每次请求运行的检查项- 2.1 检查虚拟密钥是否存在于 Redis 缓存或内存缓存中
- 2.2 如果不在缓存中,则在数据库中查找虚拟密钥
-
速率限制:MaxParallelRequestsHandler 会检查以下组件的速率限制 (rpm/tpm)
- 全局服务器速率限制
- 虚拟密钥速率限制
- 用户速率限制
- 团队限制
-
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 更新以下组件的 rpm/tpm 使用量
- 全局服务器速率限制
- 虚拟密钥速率限制
- 用户速率限制
- 团队限制
_ProxyDBLogger更新 LiteLLM 数据库中的消费/使用情况。此处列出了数据库中跟踪的每个请求的所有信息
常见问题解答
- 数据库事务是否绑定到请求的生命周期?
- 不是,数据库事务不绑定到请求的生命周期。
- 如果虚拟密钥不在缓存中,验证其有效性的过程依赖于数据库读取。
- 所有其他数据库事务均在后台任务中异步执行