feat: Add raw content output for File component (#8515)
* Add raw content output for File component * Update src/backend/base/langflow/base/data/base_file.py Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * [autofix.ci] apply automated fixes * [autofix.ci] apply automated fixes --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Edwin Jose <edwin.jose@datastax.com>
This commit is contained in:
parent
d51d379ab9
commit
b8f72d929d
6 changed files with 5702 additions and 3858 deletions
|
|
@ -175,6 +175,7 @@ class BaseFileComponent(Component, ABC):
|
||||||
|
|
||||||
_base_outputs = [
|
_base_outputs = [
|
||||||
Output(display_name="Loaded Files", name="dataframe", method="load_files"),
|
Output(display_name="Loaded Files", name="dataframe", method="load_files"),
|
||||||
|
Output(display_name="Raw Content", name="message", method="load_files_message"),
|
||||||
]
|
]
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
|
|
@ -236,6 +237,26 @@ class BaseFileComponent(Component, ABC):
|
||||||
return [Data()]
|
return [Data()]
|
||||||
return data_list
|
return data_list
|
||||||
|
|
||||||
|
def load_files_message(self) -> Message:
|
||||||
|
"""Load files and return as Message.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Message: Message containing all file data
|
||||||
|
"""
|
||||||
|
data_list = self.load_files_core()
|
||||||
|
if not data_list:
|
||||||
|
return Message() # No data -> empty message
|
||||||
|
|
||||||
|
sep: str = getattr(self, "separator", "\n\n") or "\n\n"
|
||||||
|
|
||||||
|
parts: list[str] = []
|
||||||
|
for d in data_list:
|
||||||
|
# Prefer explicit text if available, fall back to full dict, lastly str()
|
||||||
|
text = (getattr(d, "get_text", lambda: None)() or d.data.get("text")) if isinstance(d.data, dict) else None
|
||||||
|
parts.append(text if text is not None else str(d))
|
||||||
|
|
||||||
|
return Message(text=sep.join(parts))
|
||||||
|
|
||||||
def load_files(self) -> DataFrame:
|
def load_files(self) -> DataFrame:
|
||||||
"""Load files and return as DataFrame.
|
"""Load files and return as DataFrame.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -812,6 +812,20 @@
|
||||||
"DataFrame"
|
"DataFrame"
|
||||||
],
|
],
|
||||||
"value": "__UNDEFINED__"
|
"value": "__UNDEFINED__"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allows_loop": false,
|
||||||
|
"cache": true,
|
||||||
|
"display_name": "Raw Content",
|
||||||
|
"group_outputs": false,
|
||||||
|
"method": "load_files_message",
|
||||||
|
"name": "message",
|
||||||
|
"selected": "Message",
|
||||||
|
"tool_mode": true,
|
||||||
|
"types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"value": "__UNDEFINED__"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
|
|
|
||||||
|
|
@ -1823,6 +1823,20 @@
|
||||||
"DataFrame"
|
"DataFrame"
|
||||||
],
|
],
|
||||||
"value": "__UNDEFINED__"
|
"value": "__UNDEFINED__"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allows_loop": false,
|
||||||
|
"cache": true,
|
||||||
|
"display_name": "Raw Content",
|
||||||
|
"group_outputs": false,
|
||||||
|
"method": "load_files_message",
|
||||||
|
"name": "message",
|
||||||
|
"selected": "Message",
|
||||||
|
"tool_mode": true,
|
||||||
|
"types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"value": "__UNDEFINED__"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
|
|
|
||||||
|
|
@ -181,7 +181,9 @@
|
||||||
"dataType": "File",
|
"dataType": "File",
|
||||||
"id": "File-m5GWE",
|
"id": "File-m5GWE",
|
||||||
"name": "message",
|
"name": "message",
|
||||||
"output_types": []
|
"output_types": [
|
||||||
|
"Message"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"targetHandle": {
|
"targetHandle": {
|
||||||
"fieldName": "input_value",
|
"fieldName": "input_value",
|
||||||
|
|
@ -195,7 +197,7 @@
|
||||||
"id": "xy-edge__File-m5GWE{œdataTypeœ:œFileœ,œidœ:œFile-m5GWEœ,œnameœ:œmessageœ,œoutput_typesœ:[œMessageœ]}-OpenAIModel-Hl8vG{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-Hl8vGœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}",
|
"id": "xy-edge__File-m5GWE{œdataTypeœ:œFileœ,œidœ:œFile-m5GWEœ,œnameœ:œmessageœ,œoutput_typesœ:[œMessageœ]}-OpenAIModel-Hl8vG{œfieldNameœ:œinput_valueœ,œidœ:œOpenAIModel-Hl8vGœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}",
|
||||||
"selected": false,
|
"selected": false,
|
||||||
"source": "File-m5GWE",
|
"source": "File-m5GWE",
|
||||||
"sourceHandle": "{œdataTypeœ: œFileœ, œidœ: œFile-m5GWEœ, œnameœ: œmessageœ, œoutput_typesœ: []}",
|
"sourceHandle": "{œdataTypeœ: œFileœ, œidœ: œFile-m5GWEœ, œnameœ: œmessageœ, œoutput_typesœ: [œMessageœ]}",
|
||||||
"target": "OpenAIModel-Hl8vG",
|
"target": "OpenAIModel-Hl8vG",
|
||||||
"targetHandle": "{œfieldNameœ: œinput_valueœ, œidœ: œOpenAIModel-Hl8vGœ, œinputTypesœ: [œMessageœ], œtypeœ: œstrœ}"
|
"targetHandle": "{œfieldNameœ: œinput_valueœ, œidœ: œOpenAIModel-Hl8vGœ, œinputTypesœ: [œMessageœ], œtypeœ: œstrœ}"
|
||||||
},
|
},
|
||||||
|
|
@ -207,7 +209,9 @@
|
||||||
"dataType": "File",
|
"dataType": "File",
|
||||||
"id": "File-m5GWE",
|
"id": "File-m5GWE",
|
||||||
"name": "message",
|
"name": "message",
|
||||||
"output_types": []
|
"output_types": [
|
||||||
|
"Message"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"targetHandle": {
|
"targetHandle": {
|
||||||
"fieldName": "text",
|
"fieldName": "text",
|
||||||
|
|
@ -221,7 +225,7 @@
|
||||||
"id": "xy-edge__File-m5GWE{œdataTypeœ:œFileœ,œidœ:œFile-m5GWEœ,œnameœ:œmessageœ,œoutput_typesœ:[œMessageœ]}-Prompt-AJxY8{œfieldNameœ:œtextœ,œidœ:œPrompt-AJxY8œ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}",
|
"id": "xy-edge__File-m5GWE{œdataTypeœ:œFileœ,œidœ:œFile-m5GWEœ,œnameœ:œmessageœ,œoutput_typesœ:[œMessageœ]}-Prompt-AJxY8{œfieldNameœ:œtextœ,œidœ:œPrompt-AJxY8œ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}",
|
||||||
"selected": false,
|
"selected": false,
|
||||||
"source": "File-m5GWE",
|
"source": "File-m5GWE",
|
||||||
"sourceHandle": "{œdataTypeœ: œFileœ, œidœ: œFile-m5GWEœ, œnameœ: œmessageœ, œoutput_typesœ: []}",
|
"sourceHandle": "{œdataTypeœ: œFileœ, œidœ: œFile-m5GWEœ, œnameœ: œmessageœ, œoutput_typesœ: [œMessageœ]}",
|
||||||
"target": "Prompt-AJxY8",
|
"target": "Prompt-AJxY8",
|
||||||
"targetHandle": "{œfieldNameœ: œtextœ, œidœ: œPrompt-AJxY8œ, œinputTypesœ: [œMessageœ], œtypeœ: œstrœ}"
|
"targetHandle": "{œfieldNameœ: œtextœ, œidœ: œPrompt-AJxY8œ, œinputTypesœ: [œMessageœ], œtypeœ: œstrœ}"
|
||||||
}
|
}
|
||||||
|
|
@ -274,6 +278,20 @@
|
||||||
"DataFrame"
|
"DataFrame"
|
||||||
],
|
],
|
||||||
"value": "__UNDEFINED__"
|
"value": "__UNDEFINED__"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allows_loop": false,
|
||||||
|
"cache": true,
|
||||||
|
"display_name": "Raw Content",
|
||||||
|
"group_outputs": false,
|
||||||
|
"method": "load_files_message",
|
||||||
|
"name": "message",
|
||||||
|
"selected": "Message",
|
||||||
|
"tool_mode": true,
|
||||||
|
"types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"value": "__UNDEFINED__"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
|
|
|
||||||
|
|
@ -2405,6 +2405,20 @@
|
||||||
"DataFrame"
|
"DataFrame"
|
||||||
],
|
],
|
||||||
"value": "__UNDEFINED__"
|
"value": "__UNDEFINED__"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allows_loop": false,
|
||||||
|
"cache": true,
|
||||||
|
"display_name": "Raw Content",
|
||||||
|
"group_outputs": false,
|
||||||
|
"method": "load_files_message",
|
||||||
|
"name": "message",
|
||||||
|
"selected": "Message",
|
||||||
|
"tool_mode": true,
|
||||||
|
"types": [
|
||||||
|
"Message"
|
||||||
|
],
|
||||||
|
"value": "__UNDEFINED__"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue