From 44466dc2d1956dbda9e4769ffb2b4f4ab54daa27 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Thu, 14 Sep 2023 21:37:37 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(RecursiveCharacterTextSplitt?= =?UTF-8?q?er.py):=20uncomment=20line=20to=20assign=20repr=5Fvalue=20to=20?= =?UTF-8?q?separators=20variable=20=E2=9C=A8=20feat(util.py):=20add=20buil?= =?UTF-8?q?d=5Floader=5Frepr=5Ffrom=5Fdocuments=20function=20to=20generate?= =?UTF-8?q?=20a=20representation=20string=20from=20a=20list=20of=20documen?= =?UTF-8?q?ts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../textsplitters/RecursiveCharacterTextSplitter.py | 3 ++- src/backend/langflow/utils/util.py | 12 +++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/backend/langflow/components/textsplitters/RecursiveCharacterTextSplitter.py b/src/backend/langflow/components/textsplitters/RecursiveCharacterTextSplitter.py index fd04b0642..751d2518c 100644 --- a/src/backend/langflow/components/textsplitters/RecursiveCharacterTextSplitter.py +++ b/src/backend/langflow/components/textsplitters/RecursiveCharacterTextSplitter.py @@ -1,6 +1,7 @@ from typing import Optional from langflow import CustomComponent from langchain.schema import Document +from langflow.utils.util import build_loader_repr_from_documents class RecursiveCharacterTextSplitterComponent(CustomComponent): @@ -74,5 +75,5 @@ class RecursiveCharacterTextSplitterComponent(CustomComponent): ) docs = splitter.split_documents(documents) - self.repr_value = separators + self.repr_value = build_loader_repr_from_documents(docs) return docs diff --git a/src/backend/langflow/utils/util.py b/src/backend/langflow/utils/util.py index 2c8f92ee1..921f913c6 100644 --- a/src/backend/langflow/utils/util.py +++ b/src/backend/langflow/utils/util.py @@ -2,12 +2,13 @@ import re import inspect import importlib from functools import wraps -from typing import Optional, Dict, Any, Union +from typing import List, Optional, Dict, Any, Union from docstring_parser import parse from langflow.template.frontend_node.constants import FORCE_SHOW_FIELDS from langflow.utils import constants +from langchain.schema import Document def build_template_from_function( @@ -456,3 +457,12 @@ def add_options_to_field( value["options"] = options_map[class_name] value["list"] = True value["value"] = options_map[class_name][0] + + +def build_loader_repr_from_documents(documents: List[Document]) -> str: + if documents: + avg_length = sum(len(doc.page_content) for doc in documents) / len(documents) + return f"""{len(documents)} documents + \nAvg. Document Length (characters): {int(avg_length)} + Documents: {documents[:3]}...""" + return "0 documents"