Spaces:
Running
Running
from pydantic import BaseModel, field_serializer | |
from pydantic.v1 import BaseModel as V1BaseModel | |
from langflow.schema.log import LoggableType | |
class Log(BaseModel): | |
name: str | |
message: LoggableType | |
type: str | |
def serialize_message(self, value): | |
# We need to make sure everything inside the message has been serialized | |
if isinstance(value, dict): | |
return {key: self.serialize_message(value[key]) for key in value} | |
if isinstance(value, list): | |
return [self.serialize_message(item) for item in value] | |
# To json is for LangChain Serializable objects | |
if hasattr(value, "dict") and isinstance(value, V1BaseModel): | |
# This is for Pydantic V1 models | |
return value.dict() | |
if hasattr(value, "to_json"): | |
return value.to_json() | |
if isinstance(value, BaseModel): | |
return value.model_dump(exclude_none=True) | |
return value | |