Spaces:
Running
Running
File size: 1,026 Bytes
7b4b748 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | import logging
from collections.abc import Sequence
from langchain_core.chat_history import InMemoryChatMessageHistory
from langchain_core.messages import BaseMessage
logger = logging.getLogger(__name__)
class TrimmedChatMessageHistory(InMemoryChatMessageHistory):
"""LangChain in-memory history with a sliding window."""
max_turns: int = 10
def add_message(self, message: BaseMessage) -> None:
super().add_message(message)
self._trim()
def add_messages(self, messages: Sequence[BaseMessage]) -> None:
super().add_messages(messages)
self._trim()
def _trim(self) -> None:
max_messages = self.max_turns * 2
if len(self.messages) > max_messages:
removed = len(self.messages) - max_messages
self.messages = self.messages[removed:]
logger.info("Trimmed %d old messages from LangChain history", removed)
def clear(self) -> None:
super().clear()
logger.info("LangChain conversation history cleared")
|