refactor(router): sanitize fallback session key logging and namespace hash

Signed-off-by: roshanData <roshandata@users.noreply.github.com>
This commit is contained in:
roshanData 2026-08-15 03:33:49 +05:30
parent caa757615d
commit 9dbacfed5d
2 changed files with 5 additions and 4 deletions

View file

@ -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"

View file

@ -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(