Skip to content

Commit

Permalink
fix: exclude messages field from Datastore index to avoid 1500 bytes …
Browse files Browse the repository at this point in the history
…limit (#37)

Co-authored-by: Averi Kitsch <akitsch@google.com>
  • Loading branch information
cymarechal-devoteam and averikitsch committed Apr 5, 2024
1 parent e852190 commit dc8567b
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
5 changes: 4 additions & 1 deletion src/langchain_google_datastore/chat_message_history.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,10 @@ def add_message(self, message: BaseMessage) -> None:
self._upsert_messages()

def _upsert_messages(self) -> None:
entity = self.client.entity(self.key)
entity = self.client.entity(
self.key,
exclude_from_indexes=["messages"],
)
entity["messages"] = encode_messages(self.messages)
self.client.put(entity)

Expand Down
25 changes: 25 additions & 0 deletions tests/unit_tests/test_chat_message_history.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,31 @@ def test_firestore_history_workflow(test_case: TestCase) -> None:
assert len(chat_history.messages) == 0


def test_firestore_large_history_workflow(test_case: TestCase) -> None:
session_id = uuid.uuid4().hex
chat_history = DatastoreChatMessageHistory(
session_id=session_id, kind="HistoryWorkflow"
)

ai_message = "A" * 5000
user_message = "B" * 5000

chat_history.add_ai_message(ai_message)
chat_history.add_user_message(user_message)

expected_messages = [
AIMessage(content=ai_message),
HumanMessage(content=user_message),
]

test_case.assertCountEqual(expected_messages, chat_history.messages)

chat_history.clear()
chat_history._load_messages()

assert len(chat_history.messages) == 0


def test_firestore_load_messages(test_case: TestCase) -> None:
NUM_MESSAGES = 25
session_id = uuid.uuid4().hex
Expand Down

0 comments on commit dc8567b

Please sign in to comment.