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:
parent
cf8c5a52fa
commit
c28e6ad62d
20 changed files with 59 additions and 18 deletions
|
|
@ -18,16 +18,16 @@ from langflow.graph.nodes import (
|
||||||
)
|
)
|
||||||
from langflow.interface.agents.base import agent_creator
|
from langflow.interface.agents.base import agent_creator
|
||||||
from langflow.interface.chains.base import chain_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.embeddings.base import embedding_creator
|
||||||
from langflow.interface.llms.base import llm_creator
|
from langflow.interface.llms.base import llm_creator
|
||||||
from langflow.interface.memories.base import memory_creator
|
from langflow.interface.memories.base import memory_creator
|
||||||
from langflow.interface.prompts.base import prompt_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.toolkits.base import toolkits_creator
|
||||||
from langflow.interface.tools.base import tool_creator
|
from langflow.interface.tools.base import tool_creator
|
||||||
from langflow.interface.tools.constants import FILE_TOOLS
|
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.interface.wrappers.base import wrapper_creator
|
||||||
from langflow.utils import payload
|
from langflow.utils import payload
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ from langflow.custom.customs import get_custom_nodes
|
||||||
from langflow.interface.agents.custom import CUSTOM_AGENTS
|
from langflow.interface.agents.custom import CUSTOM_AGENTS
|
||||||
from langflow.interface.base import LangChainTypeCreator
|
from langflow.interface.base import LangChainTypeCreator
|
||||||
from langflow.settings import settings
|
from langflow.settings import settings
|
||||||
|
from langflow.utils.logger import logger
|
||||||
from langflow.utils.util import build_template_from_class
|
from langflow.utils.util import build_template_from_class
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -31,6 +32,8 @@ class AgentCreator(LangChainTypeCreator):
|
||||||
)
|
)
|
||||||
except ValueError as exc:
|
except ValueError as exc:
|
||||||
raise ValueError("Agent not found") from 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
|
# Now this is a generator
|
||||||
def to_list(self) -> List[str]:
|
def to_list(self) -> List[str]:
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from typing import Any, Dict, List, Optional, Type, Union
|
from typing import Any, Dict, List, Optional, Type, Union
|
||||||
|
from langflow.utils.logger import logger
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
|
@ -39,14 +40,18 @@ class LangChainTypeCreator(BaseModel, ABC):
|
||||||
# frontend_node.to_dict() returns a dict with the following structure:
|
# frontend_node.to_dict() returns a dict with the following structure:
|
||||||
# {name: {template: {fields}, description: str}}
|
# {name: {template: {fields}, description: str}}
|
||||||
# so we should update the result dict
|
# 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
|
return result
|
||||||
|
|
||||||
def frontend_node(self, name) -> FrontendNode:
|
def frontend_node(self, name) -> Union[FrontendNode, None]:
|
||||||
signature = self.get_signature(name)
|
signature = self.get_signature(name)
|
||||||
if signature is None:
|
if signature is None:
|
||||||
raise ValueError(f"{name} not found")
|
logger.error(f"Node {name} not loaded")
|
||||||
|
return
|
||||||
if isinstance(signature, FrontendNode):
|
if isinstance(signature, FrontendNode):
|
||||||
return signature
|
return signature
|
||||||
fields = [
|
fields = [
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ from langflow.interface.custom_lists import chain_type_to_cls_dict
|
||||||
from langflow.settings import settings
|
from langflow.settings import settings
|
||||||
from langflow.template.nodes import ChainFrontendNode
|
from langflow.template.nodes import ChainFrontendNode
|
||||||
from langflow.utils.util import build_template_from_class
|
from langflow.utils.util import build_template_from_class
|
||||||
|
from langflow.utils.logger import logger
|
||||||
|
|
||||||
# Assuming necessary imports for Field, Template, and FrontendNode classes
|
# 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)
|
return build_template_from_class(name, self.type_to_loader_dict)
|
||||||
except ValueError as exc:
|
except ValueError as exc:
|
||||||
raise ValueError("Chain not found") from 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]:
|
def to_list(self) -> List[str]:
|
||||||
custom_chains = list(get_custom_nodes("chains").keys())
|
custom_chains = list(get_custom_nodes("chains").keys())
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,10 @@ from typing import Dict, List, Optional
|
||||||
|
|
||||||
from langflow.interface.base import LangChainTypeCreator
|
from langflow.interface.base import LangChainTypeCreator
|
||||||
from langflow.interface.custom_lists import documentloaders_type_to_cls_dict
|
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.settings import settings
|
||||||
from langflow.utils.util import build_template_from_class
|
from langflow.utils.util import build_template_from_class
|
||||||
|
from langflow.utils.logger import logger
|
||||||
|
|
||||||
|
|
||||||
class DocumentLoaderCreator(LangChainTypeCreator):
|
class DocumentLoaderCreator(LangChainTypeCreator):
|
||||||
|
|
@ -52,6 +53,8 @@ class DocumentLoaderCreator(LangChainTypeCreator):
|
||||||
return signature
|
return signature
|
||||||
except ValueError as exc:
|
except ValueError as exc:
|
||||||
raise ValueError(f"Documment Loader {name} not found") from 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]:
|
def to_list(self) -> List[str]:
|
||||||
return [
|
return [
|
||||||
|
|
@ -4,6 +4,7 @@ from langflow.interface.base import LangChainTypeCreator
|
||||||
from langflow.interface.custom_lists import embedding_type_to_cls_dict
|
from langflow.interface.custom_lists import embedding_type_to_cls_dict
|
||||||
from langflow.settings import settings
|
from langflow.settings import settings
|
||||||
from langflow.utils.util import build_template_from_class
|
from langflow.utils.util import build_template_from_class
|
||||||
|
from langflow.utils.logger import logger
|
||||||
|
|
||||||
|
|
||||||
class EmbeddingCreator(LangChainTypeCreator):
|
class EmbeddingCreator(LangChainTypeCreator):
|
||||||
|
|
@ -20,6 +21,9 @@ class EmbeddingCreator(LangChainTypeCreator):
|
||||||
except ValueError as exc:
|
except ValueError as exc:
|
||||||
raise ValueError(f"Embedding {name} not found") from 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]:
|
def to_list(self) -> List[str]:
|
||||||
return [
|
return [
|
||||||
embedding.__name__
|
embedding.__name__
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ from langchain.chat_models.base import BaseChatModel
|
||||||
from langchain.llms.base import BaseLLM
|
from langchain.llms.base import BaseLLM
|
||||||
from langchain.tools import BaseTool
|
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
|
from langflow.interface.tools.util import get_tool_by_name
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
from langflow.interface.agents.base import agent_creator
|
from langflow.interface.agents.base import agent_creator
|
||||||
from langflow.interface.chains.base import chain_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.embeddings.base import embedding_creator
|
||||||
from langflow.interface.llms.base import llm_creator
|
from langflow.interface.llms.base import llm_creator
|
||||||
from langflow.interface.memories.base import memory_creator
|
from langflow.interface.memories.base import memory_creator
|
||||||
from langflow.interface.prompts.base import prompt_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.toolkits.base import toolkits_creator
|
||||||
from langflow.interface.tools.base import tool_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
|
from langflow.interface.wrappers.base import wrapper_creator
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ from langflow.interface.custom_lists import llm_type_to_cls_dict
|
||||||
from langflow.settings import settings
|
from langflow.settings import settings
|
||||||
from langflow.template.nodes import LLMFrontendNode
|
from langflow.template.nodes import LLMFrontendNode
|
||||||
from langflow.utils.util import build_template_from_class
|
from langflow.utils.util import build_template_from_class
|
||||||
|
from langflow.utils.logger import logger
|
||||||
|
|
||||||
|
|
||||||
class LLMCreator(LangChainTypeCreator):
|
class LLMCreator(LangChainTypeCreator):
|
||||||
|
|
@ -27,6 +28,9 @@ class LLMCreator(LangChainTypeCreator):
|
||||||
except ValueError as exc:
|
except ValueError as exc:
|
||||||
raise ValueError("LLM not found") from 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]:
|
def to_list(self) -> List[str]:
|
||||||
return [
|
return [
|
||||||
llm.__name__
|
llm.__name__
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ from langflow.interface.custom_lists import memory_type_to_cls_dict
|
||||||
from langflow.settings import settings
|
from langflow.settings import settings
|
||||||
from langflow.template.base import FrontendNode
|
from langflow.template.base import FrontendNode
|
||||||
from langflow.template.nodes import MemoryFrontendNode
|
from langflow.template.nodes import MemoryFrontendNode
|
||||||
|
from langflow.utils.logger import logger
|
||||||
from langflow.utils.util import build_template_from_class
|
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)
|
return build_template_from_class(name, memory_type_to_cls_dict)
|
||||||
except ValueError as exc:
|
except ValueError as exc:
|
||||||
raise ValueError("Memory not found") from 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]:
|
def to_list(self) -> List[str]:
|
||||||
return [
|
return [
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ from langflow.interface.importing.utils import import_class
|
||||||
from langflow.settings import settings
|
from langflow.settings import settings
|
||||||
from langflow.template.nodes import PromptFrontendNode
|
from langflow.template.nodes import PromptFrontendNode
|
||||||
from langflow.utils.util import build_template_from_class
|
from langflow.utils.util import build_template_from_class
|
||||||
|
from langflow.utils.logger import logger
|
||||||
|
|
||||||
|
|
||||||
class PromptCreator(LangChainTypeCreator):
|
class PromptCreator(LangChainTypeCreator):
|
||||||
|
|
@ -43,7 +44,10 @@ class PromptCreator(LangChainTypeCreator):
|
||||||
return get_custom_nodes(self.type_name)[name]
|
return get_custom_nodes(self.type_name)[name]
|
||||||
return build_template_from_class(name, self.type_to_loader_dict)
|
return build_template_from_class(name, self.type_to_loader_dict)
|
||||||
except ValueError as exc:
|
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]:
|
def to_list(self) -> List[str]:
|
||||||
custom_prompts = get_custom_nodes("prompts")
|
custom_prompts = get_custom_nodes("prompts")
|
||||||
|
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
from langflow.interface.textSplitters.base import TextSplitterCreator
|
|
||||||
|
|
||||||
__all__ = ["TextSplitterCreator"]
|
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
from langflow.interface.text_splitters.base import TextSplitterCreator
|
||||||
|
|
||||||
|
__all__ = ["TextSplitterCreator"]
|
||||||
|
|
@ -3,6 +3,7 @@ from typing import Dict, List, Optional
|
||||||
from langflow.interface.base import LangChainTypeCreator
|
from langflow.interface.base import LangChainTypeCreator
|
||||||
from langflow.interface.custom_lists import textsplitter_type_to_cls_dict
|
from langflow.interface.custom_lists import textsplitter_type_to_cls_dict
|
||||||
from langflow.settings import settings
|
from langflow.settings import settings
|
||||||
|
from langflow.utils.logger import logger
|
||||||
from langflow.utils.util import build_template_from_class
|
from langflow.utils.util import build_template_from_class
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -28,6 +29,8 @@ class TextSplitterCreator(LangChainTypeCreator):
|
||||||
return signature
|
return signature
|
||||||
except ValueError as exc:
|
except ValueError as exc:
|
||||||
raise ValueError(f"Text Splitter {name} not found") from 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]:
|
def to_list(self) -> List[str]:
|
||||||
return [
|
return [
|
||||||
|
|
@ -6,6 +6,7 @@ from langflow.interface.base import LangChainTypeCreator
|
||||||
from langflow.interface.importing.utils import import_class, import_module
|
from langflow.interface.importing.utils import import_class, import_module
|
||||||
from langflow.settings import settings
|
from langflow.settings import settings
|
||||||
from langflow.utils.util import build_template_from_class
|
from langflow.utils.util import build_template_from_class
|
||||||
|
from langflow.utils.logger import logger
|
||||||
|
|
||||||
|
|
||||||
class ToolkitCreator(LangChainTypeCreator):
|
class ToolkitCreator(LangChainTypeCreator):
|
||||||
|
|
@ -44,6 +45,8 @@ class ToolkitCreator(LangChainTypeCreator):
|
||||||
return build_template_from_class(name, self.type_to_loader_dict)
|
return build_template_from_class(name, self.type_to_loader_dict)
|
||||||
except ValueError as exc:
|
except ValueError as exc:
|
||||||
raise ValueError("Prompt not found") from 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]:
|
def to_list(self) -> List[str]:
|
||||||
return list(self.type_to_loader_dict.keys())
|
return list(self.type_to_loader_dict.keys())
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
from langflow.interface.agents.base import agent_creator
|
from langflow.interface.agents.base import agent_creator
|
||||||
from langflow.interface.chains.base import chain_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.embeddings.base import embedding_creator
|
||||||
from langflow.interface.llms.base import llm_creator
|
from langflow.interface.llms.base import llm_creator
|
||||||
from langflow.interface.memories.base import memory_creator
|
from langflow.interface.memories.base import memory_creator
|
||||||
from langflow.interface.prompts.base import prompt_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.toolkits.base import toolkits_creator
|
||||||
from langflow.interface.tools.base import tool_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
|
from langflow.interface.wrappers.base import wrapper_creator
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ from langflow.interface.base import LangChainTypeCreator
|
||||||
from langflow.interface.custom_lists import vectorstores_type_to_cls_dict
|
from langflow.interface.custom_lists import vectorstores_type_to_cls_dict
|
||||||
from langflow.settings import settings
|
from langflow.settings import settings
|
||||||
from langflow.utils.util import build_template_from_class
|
from langflow.utils.util import build_template_from_class
|
||||||
|
from langflow.utils.logger import logger
|
||||||
|
|
||||||
|
|
||||||
class VectorstoreCreator(LangChainTypeCreator):
|
class VectorstoreCreator(LangChainTypeCreator):
|
||||||
|
|
@ -39,6 +40,8 @@ class VectorstoreCreator(LangChainTypeCreator):
|
||||||
|
|
||||||
except ValueError as exc:
|
except ValueError as exc:
|
||||||
raise ValueError(f"Vector Store {name} not found") from 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]:
|
def to_list(self) -> List[str]:
|
||||||
return [
|
return [
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ from langchain import requests
|
||||||
|
|
||||||
from langflow.interface.base import LangChainTypeCreator
|
from langflow.interface.base import LangChainTypeCreator
|
||||||
from langflow.utils.util import build_template_from_class
|
from langflow.utils.util import build_template_from_class
|
||||||
|
from langflow.utils.logger import logger
|
||||||
|
|
||||||
|
|
||||||
class WrapperCreator(LangChainTypeCreator):
|
class WrapperCreator(LangChainTypeCreator):
|
||||||
|
|
@ -22,6 +23,8 @@ class WrapperCreator(LangChainTypeCreator):
|
||||||
return build_template_from_class(name, self.type_to_loader_dict)
|
return build_template_from_class(name, self.type_to_loader_dict)
|
||||||
except ValueError as exc:
|
except ValueError as exc:
|
||||||
raise ValueError("Wrapper not found") from 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]:
|
def to_list(self) -> List[str]:
|
||||||
return list(self.type_to_loader_dict.keys())
|
return list(self.type_to_loader_dict.keys())
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue