chore: initial public snapshot for github upload
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
"""
|
||||
Shared utility functions for rate limiter hooks.
|
||||
"""
|
||||
|
||||
from typing import Optional, Union
|
||||
|
||||
from litellm.types.router import ModelGroupInfo
|
||||
from litellm.types.utils import PriorityReservationDict
|
||||
|
||||
|
||||
def convert_priority_to_percent(
|
||||
value: Union[float, PriorityReservationDict], model_info: Optional[ModelGroupInfo]
|
||||
) -> float:
|
||||
"""
|
||||
Convert priority reservation value to percentage (0.0-1.0).
|
||||
|
||||
Supports three formats:
|
||||
1. Plain float/int: 0.9 -> 0.9 (90%)
|
||||
2. Dict with percent: {"type": "percent", "value": 0.9} -> 0.9
|
||||
3. Dict with rpm: {"type": "rpm", "value": 900} -> 900/model_rpm
|
||||
4. Dict with tpm: {"type": "tpm", "value": 900000} -> 900000/model_tpm
|
||||
|
||||
Args:
|
||||
value: Priority value as float or dict with type/value keys
|
||||
model_info: Model configuration containing rpm/tpm limits
|
||||
|
||||
Returns:
|
||||
float: Percentage value between 0.0 and 1.0
|
||||
"""
|
||||
if isinstance(value, (int, float)):
|
||||
return float(value)
|
||||
|
||||
if isinstance(value, dict):
|
||||
val_type = value.get("type", "percent")
|
||||
val_num = value.get("value", 1.0)
|
||||
|
||||
if val_type == "percent":
|
||||
return float(val_num)
|
||||
elif val_type == "rpm" and model_info and model_info.rpm and model_info.rpm > 0:
|
||||
return float(val_num) / model_info.rpm
|
||||
elif val_type == "tpm" and model_info and model_info.tpm and model_info.tpm > 0:
|
||||
return float(val_num) / model_info.tpm
|
||||
|
||||
# Fallback: treat as percent
|
||||
return float(val_num)
|
||||
Reference in New Issue
Block a user