fix: fix import paths for several modules

feat: add logging for missing nodes in LangChainTypeCreator classes
feat: add support for custom TextLoader document loader
fix: fix typo in document loaders base module name
fix: fix typo in text_splitters package name and add __init__.py file

refactor(interface): rename textSplitters to text_splitters
refactor(interface): rename documentLoaders to document_loaders
refactor(interface): rename vectorStore to vectorstore
refactor(interface): rename toolkits to toolkit
refactor(interface): rename tools to tool
refactor(interface): rename prompts to prompt
refactor(interface): rename memories to memory
refactor(interface): rename embeddings to embedding
refactor(interface): rename wrappers to wrapper
fix(interface): fix typo in text_splitters/base.py
fix(interface): fix typo in toolkits/base.py
fix(interface): fix typo in vectorstore/base.py
fix(interface): fix typo in wrappers/base.py
feat(interface): add logging for when a type is not loaded
This commit is contained in:
Gabriel Almeida 2023-04-13 11:57:10 -03:00
commit c28e6ad62d
20 changed files with 59 additions and 18 deletions

View file

@ -18,16 +18,16 @@ from langflow.graph.nodes import (
)
from langflow.interface.agents.base import agent_creator
from langflow.interface.chains.base import chain_creator
from langflow.interface.documentLoaders.base import documentloader_creator
from langflow.interface.document_loaders.base import documentloader_creator
from langflow.interface.embeddings.base import embedding_creator
from langflow.interface.llms.base import llm_creator
from langflow.interface.memories.base import memory_creator
from langflow.interface.prompts.base import prompt_creator
from langflow.interface.textSplitters.base import textsplitter_creator
from langflow.interface.text_splitters.base import textsplitter_creator
from langflow.interface.toolkits.base import toolkits_creator
from langflow.interface.tools.base import tool_creator
from langflow.interface.tools.constants import FILE_TOOLS
from langflow.interface.vectorStore.base import vectorstore_creator
from langflow.interface.vectorstore.base import vectorstore_creator
from langflow.interface.wrappers.base import wrapper_creator
from langflow.utils import payload

View file

@ -6,6 +6,7 @@ from langflow.custom.customs import get_custom_nodes
from langflow.interface.agents.custom import CUSTOM_AGENTS
from langflow.interface.base import LangChainTypeCreator
from langflow.settings import settings
from langflow.utils.logger import logger
from langflow.utils.util import build_template_from_class
@ -31,6 +32,8 @@ class AgentCreator(LangChainTypeCreator):
)
except ValueError as exc:
raise ValueError("Agent not found") from exc
except AttributeError as exc:
logger.error(f"Agent {name} not loaded: {exc}")
# Now this is a generator
def to_list(self) -> List[str]:

View file

@ -1,5 +1,6 @@
from abc import ABC, abstractmethod
from typing import Any, Dict, List, Optional, Type, Union
from langflow.utils.logger import logger
from pydantic import BaseModel
@ -39,14 +40,18 @@ class LangChainTypeCreator(BaseModel, ABC):
# frontend_node.to_dict() returns a dict with the following structure:
# {name: {template: {fields}, description: str}}
# so we should update the result dict
result[self.type_name].update(self.frontend_node(name).to_dict())
node = self.frontend_node(name)
if node is not None:
node = node.to_dict()
result[self.type_name].update(node)
return result
def frontend_node(self, name) -> FrontendNode:
def frontend_node(self, name) -> Union[FrontendNode, None]:
signature = self.get_signature(name)
if signature is None:
raise ValueError(f"{name} not found")
logger.error(f"Node {name} not loaded")
return
if isinstance(signature, FrontendNode):
return signature
fields = [

View file

@ -6,6 +6,7 @@ from langflow.interface.custom_lists import chain_type_to_cls_dict
from langflow.settings import settings
from langflow.template.nodes import ChainFrontendNode
from langflow.utils.util import build_template_from_class
from langflow.utils.logger import logger
# Assuming necessary imports for Field, Template, and FrontendNode classes
@ -39,6 +40,8 @@ class ChainCreator(LangChainTypeCreator):
return build_template_from_class(name, self.type_to_loader_dict)
except ValueError as exc:
raise ValueError("Chain not found") from exc
except AttributeError as exc:
logger.error(f"Chain {name} not loaded: {exc}")
def to_list(self) -> List[str]:
custom_chains = list(get_custom_nodes("chains").keys())

View file

@ -2,9 +2,10 @@ from typing import Dict, List, Optional
from langflow.interface.base import LangChainTypeCreator
from langflow.interface.custom_lists import documentloaders_type_to_cls_dict
from langflow.interface.documentLoaders.custom import CUSTOM_DOCUMENTLOADERS
from langflow.interface.document_loaders.custom import CUSTOM_DOCUMENTLOADERS
from langflow.settings import settings
from langflow.utils.util import build_template_from_class
from langflow.utils.logger import logger
class DocumentLoaderCreator(LangChainTypeCreator):
@ -52,6 +53,8 @@ class DocumentLoaderCreator(LangChainTypeCreator):
return signature
except ValueError as exc:
raise ValueError(f"Documment Loader {name} not found") from exc
except AttributeError as exc:
logger.error(f"Documment Loader {name} not loaded: {exc}")
def to_list(self) -> List[str]:
return [

View file

@ -4,6 +4,7 @@ from langflow.interface.base import LangChainTypeCreator
from langflow.interface.custom_lists import embedding_type_to_cls_dict
from langflow.settings import settings
from langflow.utils.util import build_template_from_class
from langflow.utils.logger import logger
class EmbeddingCreator(LangChainTypeCreator):
@ -20,6 +21,9 @@ class EmbeddingCreator(LangChainTypeCreator):
except ValueError as exc:
raise ValueError(f"Embedding {name} not found") from exc
except AttributeError as exc:
logger.error(f"Embedding {name} not loaded: {exc}")
def to_list(self) -> List[str]:
return [
embedding.__name__

View file

@ -10,7 +10,7 @@ from langchain.chat_models.base import BaseChatModel
from langchain.llms.base import BaseLLM
from langchain.tools import BaseTool
from langflow.interface.documentLoaders.custom import CUSTOM_DOCUMENTLOADERS
from langflow.interface.document_loaders.custom import CUSTOM_DOCUMENTLOADERS
from langflow.interface.tools.util import get_tool_by_name

View file

@ -1,14 +1,14 @@
from langflow.interface.agents.base import agent_creator
from langflow.interface.chains.base import chain_creator
from langflow.interface.documentLoaders.base import documentloader_creator
from langflow.interface.document_loaders.base import documentloader_creator
from langflow.interface.embeddings.base import embedding_creator
from langflow.interface.llms.base import llm_creator
from langflow.interface.memories.base import memory_creator
from langflow.interface.prompts.base import prompt_creator
from langflow.interface.textSplitters.base import textsplitter_creator
from langflow.interface.text_splitters.base import textsplitter_creator
from langflow.interface.toolkits.base import toolkits_creator
from langflow.interface.tools.base import tool_creator
from langflow.interface.vectorStore.base import vectorstore_creator
from langflow.interface.vectorstore.base import vectorstore_creator
from langflow.interface.wrappers.base import wrapper_creator

View file

@ -5,6 +5,7 @@ from langflow.interface.custom_lists import llm_type_to_cls_dict
from langflow.settings import settings
from langflow.template.nodes import LLMFrontendNode
from langflow.utils.util import build_template_from_class
from langflow.utils.logger import logger
class LLMCreator(LangChainTypeCreator):
@ -27,6 +28,9 @@ class LLMCreator(LangChainTypeCreator):
except ValueError as exc:
raise ValueError("LLM not found") from exc
except AttributeError as exc:
logger.error(f"LLM {name} not loaded: {exc}")
def to_list(self) -> List[str]:
return [
llm.__name__

View file

@ -5,6 +5,7 @@ from langflow.interface.custom_lists import memory_type_to_cls_dict
from langflow.settings import settings
from langflow.template.base import FrontendNode
from langflow.template.nodes import MemoryFrontendNode
from langflow.utils.logger import logger
from langflow.utils.util import build_template_from_class
@ -28,6 +29,8 @@ class MemoryCreator(LangChainTypeCreator):
return build_template_from_class(name, memory_type_to_cls_dict)
except ValueError as exc:
raise ValueError("Memory not found") from exc
except AttributeError as exc:
logger.error(f"Memory {name} not loaded: {exc}")
def to_list(self) -> List[str]:
return [

View file

@ -8,6 +8,7 @@ from langflow.interface.importing.utils import import_class
from langflow.settings import settings
from langflow.template.nodes import PromptFrontendNode
from langflow.utils.util import build_template_from_class
from langflow.utils.logger import logger
class PromptCreator(LangChainTypeCreator):
@ -43,7 +44,10 @@ class PromptCreator(LangChainTypeCreator):
return get_custom_nodes(self.type_name)[name]
return build_template_from_class(name, self.type_to_loader_dict)
except ValueError as exc:
raise ValueError("Prompt not found") from exc
# raise ValueError("Prompt not found") from exc
logger.error(f"Prompt {name} not found: {exc}")
except AttributeError as exc:
logger.error(f"Prompt {name} not loaded: {exc}")
def to_list(self) -> List[str]:
custom_prompts = get_custom_nodes("prompts")

View file

@ -1,3 +0,0 @@
from langflow.interface.textSplitters.base import TextSplitterCreator
__all__ = ["TextSplitterCreator"]

View file

@ -0,0 +1,3 @@
from langflow.interface.text_splitters.base import TextSplitterCreator
__all__ = ["TextSplitterCreator"]

View file

@ -3,6 +3,7 @@ from typing import Dict, List, Optional
from langflow.interface.base import LangChainTypeCreator
from langflow.interface.custom_lists import textsplitter_type_to_cls_dict
from langflow.settings import settings
from langflow.utils.logger import logger
from langflow.utils.util import build_template_from_class
@ -28,6 +29,8 @@ class TextSplitterCreator(LangChainTypeCreator):
return signature
except ValueError as exc:
raise ValueError(f"Text Splitter {name} not found") from exc
except AttributeError as exc:
logger.error(f"Text Splitter {name} not loaded: {exc}")
def to_list(self) -> List[str]:
return [

View file

@ -6,6 +6,7 @@ from langflow.interface.base import LangChainTypeCreator
from langflow.interface.importing.utils import import_class, import_module
from langflow.settings import settings
from langflow.utils.util import build_template_from_class
from langflow.utils.logger import logger
class ToolkitCreator(LangChainTypeCreator):
@ -44,6 +45,8 @@ class ToolkitCreator(LangChainTypeCreator):
return build_template_from_class(name, self.type_to_loader_dict)
except ValueError as exc:
raise ValueError("Prompt not found") from exc
except AttributeError as exc:
logger.error(f"Prompt {name} not loaded: {exc}")
def to_list(self) -> List[str]:
return list(self.type_to_loader_dict.keys())

View file

@ -1,14 +1,14 @@
from langflow.interface.agents.base import agent_creator
from langflow.interface.chains.base import chain_creator
from langflow.interface.documentLoaders.base import documentloader_creator
from langflow.interface.document_loaders.base import documentloader_creator
from langflow.interface.embeddings.base import embedding_creator
from langflow.interface.llms.base import llm_creator
from langflow.interface.memories.base import memory_creator
from langflow.interface.prompts.base import prompt_creator
from langflow.interface.textSplitters.base import textsplitter_creator
from langflow.interface.text_splitters.base import textsplitter_creator
from langflow.interface.toolkits.base import toolkits_creator
from langflow.interface.tools.base import tool_creator
from langflow.interface.vectorStore.base import vectorstore_creator
from langflow.interface.vectorstore.base import vectorstore_creator
from langflow.interface.wrappers.base import wrapper_creator

View file

@ -4,6 +4,7 @@ from langflow.interface.base import LangChainTypeCreator
from langflow.interface.custom_lists import vectorstores_type_to_cls_dict
from langflow.settings import settings
from langflow.utils.util import build_template_from_class
from langflow.utils.logger import logger
class VectorstoreCreator(LangChainTypeCreator):
@ -39,6 +40,8 @@ class VectorstoreCreator(LangChainTypeCreator):
except ValueError as exc:
raise ValueError(f"Vector Store {name} not found") from exc
except AttributeError as exc:
logger.error(f"Vector Store {name} not loaded: {exc}")
def to_list(self) -> List[str]:
return [

View file

@ -4,6 +4,7 @@ from langchain import requests
from langflow.interface.base import LangChainTypeCreator
from langflow.utils.util import build_template_from_class
from langflow.utils.logger import logger
class WrapperCreator(LangChainTypeCreator):
@ -22,6 +23,8 @@ class WrapperCreator(LangChainTypeCreator):
return build_template_from_class(name, self.type_to_loader_dict)
except ValueError as exc:
raise ValueError("Wrapper not found") from exc
except AttributeError as exc:
logger.error(f"Wrapper {name} not loaded: {exc}")
def to_list(self) -> List[str]:
return list(self.type_to_loader_dict.keys())