From 0fdd7a6f5f1ca04d4a1f35d4a9ac73fee2ea626c Mon Sep 17 00:00:00 2001 From: roshanData Date: Sun, 16 Aug 2026 22:41:23 +0530 Subject: [PATCH] perf(router): bound prefix hash length and support multimodal payload extraction Signed-off-by: roshanData --- .../complexity_router/complexity_router.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/litellm/router_strategy/complexity_router/complexity_router.py b/litellm/router_strategy/complexity_router/complexity_router.py index bb951e7fbb8..1ce516a2b3b 100644 --- a/litellm/router_strategy/complexity_router/complexity_router.py +++ b/litellm/router_strategy/complexity_router/complexity_router.py @@ -1707,10 +1707,20 @@ class ComplexityRouter(CustomLogger): parts.append(part) elif isinstance(part, dict): if part.get("type") == "text" and "text" in part: - parts.append(str(part["text"])) + text_val = part["text"] + if isinstance(text_val, str): + parts.append(text_val) elif "content" in part and isinstance(part["content"], str): parts.append(part["content"]) return "".join(parts) + if isinstance(content, dict): + if content.get("type") == "text" and "text" in content: + text_val = content["text"] + if isinstance(text_val, str): + return text_val + elif "content" in content and isinstance(content["content"], str): + return content["content"] + return "" if content is None: return "" return str(content) @@ -1735,9 +1745,9 @@ class ComplexityRouter(CustomLogger): continue role = msg.get("role") if not first_system_msg and role in ("system", "developer"): - first_system_msg = self._extract_message_text(msg.get("content")).strip() + first_system_msg = self._extract_message_text(msg.get("content"))[:1024].strip() elif not first_user_msg and role == "user": - first_user_msg = self._extract_message_text(msg.get("content")).strip() + first_user_msg = self._extract_message_text(msg.get("content"))[:1024].strip() if first_system_msg and first_user_msg: break