From 1f573d048f0c2c33eb5a56a61e9864b6978ea910 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?d=20=F0=9F=94=B9?= <258577966+voidborne-d@users.noreply.github.com> Date: Sat, 21 Mar 2026 12:09:48 +0000 Subject: [PATCH] fix: copy dict before mutation + use filter(None, ...) to avoid trailing space Address review feedback: - Shallow-copy next_m before mutating to avoid side-effects on caller's dict - Use ' '.join(filter(None, ...)) to prevent trailing space when next_text is empty --- litellm/litellm_core_utils/prompt_templates/factory.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/litellm/litellm_core_utils/prompt_templates/factory.py b/litellm/litellm_core_utils/prompt_templates/factory.py index 99be6d02e2c..2f0678cf0fc 100644 --- a/litellm/litellm_core_utils/prompt_templates/factory.py +++ b/litellm/litellm_core_utils/prompt_templates/factory.py @@ -119,8 +119,12 @@ def map_system_message_pt(messages: list) -> list: next_role == "user" or next_role == "assistant" ): # Next message is a user or assistant message # Merge system prompt into the next message + # Copy to avoid mutating the caller's original dict + next_m = messages[i + 1] = {**next_m} next_text = _get_content_as_str(next_m["content"]) - next_m["content"] = system_text + " " + next_text + next_m["content"] = " ".join( + filter(None, [system_text, next_text]) + ) elif next_role == "system": # Next message is a system message # Append a user message instead of the system message new_message = {"role": "user", "content": system_text}