37 lines
1008 B
Python
37 lines
1008 B
Python
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
|