from abc import ABC, abstractmethod from typing import Literal class MemoryConvABC(ABC): """ Interfaz abstracta para memorias de conversación multi-turno. """ def __init__(self, k: int = 10): """ :param k: Número máximo de turnos (pares user/assistant) a retornar. """ self.k = k @abstractmethod def guardar_turno(self, rol: Literal["user", "assistant"], contenido: str) -> None: """ Guarda un mensaje de un turno de conversación. Se guarda secuencialmente y se asume que el orden es respetado. """ pass @abstractmethod def cargar_historial_chat(self) -> list[dict]: """ Devuelve los últimos `k*2` mensajes como lista de dicts tipo chat: [{"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}] """ pass @abstractmethod def limpiar(self) -> None: """ Limpia completamente la memoria. """ pass