From acfb9b10618a37686c0c778823913aba7a929d7b Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Tue, 27 Feb 2024 11:38:03 -0300 Subject: [PATCH] Add serialize_field function to handle serialization of BaseModel and Document types --- src/backend/langflow/graph/utils.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/backend/langflow/graph/utils.py b/src/backend/langflow/graph/utils.py index 4bfd71fc5..83e2177b1 100644 --- a/src/backend/langflow/graph/utils.py +++ b/src/backend/langflow/graph/utils.py @@ -1,5 +1,8 @@ from typing import Any, Union +from langchain_core.documents import Document +from pydantic import BaseModel + from langflow.interface.utils import extract_input_variables_from_prompt @@ -33,3 +36,17 @@ def flatten_list(list_of_lists: list[Union[list, Any]]) -> list: else: new_list.append(item) return new_list + + +def serialize_field(value): + """Unified serialization function for handling both BaseModel and Document types, + including handling lists of these types.""" + if isinstance(value, (list, tuple)): + return [serialize_field(v) for v in value] + elif isinstance(value, Document): + return value.to_json() + elif isinstance(value, BaseModel): + return value.model_dump() + elif isinstance(value, str): + return {"result": value} + return value