🔧 fix(base.py): add output_types field to FrontendNode class to support specifying output types

🔧 fix(documentloaders.py): add_extra_base_classes method to set base_classes and output_types for DocumentLoaderFrontNode
🔧 fix(textsplitters.py): add_extra_base_classes method to set base_classes and output_types for TextSplittersFrontendNode
🔧 fix(vectorstores.py): change field_type to "Document" for documents field in VectorStoreFrontendNode
🔧 fix(index.ts): add output_types field to APIClassType interface
The changes were made to add support for specifying output types in the FrontendNode class and its subclasses. This allows for more flexibility in defining the behavior and capabilities of the frontend nodes in the application.
This commit is contained in:
Gabriel Luiz Freitas Almeida 2023-07-03 16:37:37 -03:00
commit db17aceb3b
5 changed files with 13 additions and 2 deletions

View file

@ -18,6 +18,7 @@ class FrontendNode(BaseModel):
name: str = ""
display_name: str = ""
custom_fields: List[str] = []
output_types: List[str] = []
def process_base_classes(self) -> None:
"""Removes unwanted base classes from the list of base classes."""
@ -36,6 +37,7 @@ class FrontendNode(BaseModel):
"base_classes": self.base_classes,
"display_name": self.display_name or self.name,
"custom_fields": self.custom_fields,
"output_types": self.output_types,
},
}

View file

@ -19,6 +19,10 @@ def build_file_field(
class DocumentLoaderFrontNode(FrontendNode):
def add_extra_base_classes(self) -> None:
self.base_classes = ["Document"]
self.output_types = ["Document"]
file_path_templates = {
"AirbyteJSONLoader": build_file_field(suffixes=[".json"], fileTypes=["json"]),
"CoNLLULoader": build_file_field(suffixes=[".csv"], fileTypes=["csv"]),

View file

@ -3,10 +3,14 @@ from langflow.template.frontend_node.base import FrontendNode
class TextSplittersFrontendNode(FrontendNode):
def add_extra_base_classes(self) -> None:
self.base_classes = ["Document"]
self.output_types = ["Document"]
def add_extra_fields(self) -> None:
self.template.add_field(
TemplateField(
field_type="BaseLoader",
field_type="Document",
required=True,
show=True,
name="documents",

View file

@ -252,7 +252,7 @@ class VectorStoreFrontendNode(FrontendNode):
# when instantiating the vectorstores
field.name = "documents"
field.field_type = "TextSplitter"
field.field_type = "Document"
field.display_name = "Documents"
field.required = False
field.show = True

View file

@ -13,6 +13,7 @@ export type APIClassType = {
template: APITemplateType;
display_name: string;
input_types?: Array<string>;
output_types?: Array<string>;
[key: string]: Array<string> | string | APITemplateType;
};