From 2f523777776b27cb0361bf7bd0a4b60f34595e2e Mon Sep 17 00:00:00 2001 From: Lavya Tandel Date: Mon, 10 Aug 2026 23:40:38 +0530 Subject: [PATCH] fix(logging): handle Anthropic system prompt as list of content blocks (#36402) --- litellm/litellm_core_utils/litellm_logging.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/litellm/litellm_core_utils/litellm_logging.py b/litellm/litellm_core_utils/litellm_logging.py index b2c22880f5a..a8c586f931c 100644 --- a/litellm/litellm_core_utils/litellm_logging.py +++ b/litellm/litellm_core_utils/litellm_logging.py @@ -5702,22 +5702,25 @@ class StandardLoggingPayloadSetup: @staticmethod def append_system_prompt_messages(kwargs: dict | None = None, messages: Any | None = None): """ - Append system prompt messages to the messages + Append system prompt messages to the messages. + + Handles both string and list-of-content-blocks forms of `system`. """ if kwargs is not None: - if kwargs.get("system") is not None and isinstance(kwargs.get("system"), str): + system = kwargs.get("system") + if system is not None: if messages is None: - return [{"role": "system", "content": kwargs.get("system")}] + return [{"role": "system", "content": system}] elif isinstance(messages, list): if len(messages) == 0: - return [{"role": "system", "content": kwargs.get("system")}] + return [{"role": "system", "content": system}] # check for duplicates - if messages[0].get("role") == "system" and messages[0].get("content") == kwargs.get("system"): + if messages[0].get("role") == "system" and messages[0].get("content") == system: return messages - messages = [{"role": "system", "content": kwargs.get("system")}] + messages + messages = [{"role": "system", "content": system}] + messages elif isinstance(messages, str): messages = [ - {"role": "system", "content": kwargs.get("system")}, + {"role": "system", "content": system}, {"role": "user", "content": messages}, ] return messages