mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-08 22:21:35 +00:00
Merge pull request #15578 from BerriAI/litellm_remove_list_lookup
perf(router): optimize model lookups with O(1) data structures
This commit is contained in:
commit
a17f3a7aa8
2 changed files with 11 additions and 3 deletions
|
|
@ -189,7 +189,7 @@ class RoutingArgs(enum.Enum):
|
|||
|
||||
|
||||
class Router:
|
||||
model_names: List = []
|
||||
model_names: set = set()
|
||||
cache_responses: Optional[bool] = False
|
||||
default_cache_time_seconds: int = 1 * 60 * 60 # 1 hour
|
||||
tenacity = None
|
||||
|
|
@ -5157,7 +5157,7 @@ class Router:
|
|||
verbose_router_logger.debug(
|
||||
f"\nInitialized Model List {self.get_model_names()}"
|
||||
)
|
||||
self.model_names = [m["model_name"] for m in model_list]
|
||||
self.model_names = {m["model_name"] for m in model_list}
|
||||
|
||||
# Build model_name index for O(1) lookups
|
||||
self._build_model_name_index(self.model_list)
|
||||
|
|
@ -5363,7 +5363,7 @@ class Router:
|
|||
self._add_model_to_list_and_index_map(
|
||||
model=_deployment, model_id=deployment.model_info.id
|
||||
)
|
||||
self.model_names.append(deployment.model_name)
|
||||
self.model_names.add(deployment.model_name)
|
||||
return deployment
|
||||
|
||||
def _update_deployment_indices_after_removal(
|
||||
|
|
|
|||
|
|
@ -177,3 +177,11 @@ class TestRouterIndexManagement:
|
|||
# Verify: New entry is added
|
||||
assert "claude-3" in router.model_name_to_deployment_indices
|
||||
assert router.model_name_to_deployment_indices["claude-3"] == [0]
|
||||
|
||||
def test_model_names_is_set(self):
|
||||
"""Verify that model_names uses a set for O(1) lookups, not a list (O(n))"""
|
||||
router = Router(model_list=[])
|
||||
|
||||
assert isinstance(router.model_names, set), (
|
||||
f"model_names should be a set for O(1) lookups, but got {type(router.model_names)}"
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue