From 8098cea4053e0fef77ddf2bf0cbc13c7485ec684 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Tue, 22 Aug 2023 15:36:49 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(JSONDocumentBuilder.py):=20f?= =?UTF-8?q?ix=20JSON=20serialization=20issue=20by=20using=20orjson=5Fdumps?= =?UTF-8?q?=20function=20=F0=9F=94=92=20chore(JSONDocumentBuilder.py):=20a?= =?UTF-8?q?dd=20type=20checking=20and=20raise=20TypeError=20for=20invalid?= =?UTF-8?q?=20input?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/utilities/JSONDocumentBuilder.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/backend/langflow/components/utilities/JSONDocumentBuilder.py b/src/backend/langflow/components/utilities/JSONDocumentBuilder.py index 4880200da..7cd41751f 100644 --- a/src/backend/langflow/components/utilities/JSONDocumentBuilder.py +++ b/src/backend/langflow/components/utilities/JSONDocumentBuilder.py @@ -13,6 +13,7 @@ from langflow import CustomComponent from langchain.schema import Document +from langflow.database.models.base import orjson_dumps class JSONDocumentBuilder(CustomComponent): @@ -34,9 +35,18 @@ class JSONDocumentBuilder(CustomComponent): documents = None if isinstance(document, list): documents = [ - Document(page_content={key: doc.page_content}) for doc in document + Document( + page_content=orjson_dumps({key: doc.page_content}, indent_2=False) + ) + for doc in document ] + elif isinstance(document, Document): + documents = Document( + page_content=orjson_dumps({key: document.page_content}, indent_2=False) + ) else: - documents = Document(page_content={key: document.page_content}) + raise TypeError( + f"Expected Document or list of Documents, got {type(document)}" + ) self.repr_value = documents return documents