mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-10 03:28:53 +00:00
test(router): test litellm.Router fallbacks initialization and list parsing
This commit is contained in:
parent
710e08079b
commit
103e14e23a
1 changed files with 23 additions and 33 deletions
|
|
@ -1,36 +1,26 @@
|
|||
\"\"\"
|
||||
Unit tests for model fallback chain resolution and priority sequence bounds in LiteLLM router.
|
||||
\"\"\"
|
||||
import pytest
|
||||
from typing import List, Dict, Any
|
||||
from litellm import Router
|
||||
|
||||
def test_fallback_chain_traversal():
|
||||
fallback_map = {
|
||||
"gpt-4o": ["azure/gpt-4o-east", "bedrock/claude-3-5-sonnet", "vertex_ai/gemini-1.5-pro"]
|
||||
}
|
||||
|
||||
primary_model = "gpt-4o"
|
||||
fallbacks = fallback_map.get(primary_model, [])
|
||||
|
||||
assert len(fallbacks) == 3
|
||||
assert fallbacks[0] == "azure/gpt-4o-east"
|
||||
assert fallbacks[1] == "bedrock/claude-3-5-sonnet"
|
||||
assert fallbacks[2] == "vertex_ai/gemini-1.5-pro"
|
||||
|
||||
def test_empty_fallback_graceful_handling():
|
||||
fallback_map: Dict[str, List[str]] = {}
|
||||
requested_model = "unknown-custom-model"
|
||||
fallbacks = fallback_map.get(requested_model, [])
|
||||
assert fallbacks == []
|
||||
assert len(fallbacks) == 0
|
||||
|
||||
def test_priority_tier_routing_selection():
|
||||
deployments = [
|
||||
{"model_name": "gpt-4", "tier": "primary", "weight": 80},
|
||||
{"model_name": "gpt-4", "tier": "secondary", "weight": 20}
|
||||
def test_router_fallbacks_initialization():
|
||||
fallbacks = [
|
||||
{"gpt-4": ["azure/gpt-4-east", "bedrock/claude-3-5-sonnet"]}
|
||||
]
|
||||
|
||||
total_weight = sum(d["weight"] for d in deployments)
|
||||
assert total_weight == 100
|
||||
primary = [d for d in deployments if d["tier"] == "primary"][0]
|
||||
assert primary["weight"] == 80
|
||||
router = Router(
|
||||
model_list=[
|
||||
{"model_name": "gpt-4", "litellm_params": {"model": "azure/gpt-4-east"}},
|
||||
{"model_name": "azure/gpt-4-east", "litellm_params": {"model": "azure/gpt-4-east"}},
|
||||
{"model_name": "bedrock/claude-3-5-sonnet", "litellm_params": {"model": "bedrock/claude-3-5-sonnet"}},
|
||||
],
|
||||
fallbacks=fallbacks,
|
||||
)
|
||||
assert router.fallbacks == fallbacks
|
||||
assert len(router.fallbacks) == 1
|
||||
assert "gpt-4" in router.fallbacks[0]
|
||||
|
||||
def test_router_empty_fallbacks():
|
||||
router = Router(
|
||||
model_list=[
|
||||
{"model_name": "gpt-3.5-turbo", "litellm_params": {"model": "gpt-3.5-turbo"}}
|
||||
]
|
||||
)
|
||||
assert router.fallbacks is None or router.fallbacks == []
|
||||
Loading…
Add table
Reference in a new issue