diff --git a/src/backend/langflow/helpers/__init__.py b/src/backend/langflow/helpers/__init__.py new file mode 100644 index 000000000..adfa72088 --- /dev/null +++ b/src/backend/langflow/helpers/__init__.py @@ -0,0 +1,3 @@ +from .record import docs_to_records, records_to_text + +__all__ = ["docs_to_records", "records_to_text"] diff --git a/src/backend/langflow/helpers/record.py b/src/backend/langflow/helpers/record.py new file mode 100644 index 000000000..9e1f2eb34 --- /dev/null +++ b/src/backend/langflow/helpers/record.py @@ -0,0 +1,37 @@ +from langchain_core.documents import Document + +from langflow.schema import Record + + +def docs_to_records(documents: list[Document]) -> list[Record]: + """ + Converts a list of Documents to a list of Records. + + Args: + documents (list[Document]): The list of Documents to convert. + + Returns: + list[Record]: The converted list of Records. + """ + return [Record.from_document(document) for document in documents] + + +def records_to_text(template: str, records: list[Record]) -> list[str]: + """ + Converts a list of Records to a list of texts. + + Args: + records (list[Record]): The list of Records to convert. + + Returns: + list[str]: The converted list of texts. + """ + if isinstance(records, Record): + records = [records] + # Check if there are any format strings in the template + + formated_records = [ + template.format(text=record.text, data=record.data, **record.data) + for record in records + ] + return "\n".join(formated_records) diff --git a/src/backend/langflow/schema/__init__.py b/src/backend/langflow/schema/__init__.py new file mode 100644 index 000000000..8cd0af848 --- /dev/null +++ b/src/backend/langflow/schema/__init__.py @@ -0,0 +1,3 @@ +from .schema import Record + +__all__ = ["Record"] diff --git a/src/backend/langflow/schema.py b/src/backend/langflow/schema/schema.py similarity index 79% rename from src/backend/langflow/schema.py rename to src/backend/langflow/schema/schema.py index e9f437038..c99aaf127 100644 --- a/src/backend/langflow/schema.py +++ b/src/backend/langflow/schema/schema.py @@ -57,14 +57,3 @@ class Record(BaseModel): return self.text -def docs_to_records(documents: list[Document]) -> list[Record]: - """ - Converts a list of Documents to a list of Records. - - Args: - documents (list[Document]): The list of Documents to convert. - - Returns: - list[Record]: The converted list of Records. - """ - return [Record.from_document(document) for document in documents]