edullm / core /pipeline /utils.py
JairoDanielMT's picture
Upload 21 files
f6cb78b verified
raw
history blame
1.6 kB
# 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"(?<!\.)\n+", ". ", contexto
) # Si NO hay punto antes, agrega punto
# 2️⃣ Elimina espacios múltiples
contexto = re.sub(r"\s{2,}", " ", contexto)
# 3️⃣ Corrige puntos dobles o triples
contexto = re.sub(r"\.{2,}", ".", contexto)
# 4️⃣ Elimina punto al inicio si quedó por error
contexto = re.sub(r"^\.\s*", "", contexto)
# 5️⃣ Asegura que termine en punto
if not contexto.endswith("."):
contexto += "."
return contexto.strip()
def limitar_contexto(contexto: str, max_tokens: int = 1500) -> 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