Spaces:
Runtime error
Runtime error
import json | |
import logging | |
from pathlib import Path | |
from typing import List | |
from langchain_core.chat_history import BaseChatMessageHistory | |
from langchain_core.messages import ( | |
BaseMessage, | |
messages_from_dict, | |
messages_to_dict, | |
) | |
logger = logging.getLogger(__name__) | |
class FileChatMessageHistory(BaseChatMessageHistory): | |
""" | |
Chat message history that stores history in a local file. | |
Args: | |
file_path: path of the local file to store the messages. | |
""" | |
def __init__(self, file_path: str): | |
self.file_path = Path(file_path) | |
if not self.file_path.exists(): | |
self.file_path.touch() | |
self.file_path.write_text(json.dumps([])) | |
def messages(self) -> List[BaseMessage]: # type: ignore | |
"""Retrieve the messages from the local file""" | |
items = json.loads(self.file_path.read_text()) | |
messages = messages_from_dict(items) | |
return messages | |
def add_message(self, message: BaseMessage) -> None: | |
"""Append the message to the record in the local file""" | |
messages = messages_to_dict(self.messages) | |
messages.append(messages_to_dict([message])[0]) | |
self.file_path.write_text(json.dumps(messages)) | |
def clear(self) -> None: | |
"""Clear session memory from the local file""" | |
self.file_path.write_text(json.dumps([])) | |