diff --git a/litellm/router_strategy/complexity_router/complexity_router.py b/litellm/router_strategy/complexity_router/complexity_router.py index f0f5ce331a3..bb951e7fbb8 100644 --- a/litellm/router_strategy/complexity_router/complexity_router.py +++ b/litellm/router_strategy/complexity_router/complexity_router.py @@ -1747,8 +1747,8 @@ class ComplexityRouter(CustomLogger): user_identifier = self._get_user_identifier_from_request_kwargs(request_kwargs) model_group = model or self.model_name or request_kwargs.get("model") or "" - payload = f"{user_identifier}:{model_group}:{first_system_msg}:{first_user_msg}" - return hashlib.sha256(payload.encode("utf-8")).hexdigest() + payload = f"litellm-session-key:{user_identifier}:{model_group}:{first_system_msg}:{first_user_msg}" + return hashlib.sha256(payload.encode("utf-8", errors="replace")).hexdigest() def _resolve_session_id( self, @@ -1776,9 +1776,10 @@ class ComplexityRouter(CustomLogger): ) if derived_key is not None: + sanitized_key = derived_key.replace("\r", "").replace("\n", "")[:32] verbose_router_logger.info( "ComplexityRouter: resolved fallback session key '%s' using strategy '%s'", - derived_key, + sanitized_key, fallback, ) metadata_key = "litellm_metadata" if "litellm_metadata" in request_kwargs else "metadata" diff --git a/tests/test_litellm/router_strategy/test_session_key_fallback.py b/tests/test_litellm/router_strategy/test_session_key_fallback.py index 1bcbdd5b09b..5e336e86a2a 100644 --- a/tests/test_litellm/router_strategy/test_session_key_fallback.py +++ b/tests/test_litellm/router_strategy/test_session_key_fallback.py @@ -240,7 +240,7 @@ class TestSessionKeyFallback: # user_api_key_hash : model_group : first_system_msg : first_user_msg system_text = "You are a mathematics tutor." user_text = "Let's think step by step and reason through this problem carefully." - expected_payload = f"user_hash_abc:test-router:{system_text}:{user_text}" + expected_payload = f"litellm-session-key:user_hash_abc:test-router:{system_text}:{user_text}" expected_hash = hashlib.sha256(expected_payload.encode("utf-8")).hexdigest() derived_id = router._resolve_session_id(