From 1774fdebe680360e168cf2585127c0e84c7710f8 Mon Sep 17 00:00:00 2001 From: ogabrielluiz Date: Wed, 12 Jun 2024 23:24:35 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9D=20(loading.py):=20Update=20the=20l?= =?UTF-8?q?ogic=20in=20build=5Fcustom=5Fcomponent=20function=20to=20handle?= =?UTF-8?q?=20cases=20where=20raw=20is=20None=20and=20improve=20artifact?= =?UTF-8?q?=5Ftype=20assignment=20for=20better=20accuracy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 📝 (chat.py): Remove commented out code related to logs in build_vertex function for better code readability 📝 (schemas.py): Change the type of logs field in ResultDataResponse class to be a dictionary with string keys and Log values for consistency 📝 (schema.py): Refactor build_logs_from_artifacts function to use a dictionary instead of defaultdict for logs variable for simplicity and consistency --- src/backend/base/langflow/api/v1/chat.py | 7 ------- src/backend/base/langflow/api/v1/schemas.py | 2 +- src/backend/base/langflow/interface/initialize/loading.py | 4 +++- src/backend/base/langflow/schema/schema.py | 5 ++--- 4 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/backend/base/langflow/api/v1/chat.py b/src/backend/base/langflow/api/v1/chat.py index ad4b222da..500fab7cb 100644 --- a/src/backend/base/langflow/api/v1/chat.py +++ b/src/backend/base/langflow/api/v1/chat.py @@ -181,13 +181,6 @@ async def build_vertex( inputs_dict=inputs.model_dump() if inputs else {}, files=files, ) - # logs = {} - # if isinstance(vertex.artifacts_raw, dict): - # for key in vertex.artifacts_raw: - # log_obj = Log(message=vertex.artifacts_raw[key], type=vertex.artifacts_type[key]) - # logs[key] = log_obj - # else: - # logs = [Log(message=vertex.artifacts_raw, type=vertex.artifacts_type)] result_data_response = ResultDataResponse.model_validate(result_dict, from_attributes=True) except Exception as exc: diff --git a/src/backend/base/langflow/api/v1/schemas.py b/src/backend/base/langflow/api/v1/schemas.py index 2dde0e286..c44e0f676 100644 --- a/src/backend/base/langflow/api/v1/schemas.py +++ b/src/backend/base/langflow/api/v1/schemas.py @@ -245,7 +245,7 @@ class VerticesOrderResponse(BaseModel): class ResultDataResponse(BaseModel): results: Optional[Any] = Field(default_factory=dict) - logs: dict[str, List[Log] | Log] = Field(default_factory=dict) + logs: dict[str, Log] = Field(default_factory=dict) message: Optional[Any] = Field(default_factory=dict) artifacts: Optional[Any] = Field(default_factory=dict) timedelta: Optional[float] = None diff --git a/src/backend/base/langflow/interface/initialize/loading.py b/src/backend/base/langflow/interface/initialize/loading.py index a8901c2c7..e0ecd5797 100644 --- a/src/backend/base/langflow/interface/initialize/loading.py +++ b/src/backend/base/langflow/interface/initialize/loading.py @@ -157,8 +157,10 @@ async def build_custom_component(params: dict, custom_component: "CustomComponen elif hasattr(raw, "model_dump") and raw is not None: raw = raw.model_dump() + if raw is None and isinstance(build_result, (dict, Data, str)): + raw = build_result.data if isinstance(build_result, Data) else build_result - artifact_type = get_artifact_type(custom_component.repr_value, build_result) + artifact_type = get_artifact_type(custom_component.repr_value or raw, build_result) raw = post_process_raw(raw, artifact_type) artifact = {"repr": custom_repr, "raw": raw, "type": artifact_type} return custom_component, build_result, artifact diff --git a/src/backend/base/langflow/schema/schema.py b/src/backend/base/langflow/schema/schema.py index 30a123f8a..8ac89b805 100644 --- a/src/backend/base/langflow/schema/schema.py +++ b/src/backend/base/langflow/schema/schema.py @@ -1,4 +1,3 @@ -from collections import defaultdict from typing import Any, Literal from typing_extensions import TypedDict @@ -19,7 +18,7 @@ class Log(TypedDict): def build_logs_from_artifacts(artifacts: dict) -> dict: - logs = defaultdict(list) + logs = {} for key in artifacts: message = artifacts[key]["raw"] _type = artifacts[key]["type"] @@ -33,7 +32,7 @@ def build_logs_from_artifacts(artifacts: dict) -> dict: elif _type: log = Log(message=message, type=_type) - logs[key].append(log) + logs[key] = log return logs