mirror of
https://github.com/hwchase17/langchain.git
synced 2025-07-12 15:59:56 +00:00
fix: fix file open with encoding in chat_history.py (#31884)
Thank you for contributing to LangChain! - [x] **PR title**: "package: description" - Where "package" is whichever of langchain, core, etc. is being modified. Use "docs: ..." for purely docs changes, "infra: ..." for CI changes. - Example: "core: add foobar LLM" - [x] **PR message**: ***Delete this entire checklist*** and replace with - **Description:** a description of the change - **Issue:** the issue # it fixes, if applicable - **Dependencies:** any dependencies required for this change - **Twitter handle:** if your PR gets announced, and you'd like a mention, we'll gladly shout you out! - [x] **Add tests and docs**: If you're adding a new integration, please include 1. a test for the integration, preferably unit tests that do not rely on network access, 2. an example notebook showing its use. It lives in `docs/docs/integrations` directory. - [x] **Lint and test**: Run `make format`, `make lint` and `make test` from the root of the package(s) you've modified. See contribution guidelines for more: https://python.langchain.com/docs/contributing/ Additional guidelines: - Make sure optional dependencies are imported within a function. - Please do not add dependencies to pyproject.toml files (even optional ones) unless they are required for unit tests. - Most PRs should not touch more than one package. - Changes should be backwards compatible. If no one reviews your PR within a few days, please @-mention one of baskaryan, eyurtsev, ccurme, vbarda, hwchase17. Co-authored-by: Mason Daugherty <mason@langchain.dev>
This commit is contained in:
parent
4215261be1
commit
47d330f4e6
@ -65,28 +65,32 @@ class BaseChatMessageHistory(ABC):
|
|||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
|
|
||||||
class FileChatMessageHistory(BaseChatMessageHistory):
|
class FileChatMessageHistory(BaseChatMessageHistory):
|
||||||
storage_path: str
|
storage_path: str
|
||||||
session_id: str
|
session_id: str
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def messages(self):
|
def messages(self):
|
||||||
with open(os.path.join(storage_path, session_id), 'r:utf-8') as f:
|
with open(
|
||||||
messages = json.loads(f.read())
|
os.path.join(storage_path, session_id),
|
||||||
|
"r",
|
||||||
|
encoding="utf-8",
|
||||||
|
) as f:
|
||||||
|
messages = json.loads(f.read())
|
||||||
return messages_from_dict(messages)
|
return messages_from_dict(messages)
|
||||||
|
|
||||||
def add_messages(self, messages: Sequence[BaseMessage]) -> None:
|
def add_messages(self, messages: Sequence[BaseMessage]) -> None:
|
||||||
all_messages = list(self.messages) # Existing messages
|
all_messages = list(self.messages) # Existing messages
|
||||||
all_messages.extend(messages) # Add new messages
|
all_messages.extend(messages) # Add new messages
|
||||||
|
|
||||||
serialized = [message_to_dict(message) for message in all_messages]
|
serialized = [message_to_dict(message) for message in all_messages]
|
||||||
# Can be further optimized by only writing new messages
|
# Can be further optimized by only writing new messages
|
||||||
# using append mode.
|
# using append mode.
|
||||||
with open(os.path.join(storage_path, session_id), 'w') as f:
|
with open(os.path.join(storage_path, session_id), "w") as f:
|
||||||
json.dump(f, messages)
|
json.dump(messages, f)
|
||||||
|
|
||||||
def clear(self):
|
def clear(self):
|
||||||
with open(os.path.join(storage_path, session_id), 'w') as f:
|
with open(os.path.join(storage_path, session_id), "w") as f:
|
||||||
f.write("[]")
|
f.write("[]")
|
||||||
"""
|
"""
|
||||||
|
|
||||||
messages: list[BaseMessage]
|
messages: list[BaseMessage]
|
||||||
|
Loading…
Reference in New Issue
Block a user