feat: add nodes

This commit is contained in:
Ibis Prevedello 2023-04-04 15:14:16 -03:00
commit 4a26bf5d46
8 changed files with 82 additions and 10 deletions

View file

@ -37,10 +37,13 @@ toolkits:
memories:
- ConversationBufferMemory
embeddings: []
embeddings:
- OpenAIEmbeddings
vectorstores: []
vectorstores:
- Chroma
documentloaders: []
documentloaders:
- TextLoader
dev: false

View file

@ -142,3 +142,33 @@ class WrapperNode(Node):
self.params["headers"] = eval(self.params["headers"])
self._build()
return deepcopy(self._built_object)
class DocumentLoaderNode(Node):
def __init__(self, data: Dict):
super().__init__(data, base_type="documentloaders")
def build(self, force: bool = False) -> Any:
if not self._built or force:
self._build()
return deepcopy(self._built_object)
class EmbeddingNode(Node):
def __init__(self, data: Dict):
super().__init__(data, base_type="embeddings")
def build(self, force: bool = False) -> Any:
if not self._built or force:
self._build()
return deepcopy(self._built_object)
class VectorStoreNode(Node):
def __init__(self, data: Dict):
super().__init__(data, base_type="vectorstores")
def build(self, force: bool = False) -> Any:
if not self._built or force:
self._build()
return deepcopy(self._built_object)

View file

@ -7,7 +7,7 @@ from langflow.utils.util import build_template_from_class
class DocumentLoaderCreator(LangChainTypeCreator):
type_name: str = "documentloader"
type_name: str = "documentloaders"
@property
def type_to_loader_dict(self) -> Dict:
@ -16,7 +16,21 @@ class DocumentLoaderCreator(LangChainTypeCreator):
def get_signature(self, name: str) -> Optional[Dict]:
"""Get the signature of a document loader."""
try:
return build_template_from_class(name, documentloaders_type_to_cls_dict)
signature = build_template_from_class(
name, documentloaders_type_to_cls_dict
)
signature["template"]["file"] = {
"type": "file",
"required": True,
"show": True,
"name": "path",
"value": "",
"suffixes": [".txt"],
"fileTypes": ["txt"],
}
return signature
except ValueError as exc:
raise ValueError(f"Documment Loader {name} not found") from exc

View file

@ -7,7 +7,7 @@ from langflow.utils.util import build_template_from_class
class VectorstoreCreator(LangChainTypeCreator):
type_name: str = "vectorstore"
type_name: str = "vectorstores"
@property
def type_to_loader_dict(self) -> Dict:
@ -16,7 +16,26 @@ class VectorstoreCreator(LangChainTypeCreator):
def get_signature(self, name: str) -> Optional[Dict]:
"""Get the signature of an embedding."""
try:
return build_template_from_class(name, vectorstores_type_to_cls_dict)
signature = build_template_from_class(name, vectorstores_type_to_cls_dict)
signature["template"] = {
"Document Loader": {
"type": "BaseLoader",
"required": True,
"show": True,
"name": "Document Loader",
"value": "",
},
"Embedding": {
"type": "Embeddings",
"required": True,
"show": True,
"name": "Embedding",
"value": "",
},
}
return signature
except ValueError as exc:
raise ValueError(f"Vector Store {name} not found") from exc

View file

@ -76,7 +76,9 @@ export const nodeColors: {[char: string]: string} = {
advanced: "#000000",
chat: "#454173",
thought:"#272541",
docloaders:"#FF9135",
embeddings:"#FF9135",
documentloader:"#FF9135",
vectorstore: "#FF9135",
unknown:"#9CA3AF"
};
@ -89,7 +91,9 @@ export const nodeNames:{[char: string]: string} = {
memories: "Memories",
advanced: "Advanced",
chat: "Chat",
docloaders:"Document Loader",
embeddings: "Embeddings",
documentloader: "Document Loaders",
vectorstore: "Vector Stores",
toolkits:"Toolkits",
wrappers:"Wrappers",
unknown:"Unknown"
@ -104,7 +108,9 @@ export const nodeIcons:{[char: string]: React.ForwardRefExoticComponent<React.SV
tools: WrenchIcon,
advanced: ComputerDesktopIcon,
chat: Bars3CenterLeftIcon,
docloaders:Bars3CenterLeftIcon,
embeddings:PaperClipIcon,
documentloader:PaperClipIcon,
vectorstore: PaperClipIcon,
toolkits:WrenchScrewdriverIcon,
wrappers:GiftIcon,
unknown:QuestionMarkCircleIcon