diff --git a/src/backend/base/langflow/components/prototypes/FlowTool.py b/src/backend/base/langflow/components/prototypes/FlowTool.py index 25de92dd8..0498140ae 100644 --- a/src/backend/base/langflow/components/prototypes/FlowTool.py +++ b/src/backend/base/langflow/components/prototypes/FlowTool.py @@ -1,12 +1,11 @@ from typing import Any, List, Optional - from langflow.base.langchain_utilities.model import LCToolComponent from langflow.base.tools.flow_tool import FlowTool from langflow.field_typing import Tool from langflow.graph.graph.base import Graph from langflow.helpers.flow import get_flow_inputs -from langflow.io import BoolInput, DropdownInput, StrInput, Output +from langflow.io import BoolInput, DropdownInput, Output, StrInput from langflow.schema import Data from langflow.schema.dotdict import dotdict @@ -73,7 +72,10 @@ class FlowToolComponent(LCToolComponent): def build_tool(self) -> Tool: FlowTool.update_forward_refs() - flow_data = self.get_flow(self.flow_name) + if "flow_name" not in self._attributes or not self._attributes["flow_name"]: + raise ValueError("Flow name is required") + flow_name = self._attributes["flow_name"] + flow_data = self.get_flow(flow_name) if not flow_data: raise ValueError("Flow not found.") graph = Graph.from_payload(flow_data.data["data"]) diff --git a/src/backend/base/langflow/components/prototypes/RunFlow.py b/src/backend/base/langflow/components/prototypes/RunFlow.py index 285b0ff81..11c997696 100644 --- a/src/backend/base/langflow/components/prototypes/RunFlow.py +++ b/src/backend/base/langflow/components/prototypes/RunFlow.py @@ -48,8 +48,12 @@ class RunFlowComponent(Component): ] async def generate_results(self) -> List[Data]: + if "flow_name" not in self._attributes or not self._attributes["flow_name"]: + raise ValueError("Flow name is required") + flow_name = self._attributes["flow_name"] + results: List[Optional[RunOutputs]] = await self.run_flow( - inputs={"input_value": self.input_value}, flow_name=self.flow_name, tweaks=self.tweaks + inputs={"input_value": self.input_value}, flow_name=flow_name, tweaks=self.tweaks ) if isinstance(results, list): data = [] diff --git a/src/backend/base/langflow/components/prototypes/SubFlow.py b/src/backend/base/langflow/components/prototypes/SubFlow.py index 009822fee..4521a06ea 100644 --- a/src/backend/base/langflow/components/prototypes/SubFlow.py +++ b/src/backend/base/langflow/components/prototypes/SubFlow.py @@ -89,10 +89,10 @@ class SubFlowComponent(Component): if node not in tweaks.keys(): tweaks[node] = {} tweaks[node][name] = self._attributes[field] - + flow_name = self._attributes.get("flow_name") run_outputs = await self.run_flow( tweaks=tweaks, - flow_name=self.flow_name, + flow_name=flow_name, output_type="all", ) data: list[Data] = [] diff --git a/src/backend/base/langflow/graph/vertex/base.py b/src/backend/base/langflow/graph/vertex/base.py index b47dcf86e..1d27bf1f3 100644 --- a/src/backend/base/langflow/graph/vertex/base.py +++ b/src/backend/base/langflow/graph/vertex/base.py @@ -383,6 +383,8 @@ class Vertex: params[field_name] = [unescape_string(v) for v in val] elif isinstance(val, str): params[field_name] = unescape_string(val) + elif isinstance(val, Data): + params[field_name] = unescape_string(val.get_text()) elif field.get("type") == "bool" and val is not None: if isinstance(val, bool): params[field_name] = val diff --git a/src/backend/base/langflow/graph/vertex/types.py b/src/backend/base/langflow/graph/vertex/types.py index 4c033227a..74f9ad5f6 100644 --- a/src/backend/base/langflow/graph/vertex/types.py +++ b/src/backend/base/langflow/graph/vertex/types.py @@ -138,6 +138,8 @@ class ComponentVertex(Vertex): ) and not isinstance(artifact, Message): continue message_dict = artifact if isinstance(artifact, dict) else artifact.model_dump() + if not message_dict.get("text"): + continue try: messages.append( ChatOutputResponse(