From ce542e93372c21fb5ca3ba685a6b51ef575a6336 Mon Sep 17 00:00:00 2001 From: Gabriel Almeida Date: Thu, 13 Apr 2023 15:54:40 -0300 Subject: [PATCH] fix(langflow): return None when a node is not loaded in LangChainTypeCreator classes --- src/backend/langflow/interface/agents/base.py | 1 + src/backend/langflow/interface/base.py | 2 +- src/backend/langflow/interface/chains/base.py | 1 + src/backend/langflow/interface/document_loaders/base.py | 1 + src/backend/langflow/interface/embeddings/base.py | 1 + src/backend/langflow/interface/llms/base.py | 1 + src/backend/langflow/interface/memories/base.py | 1 + src/backend/langflow/interface/prompts/base.py | 1 + src/backend/langflow/interface/text_splitters/base.py | 1 + src/backend/langflow/interface/toolkits/base.py | 1 + src/backend/langflow/interface/vectorStore/base.py | 1 + src/backend/langflow/interface/wrappers/base.py | 1 + 12 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/backend/langflow/interface/agents/base.py b/src/backend/langflow/interface/agents/base.py index 6c87c8fd7..1d23b481e 100644 --- a/src/backend/langflow/interface/agents/base.py +++ b/src/backend/langflow/interface/agents/base.py @@ -34,6 +34,7 @@ class AgentCreator(LangChainTypeCreator): raise ValueError("Agent not found") from exc except AttributeError as exc: logger.error(f"Agent {name} not loaded: {exc}") + return None # Now this is a generator def to_list(self) -> List[str]: diff --git a/src/backend/langflow/interface/base.py b/src/backend/langflow/interface/base.py index 29baf3e97..106adce66 100644 --- a/src/backend/langflow/interface/base.py +++ b/src/backend/langflow/interface/base.py @@ -51,7 +51,7 @@ class LangChainTypeCreator(BaseModel, ABC): signature = self.get_signature(name) if signature is None: logger.error(f"Node {name} not loaded") - return + return None if isinstance(signature, FrontendNode): return signature fields = [ diff --git a/src/backend/langflow/interface/chains/base.py b/src/backend/langflow/interface/chains/base.py index 8425c3321..8bee97655 100644 --- a/src/backend/langflow/interface/chains/base.py +++ b/src/backend/langflow/interface/chains/base.py @@ -42,6 +42,7 @@ class ChainCreator(LangChainTypeCreator): raise ValueError("Chain not found") from exc except AttributeError as exc: logger.error(f"Chain {name} not loaded: {exc}") + return None def to_list(self) -> List[str]: custom_chains = list(get_custom_nodes("chains").keys()) diff --git a/src/backend/langflow/interface/document_loaders/base.py b/src/backend/langflow/interface/document_loaders/base.py index d69e87cf3..8e2e99102 100644 --- a/src/backend/langflow/interface/document_loaders/base.py +++ b/src/backend/langflow/interface/document_loaders/base.py @@ -133,6 +133,7 @@ class DocumentLoaderCreator(LangChainTypeCreator): raise ValueError(f"Documment Loader {name} not found") from exc except AttributeError as exc: logger.error(f"Documment Loader {name} not loaded: {exc}") + return None def to_list(self) -> List[str]: return [ diff --git a/src/backend/langflow/interface/embeddings/base.py b/src/backend/langflow/interface/embeddings/base.py index 0ee7ad3f5..c64cacb88 100644 --- a/src/backend/langflow/interface/embeddings/base.py +++ b/src/backend/langflow/interface/embeddings/base.py @@ -23,6 +23,7 @@ class EmbeddingCreator(LangChainTypeCreator): except AttributeError as exc: logger.error(f"Embedding {name} not loaded: {exc}") + return None def to_list(self) -> List[str]: return [ diff --git a/src/backend/langflow/interface/llms/base.py b/src/backend/langflow/interface/llms/base.py index 25263bb03..d430409f5 100644 --- a/src/backend/langflow/interface/llms/base.py +++ b/src/backend/langflow/interface/llms/base.py @@ -30,6 +30,7 @@ class LLMCreator(LangChainTypeCreator): except AttributeError as exc: logger.error(f"LLM {name} not loaded: {exc}") + return None def to_list(self) -> List[str]: return [ diff --git a/src/backend/langflow/interface/memories/base.py b/src/backend/langflow/interface/memories/base.py index 2b74043fa..f26b09351 100644 --- a/src/backend/langflow/interface/memories/base.py +++ b/src/backend/langflow/interface/memories/base.py @@ -31,6 +31,7 @@ class MemoryCreator(LangChainTypeCreator): raise ValueError("Memory not found") from exc except AttributeError as exc: logger.error(f"Memory {name} not loaded: {exc}") + return None def to_list(self) -> List[str]: return [ diff --git a/src/backend/langflow/interface/prompts/base.py b/src/backend/langflow/interface/prompts/base.py index 14fc77ae8..260ab436a 100644 --- a/src/backend/langflow/interface/prompts/base.py +++ b/src/backend/langflow/interface/prompts/base.py @@ -48,6 +48,7 @@ class PromptCreator(LangChainTypeCreator): logger.error(f"Prompt {name} not found: {exc}") except AttributeError as exc: logger.error(f"Prompt {name} not loaded: {exc}") + return None def to_list(self) -> List[str]: custom_prompts = get_custom_nodes("prompts") diff --git a/src/backend/langflow/interface/text_splitters/base.py b/src/backend/langflow/interface/text_splitters/base.py index 1f007a6b0..e58a5bfa6 100644 --- a/src/backend/langflow/interface/text_splitters/base.py +++ b/src/backend/langflow/interface/text_splitters/base.py @@ -58,6 +58,7 @@ class TextSplitterCreator(LangChainTypeCreator): raise ValueError(f"Text Splitter {name} not found") from exc except AttributeError as exc: logger.error(f"Text Splitter {name} not loaded: {exc}") + return None def to_list(self) -> List[str]: return [ diff --git a/src/backend/langflow/interface/toolkits/base.py b/src/backend/langflow/interface/toolkits/base.py index c56ed78db..45b92963d 100644 --- a/src/backend/langflow/interface/toolkits/base.py +++ b/src/backend/langflow/interface/toolkits/base.py @@ -47,6 +47,7 @@ class ToolkitCreator(LangChainTypeCreator): raise ValueError("Prompt not found") from exc except AttributeError as exc: logger.error(f"Prompt {name} not loaded: {exc}") + return None def to_list(self) -> List[str]: return list(self.type_to_loader_dict.keys()) diff --git a/src/backend/langflow/interface/vectorStore/base.py b/src/backend/langflow/interface/vectorStore/base.py index f104619b4..6f002e16d 100644 --- a/src/backend/langflow/interface/vectorStore/base.py +++ b/src/backend/langflow/interface/vectorStore/base.py @@ -42,6 +42,7 @@ class VectorstoreCreator(LangChainTypeCreator): raise ValueError(f"Vector Store {name} not found") from exc except AttributeError as exc: logger.error(f"Vector Store {name} not loaded: {exc}") + return None def to_list(self) -> List[str]: return [ diff --git a/src/backend/langflow/interface/wrappers/base.py b/src/backend/langflow/interface/wrappers/base.py index 5ce530461..656cce83e 100644 --- a/src/backend/langflow/interface/wrappers/base.py +++ b/src/backend/langflow/interface/wrappers/base.py @@ -25,6 +25,7 @@ class WrapperCreator(LangChainTypeCreator): raise ValueError("Wrapper not found") from exc except AttributeError as exc: logger.error(f"Wrapper {name} not loaded: {exc}") + return None def to_list(self) -> List[str]: return list(self.type_to_loader_dict.keys())