请求流程
高级架构
请求流程
-
用户发送请求:流程从用户向 LiteLLM 代理服务器(网关)发送请求开始。
-
虚拟密钥:在此阶段,会检查请求中的
Bearertoken 是否有效且在预算范围内。 这里是每个请求运行的检查列表- 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 数据库中的消费/使用情况。 这里是每个请求在 DB 中跟踪的所有内容
常见问题解答
- 数据库事务是否与请求的生命周期绑定?
- 否,数据库事务未与请求的生命周期绑定。
- 检查虚拟密钥是否有效依赖于如果它不在缓存中的数据库读取。
- 所有其他数据库事务都在后台任务中异步进行