From 71de94f65e966310f08c752b6a1f3fd0e3b1dd81 Mon Sep 17 00:00:00 2001 From: Nick Roth Date: Sat, 15 Jun 2024 08:39:40 -0500 Subject: [PATCH] Support returning sub flow outputs (#2177) Add support for returning outputs from running flow as records --- .../langflow/base/flow_processing/utils.py | 26 +++++++++++++++++-- src/backend/base/langflow/graph/schema.py | 1 + 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/backend/base/langflow/base/flow_processing/utils.py b/src/backend/base/langflow/base/flow_processing/utils.py index 1f756a1db..3a4eb393c 100644 --- a/src/backend/base/langflow/base/flow_processing/utils.py +++ b/src/backend/base/langflow/base/flow_processing/utils.py @@ -1,5 +1,7 @@ from typing import List +from loguru import logger + from langflow.graph.schema import ResultData, RunOutputs from langflow.schema import Record @@ -37,9 +39,29 @@ def build_records_from_result_data(result_data: ResultData, get_final_results_on """ messages = result_data.messages - if not messages: - return [] records = [] + + # Handle results without chat messages (calling flow) + if not messages: + # Result with a single record + if isinstance(result_data.artifacts, dict): + records.append(Record(data=result_data.artifacts)) + # List of artifacts + elif isinstance(result_data.artifacts, list): + for artifact in result_data.artifacts: + # If multiple records are found as artifacts, return as-is + if isinstance(artifact, Record): + records.append(artifact) + else: + # Warn about unknown output type + logger.warning(f"Unable to build record output from unknown ResultData.artifact: {str(artifact)}") + # Chat or text output + elif result_data.results: + records.append(Record(data={"result": result_data.results}, text_key="result")) + return records + else: + return [] + for message in messages: message_dict = message if isinstance(message, dict) else message.model_dump() if get_final_results_only: diff --git a/src/backend/base/langflow/graph/schema.py b/src/backend/base/langflow/graph/schema.py index 766575364..b95e0dbe0 100644 --- a/src/backend/base/langflow/graph/schema.py +++ b/src/backend/base/langflow/graph/schema.py @@ -71,6 +71,7 @@ INPUT_COMPONENTS = [ OUTPUT_COMPONENTS = [ InterfaceComponentTypes.ChatOutput, InterfaceComponentTypes.TextOutput, + InterfaceComponentTypes.RecordsOutput, ]