预算路由
LiteLLM 支持设置以下预算
- 提供商预算 - OpenAI 每日 100 美元,Azure 每日 100 美元。
- 模型预算 - gpt-4 (https://api-base-1) 每日 100 美元,gpt-4o (https://api-base-2) 每日 100 美元
- 标签预算 - tag=
product:chat-bot
每日 10 美元,tag=product:chat-bot-2
每日 100 美元
提供商预算
用于为 LLM 提供商设置预算 - 例如 OpenAI 每日 100 美元,Azure 每日 100 美元。
快速入门
在您的 proxy_config.yaml
文件中设置提供商预算
代理配置设置
model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: openai/gpt-3.5-turbo
api_key: os.environ/OPENAI_API_KEY
router_settings:
provider_budget_config:
openai:
budget_limit: 0.000000000001 # float of $ value budget for time period
time_period: 1d # can be 1d, 2d, 30d, 1mo, 2mo
azure:
budget_limit: 100
time_period: 1d
anthropic:
budget_limit: 100
time_period: 10d
vertex_ai:
budget_limit: 100
time_period: 12d
gemini:
budget_limit: 100
time_period: 12d
# OPTIONAL: Set Redis Host, Port, and Password if using multiple instance of LiteLLM
redis_host: os.environ/REDIS_HOST
redis_port: os.environ/REDIS_PORT
redis_password: os.environ/REDIS_PASSWORD
general_settings:
master_key: sk-1234
发送测试请求
我们预计第一个请求会成功,而第二个请求会失败,因为我们超出了 openai
的预算
- 成功的调用
- 失败的调用
curl -i http://localhost:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "user", "content": "hi my name is test request"}
]
}'
预计这将失败,因为我们超出了提供商 openai
的预算
curl -i http://localhost:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "user", "content": "hi my name is test request"}
]
}'
失败时的预期响应
{
"error": {
"message": "No deployments available - crossed budget for provider: Exceeded budget for provider openai: 0.0007350000000000001 >= 1e-12",
"type": "None",
"param": "None",
"code": "429"
}
}
提供商预算路由的工作原理
预算跟踪:
- 使用 Redis 跟踪每个提供商的消费
- 跟踪指定时间段(例如,“1d”、“30d”)内的消费
- 在时间段到期后自动重置消费
路由逻辑:
- 将请求路由到在其预算限制内的提供商
- 跳过超出预算的提供商
- 如果所有提供商都超出预算,则会引发错误
支持的时间周期:
- 秒:
"Xs"
(例如,“30s”) - 分钟:
"Xm"
(例如,“10m”) - 小时:
"Xh"
(例如,“24h”) - 天:
"Xd"
(例如,“1d”、“30d”) - 月:
"Xmo"
(例如,“1mo”、“2mo”)
- 秒:
要求:
- 需要 Redis 来跟踪跨实例的消费
- 提供商名称必须是 litellm 提供商名称。参见 支持的提供商
监控提供商剩余预算
获取预算、消费详情
使用此端点检查提供商当前的预算、消费和预算重置时间
请求示例
curl -X GET http://localhost:4000/provider/budgets \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234"
响应示例
{
"providers": {
"openai": {
"budget_limit": 1e-12,
"time_period": "1d",
"spend": 0.0,
"budget_reset_at": null
},
"azure": {
"budget_limit": 100.0,
"time_period": "1d",
"spend": 0.0,
"budget_reset_at": null
},
"anthropic": {
"budget_limit": 100.0,
"time_period": "10d",
"spend": 0.0,
"budget_reset_at": null
},
"vertex_ai": {
"budget_limit": 100.0,
"time_period": "12d",
"spend": 0.0,
"budget_reset_at": null
}
}
}
Prometheus 指标
LiteLLM 将在 Prometheus 上发出以下指标,以跟踪每个提供商的剩余预算
此指标表示提供商的剩余预算(美元)
litellm_provider_remaining_budget_metric{api_provider="openai"} 10
模型预算
用于为模型设置预算 - 例如 openai/gpt-4o 每日 10 美元,openai/gpt-4o-mini 每日 100 美元
快速入门
在您的 proxy_config.yaml
文件中设置模型预算
model_list:
- model_name: gpt-4o
litellm_params:
model: openai/gpt-4o
api_key: os.environ/OPENAI_API_KEY
max_budget: 0.000000000001 # (USD)
budget_duration: 1d # (Duration. can be 1s, 1m, 1h, 1d, 1mo)
- model_name: gpt-4o-mini
litellm_params:
model: openai/gpt-4o-mini
api_key: os.environ/OPENAI_API_KEY
max_budget: 100 # (USD)
budget_duration: 30d # (Duration. can be 1s, 1m, 1h, 1d, 1mo)
发送测试请求
我们预计第一个请求会成功,而第二个请求会失败,因为我们超出了 openai/gpt-4o
的预算
- 成功的调用
- 失败的调用
curl -i http://localhost:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "user", "content": "hi my name is test request"}
]
}'
预计这将失败,因为我们超出了 openai/gpt-4o
的预算
curl -i http://localhost:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "user", "content": "hi my name is test request"}
]
}'
失败时的预期响应
{
"error": {
"message": "No deployments available - crossed budget: Exceeded budget for deployment model_name: gpt-4o, litellm_params.model: openai/gpt-4o, model_id: dbe80f2fe2b2465f7bfa9a5e77e0f143a2eb3f7d167a8b55fb7fe31aed62587f: 0.00015250000000000002 >= 1e-12",
"type": "None",
"param": "None",
"code": "429"
}
}
✨ 标签预算
✨ 这是仅限企业版的功能 在此开始使用企业版
用于为标签设置预算 - 例如 tag=product:chat-bot
每日 10 美元,tag=product:chat-bot-2
每日 100 美元
快速入门
通过在您的 proxy_config.yaml
文件中设置 tag_budget_config
来设置标签预算
model_list:
- model_name: gpt-4o
litellm_params:
model: openai/gpt-4o
api_key: os.environ/OPENAI_API_KEY
litellm_settings:
tag_budget_config:
product:chat-bot: # (Tag)
max_budget: 0.000000000001 # (USD)
budget_duration: 1d # (Duration)
product:chat-bot-2: # (Tag)
max_budget: 100 # (USD)
budget_duration: 1d # (Duration)
发送测试请求
我们预计第一个请求会成功,而第二个请求会失败,因为我们超出了 openai/gpt-4o
的预算
- 成功的调用
- 失败的调用
curl -i http://localhost:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "user", "content": "hi my name is test request"}
],
"metadata": {"tags": ["product:chat-bot"]}
}'
预计这将失败,因为我们超出了标签 tag=product:chat-bot
的预算
curl -i http://localhost:4000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-1234" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "user", "content": "hi my name is test request"}
],
"metadata": {"tags": ["product:chat-bot"]}
}
失败时的预期响应
{
"error": {
"message": "No deployments available - crossed budget: Exceeded budget for tag='product:chat-bot', tag_spend=0.00015250000000000002, tag_budget_limit=1e-12",
"type": "None",
"param": "None",
"code": "429"
}
}
多实例设置
如果您使用多实例设置,您需要在 proxy_config.yaml
文件中设置 Redis 的主机、端口和密码。Redis 用于同步 LiteLLM 实例之间的消费。
model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: openai/gpt-3.5-turbo
api_key: os.environ/OPENAI_API_KEY
router_settings:
provider_budget_config:
openai:
budget_limit: 0.000000000001 # float of $ value budget for time period
time_period: 1d # can be 1d, 2d, 30d, 1mo, 2mo
# 👇 Add this: Set Redis Host, Port, and Password if using multiple instance of LiteLLM
redis_host: os.environ/REDIS_HOST
redis_port: os.environ/REDIS_PORT
redis_password: os.environ/REDIS_PASSWORD
general_settings:
master_key: sk-1234
provider_budget_config
的规范
provider_budget_config
是一个字典,其中
- 键: 提供商名称 (字符串) - 必须是有效的 LiteLLM 提供商名称
- 值: 预算配置对象,包含以下参数
budget_limit
: 表示预算(美元)的浮点值time_period
: 以下格式之一的持续时间字符串- 秒:
"Xs"
(例如,“30s”) - 分钟:
"Xm"
(例如,“10m”) - 小时:
"Xh"
(例如,“24h”) - 天:
"Xd"
(例如,“1d”、“30d”) - 月:
"Xmo"
(例如,“1mo”、“2mo”)
- 秒:
示例结构
provider_budget_config:
openai:
budget_limit: 100.0 # $100 USD
time_period: "1d" # 1 day period
azure:
budget_limit: 500.0 # $500 USD
time_period: "30d" # 30 day period
anthropic:
budget_limit: 200.0 # $200 USD
time_period: "1mo" # 1 month period
gemini:
budget_limit: 50.0 # $50 USD
time_period: "24h" # 24 hour period