From 13a91a2625c5bc334d28f1bcf5287d686de06d7a Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Tue, 5 Mar 2024 22:46:24 -0300 Subject: [PATCH] Add ExtractDataFromRecord and MergeRecords components --- .../helpers/ExtractDataFromRecord.py | 17 +++++++++++++ .../components/helpers/MergeRecords.py | 25 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 src/backend/langflow/components/helpers/ExtractDataFromRecord.py create mode 100644 src/backend/langflow/components/helpers/MergeRecords.py diff --git a/src/backend/langflow/components/helpers/ExtractDataFromRecord.py b/src/backend/langflow/components/helpers/ExtractDataFromRecord.py new file mode 100644 index 000000000..00fda4b40 --- /dev/null +++ b/src/backend/langflow/components/helpers/ExtractDataFromRecord.py @@ -0,0 +1,17 @@ +from langflow import CustomComponent +from langflow.schema import Record + + +class ExtractKeyFromRecordComponent(CustomComponent): + display_name = "Extract Key From Record" + description = "Extracts a key from a record." + + field_config = { + "record": {"display_name": "Record"}, + } + + def build(self, record: Record, key: str, silent_error: bool = True) -> dict: + + data = getattr(record, key) + self.status = data + return data diff --git a/src/backend/langflow/components/helpers/MergeRecords.py b/src/backend/langflow/components/helpers/MergeRecords.py new file mode 100644 index 000000000..9c280d12a --- /dev/null +++ b/src/backend/langflow/components/helpers/MergeRecords.py @@ -0,0 +1,25 @@ +from langflow import CustomComponent +from langflow.schema import Record + + +class MergeRecordsComponent(CustomComponent): + display_name = "Merge Records" + description = "Merges records." + + field_config = { + "records": {"display_name": "Records"}, + } + + def build(self, records: list[Record]) -> Record: + if not records: + return records + if len(records) == 1: + return records[0] + merged_record = None + for record in records: + if merged_record is None: + merged_record = record + else: + merged_record += record + self.status = merged_record + return merged_record