🔨 refactor(loading.py): add type hinting to instantiate_agent function

🐛 fix(loading.py): fix type hinting in instantiate_embedding function
🔨 refactor(loading.py): add type hinting to instantiate_textsplitter function
The changes in this commit add type hinting to the `instantiate_agent`, `instantiate_embedding`, and `instantiate_textsplitter` functions to improve code readability and maintainability. The `instantiate_embedding` function had a bug in its type hinting which has been fixed.
This commit is contained in:
Gabriel Luiz Freitas Almeida 2023-06-25 19:34:25 -03:00
commit 0c398fb6c5

View file

@ -16,11 +16,10 @@ from langflow.interface.toolkits.base import toolkits_creator
from langflow.interface.chains.base import chain_creator from langflow.interface.chains.base import chain_creator
from langflow.interface.utils import load_file_into_dict from langflow.interface.utils import load_file_into_dict
from langflow.utils import validate from langflow.utils import validate
from langchain.text_splitter import TextSplitter from langchain.text_splitter import TextSplitter, RecursiveCharacterTextSplitter
from langchain.chains.base import Chain from langchain.chains.base import Chain
from langchain.vectorstores.base import VectorStore from langchain.vectorstores.base import VectorStore
from langchain.document_loaders.base import BaseLoader from langchain.document_loaders.base import BaseLoader
from langchain.embeddings.base import Embeddings
from langchain.prompts.base import BasePromptTemplate from langchain.prompts.base import BasePromptTemplate
@ -94,7 +93,7 @@ def instantiate_chains(node_type, class_object: Type[Chain], params: Dict):
return class_object(**params) return class_object(**params)
def instantiate_agent(class_object: Type[Chain], params: Dict): def instantiate_agent(class_object: Type[agent_module.Agent], params: Dict):
return load_agent_executor(class_object, params) return load_agent_executor(class_object, params)
@ -134,7 +133,7 @@ def instantiate_toolkit(node_type, class_object: Type[BaseToolkit], params: Dict
return loaded_toolkit return loaded_toolkit
def instantiate_embedding(class_object: Type[Embeddings], params: Dict): def instantiate_embedding(class_object, params: Dict):
params.pop("model", None) params.pop("model", None)
params.pop("headers", None) params.pop("headers", None)
try: try:
@ -193,14 +192,19 @@ def instantiate_documentloader(class_object: Type[BaseLoader], params: Dict):
return docs return docs
def instantiate_textsplitter(class_object: Type[TextSplitter], params: Dict): def instantiate_textsplitter(
class_object: Type[TextSplitter],
params: Dict,
):
try: try:
documents = params.pop("documents") documents = params.pop("documents")
except KeyError as e: except KeyError as exc:
raise ValueError( raise ValueError(
"The source you provided did not load correctly or was empty." "The source you provided did not load correctly or was empty."
"Try changing the chunk_size of the Text Splitter." "Try changing the chunk_size of the Text Splitter."
) from e ) from exc
if type(class_object) == RecursiveCharacterTextSplitter:
if "separator_type" in params and params["separator_type"] == "Text": if "separator_type" in params and params["separator_type"] == "Text":
text_splitter = class_object(**params) text_splitter = class_object(**params)
else: else: