# core/pipeline/utils import re from typing import Union def limpiar_contexto_bruto(contexto: str) -> str: """Optimiza el contexto eliminando saltos de línea redundantes, espacios excesivos y corrigiendo puntuación.""" contexto = contexto.strip() # 1️⃣ Reemplaza saltos de línea múltiples por un espacio si hay punto antes, o por punto y espacio si no hay. contexto = re.sub( r"\.\s*\n+", ". ", contexto ) # Si ya hay punto antes del salto, limpia contexto = re.sub( r"(? str: """Recorta el contexto si excede el límite de tokens.""" if len(contexto) > max_tokens: return contexto[:max_tokens] + "\n[Contexto truncado...]" return contexto def validar_input(input_data: Union[str, bytes]) -> bool: """Valida que la entrada sea texto no vacío o bytes (imagen).""" if isinstance(input_data, str): return bool(input_data.strip()) if isinstance(input_data, bytes): return True return False