diff --git a/sentry_sdk/ai/utils.py b/sentry_sdk/ai/utils.py index 3cfae61546..bcd76f884f 100644 --- a/sentry_sdk/ai/utils.py +++ b/sentry_sdk/ai/utils.py @@ -682,18 +682,19 @@ def truncate_messages_by_size( In the single message case, the serialized message size may exceed `max_bytes`, because truncation is based only on character count in that case. """ - serialized_json = json.dumps(messages, separators=(",", ":")) + normalized_messages = _normalize_data(messages, unpack=False) + serialized_json = json.dumps(normalized_messages, separators=(",", ":")) current_size = len(serialized_json.encode("utf-8")) if current_size <= max_bytes: - return messages, 0 + return normalized_messages, 0 - truncation_index = _find_truncation_index(messages, max_bytes) - if truncation_index < len(messages): - truncated_messages = messages[truncation_index:] + truncation_index = _find_truncation_index(normalized_messages, max_bytes) + if truncation_index < len(normalized_messages): + truncated_messages = normalized_messages[truncation_index:] else: - truncation_index = len(messages) - 1 - truncated_messages = messages[-1:] + truncation_index = len(normalized_messages) - 1 + truncated_messages = normalized_messages[-1:] if len(truncated_messages) == 1: truncated_messages[0] = _truncate_single_message_content_if_present(