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:
Eric Hare 2025-06-12 16:35:44 -07:00 committed by GitHub
commit b8f72d929d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 5702 additions and 3858 deletions

View file

@ -175,6 +175,7 @@ class BaseFileComponent(Component, ABC):
_base_outputs = [
Output(display_name="Loaded Files", name="dataframe", method="load_files"),
Output(display_name="Raw Content", name="message", method="load_files_message"),
]
@abstractmethod
@ -236,6 +237,26 @@ class BaseFileComponent(Component, ABC):
return [Data()]
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:
"""Load files and return as DataFrame.

View file

@ -812,6 +812,20 @@
"DataFrame"
],
"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,

View file

@ -1823,6 +1823,20 @@
"DataFrame"
],
"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,

View file

@ -181,7 +181,9 @@
"dataType": "File",
"id": "File-m5GWE",
"name": "message",
"output_types": []
"output_types": [
"Message"
]
},
"targetHandle": {
"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œ}",
"selected": false,
"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",
"targetHandle": "{œfieldNameœ: œinput_valueœ, œidœ: œOpenAIModel-Hl8vGœ, œinputTypesœ: [œMessageœ], œtypeœ: œstrœ}"
},
@ -207,7 +209,9 @@
"dataType": "File",
"id": "File-m5GWE",
"name": "message",
"output_types": []
"output_types": [
"Message"
]
},
"targetHandle": {
"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œ}",
"selected": false,
"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",
"targetHandle": "{œfieldNameœ: œtextœ, œidœ: œPrompt-AJxY8œ, œinputTypesœ: [œMessageœ], œtypeœ: œstrœ}"
}
@ -274,6 +278,20 @@
"DataFrame"
],
"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,

View file

@ -2405,6 +2405,20 @@
"DataFrame"
],
"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,

9471
uv.lock generated

File diff suppressed because it is too large Load diff