-
Notifications
You must be signed in to change notification settings - Fork 15.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
27 changed files
with
313 additions
and
164 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
48 changes: 4 additions & 44 deletions
48
libs/community/langchain_community/chat_message_histories/file.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,45 +1,5 @@ | ||
import json | ||
import logging | ||
from pathlib import Path | ||
from typing import List | ||
from langchain_core.chat_history import FileChatMessageHistory | ||
|
||
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([])) | ||
|
||
@property | ||
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([])) | ||
__all__ = [ | ||
"FileChatMessageHistory", | ||
] |
34 changes: 4 additions & 30 deletions
34
libs/community/langchain_community/chat_message_histories/in_memory.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,31 +1,5 @@ | ||
from typing import List, Sequence | ||
from langchain_core.chat_history import InMemoryChatMessageHistory as ChatMessageHistory | ||
|
||
from langchain_core.chat_history import BaseChatMessageHistory | ||
from langchain_core.messages import BaseMessage | ||
from langchain_core.pydantic_v1 import BaseModel, Field | ||
|
||
|
||
class ChatMessageHistory(BaseChatMessageHistory, BaseModel): | ||
"""In memory implementation of chat message history. | ||
Stores messages in an in memory list. | ||
""" | ||
|
||
messages: List[BaseMessage] = Field(default_factory=list) | ||
|
||
async def aget_messages(self) -> List[BaseMessage]: | ||
return self.messages | ||
|
||
def add_message(self, message: BaseMessage) -> None: | ||
"""Add a self-created message to the store""" | ||
self.messages.append(message) | ||
|
||
async def aadd_messages(self, messages: Sequence[BaseMessage]) -> None: | ||
"""Add messages to the store""" | ||
self.add_messages(messages) | ||
|
||
def clear(self) -> None: | ||
self.messages = [] | ||
|
||
async def aclear(self) -> None: | ||
self.clear() | ||
__all__ = [ | ||
"ChatMessageHistory", | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.