From e0364833a9dd06fff1e27959ef56ae4c4e58b7d3 Mon Sep 17 00:00:00 2001 From: Gabriel Almeida Date: Sat, 27 May 2023 16:53:57 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A5=20refactor(chat=5Fmanager.py):=20r?= =?UTF-8?q?ename=20filter=20parameter=20to=20filter=5Fmessages=20for=20cla?= =?UTF-8?q?rity=20=F0=9F=94=A5=20refactor(custom.py):=20remove=20unused=20?= =?UTF-8?q?import=20of=20SQL=5FFORMAT=5FINSTRUCTIONS=20=F0=9F=94=A5=20refa?= =?UTF-8?q?ctor(custom=5Flists.py):=20remove=20unused=20import=20of=20SQLD?= =?UTF-8?q?atabase=20and=20utility=5Ftype=5Fto=5Fcls=5Fdict=20=F0=9F=94=A5?= =?UTF-8?q?=20refactor(utilities/base.py):=20remove=20unused=20import=20of?= =?UTF-8?q?=20utility=5Ftype=5Fto=5Fcls=5Fdict=20=F0=9F=94=A5=20refactor(u?= =?UTF-8?q?tils/util.py):=20remove=20unused=20function=20build=5Ftemplate?= =?UTF-8?q?=5Ffrom=5Fparameters=20The=20changes=20made=20are=20mostly=20re?= =?UTF-8?q?moving=20unused=20imports=20and=20renaming=20a=20parameter=20fo?= =?UTF-8?q?r=20clarity.=20The=20import=20of=20SQL=5FFORMAT=5FINSTRUCTIONS?= =?UTF-8?q?=20was=20removed=20as=20it=20was=20not=20being=20used.=20The=20?= =?UTF-8?q?function=20build=5Ftemplate=5Ffrom=5Fparameters=20was=20removed?= =?UTF-8?q?=20as=20it=20was=20not=20being=20used.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/langflow/api/chat_manager.py | 4 +- .../langflow/interface/agents/custom.py | 3 +- .../langflow/interface/custom_lists.py | 8 ---- .../langflow/interface/importing/utils.py | 2 +- src/backend/langflow/interface/loading.py | 2 +- .../langflow/interface/utilities/base.py | 1 - src/backend/langflow/utils/util.py | 43 ------------------- 7 files changed, 5 insertions(+), 58 deletions(-) diff --git a/src/backend/langflow/api/chat_manager.py b/src/backend/langflow/api/chat_manager.py index 663243d17..596fd9180 100644 --- a/src/backend/langflow/api/chat_manager.py +++ b/src/backend/langflow/api/chat_manager.py @@ -29,10 +29,10 @@ class ChatHistory(Subject): if not isinstance(message, FileResponse): self.notify() - def get_history(self, client_id: str, filter=True) -> List[ChatMessage]: + def get_history(self, client_id: str, filter_messages=True) -> List[ChatMessage]: """Get the chat history for a client.""" if history := self.history.get(client_id, []): - if filter: + if filter_messages: return [msg for msg in history if msg.type not in ["start", "stream"]] return history else: diff --git a/src/backend/langflow/interface/agents/custom.py b/src/backend/langflow/interface/agents/custom.py index 355856c74..4654ef7cb 100644 --- a/src/backend/langflow/interface/agents/custom.py +++ b/src/backend/langflow/interface/agents/custom.py @@ -28,7 +28,6 @@ from langchain.agents.agent_toolkits.vectorstore.prompt import ( ROUTER_PREFIX as VECTORSTORE_ROUTER_PREFIX, ) from langchain.agents.mrkl.prompt import FORMAT_INSTRUCTIONS -from langchain.agents.mrkl.prompt import FORMAT_INSTRUCTIONS as SQL_FORMAT_INSTRUCTIONS from langchain.base_language import BaseLanguageModel from langchain.memory.chat_memory import BaseChatMemory from langchain.sql_database import SQLDatabase @@ -228,7 +227,7 @@ class SQLAgent(CustomAgentExecutor): tools=tools, # type: ignore prefix=prefix, suffix=SQL_SUFFIX, - format_instructions=SQL_FORMAT_INSTRUCTIONS, + format_instructions=FORMAT_INSTRUCTIONS, ) llm_chain = LLMChain( llm=llm, diff --git a/src/backend/langflow/interface/custom_lists.py b/src/backend/langflow/interface/custom_lists.py index ee8869bfb..0fea838b6 100644 --- a/src/backend/langflow/interface/custom_lists.py +++ b/src/backend/langflow/interface/custom_lists.py @@ -9,11 +9,9 @@ from langchain import ( memory, requests, text_splitter, - utilities, ) from langchain.agents import agent_toolkits from langchain.chat_models import ChatOpenAI -from langchain.sql_database import SQLDatabase from langflow.interface.importing.utils import import_class @@ -72,9 +70,3 @@ documentloaders_type_to_cls_dict: dict[str, Any] = { textsplitter_type_to_cls_dict: dict[str, Any] = dict( inspect.getmembers(text_splitter, inspect.isclass) ) - -## Utilities -utility_type_to_cls_dict: dict[str, Any] = dict( - inspect.getmembers(utilities, inspect.isclass) -) -utility_type_to_cls_dict["SQLDatabase"] = SQLDatabase diff --git a/src/backend/langflow/interface/importing/utils.py b/src/backend/langflow/interface/importing/utils.py index 8c65bf60e..d08e52999 100644 --- a/src/backend/langflow/interface/importing/utils.py +++ b/src/backend/langflow/interface/importing/utils.py @@ -71,9 +71,9 @@ def import_class(class_path: str) -> Any: def import_prompt(prompt: str) -> Type[PromptTemplate]: + """Import prompt from prompt name""" from langflow.interface.prompts.custom import CUSTOM_PROMPTS - """Import prompt from prompt name""" if prompt == "ZeroShotPrompt": return import_class("langchain.prompts.PromptTemplate") elif prompt in CUSTOM_PROMPTS: diff --git a/src/backend/langflow/interface/loading.py b/src/backend/langflow/interface/loading.py index bd2946a3e..cd6898a7f 100644 --- a/src/backend/langflow/interface/loading.py +++ b/src/backend/langflow/interface/loading.py @@ -152,10 +152,10 @@ def instantiate_utility(node_type, class_object, params): def load_flow_from_json(path: str, build=True): + """Load flow from json file""" # This is done to avoid circular imports from langflow.graph import Graph - """Load flow from json file""" with open(path, "r", encoding="utf-8") as f: flow_graph = json.load(f) data_graph = flow_graph["data"] diff --git a/src/backend/langflow/interface/utilities/base.py b/src/backend/langflow/interface/utilities/base.py index 3d3745b4c..6c12b0186 100644 --- a/src/backend/langflow/interface/utilities/base.py +++ b/src/backend/langflow/interface/utilities/base.py @@ -4,7 +4,6 @@ from langchain import SQLDatabase, utilities from langflow.custom.customs import get_custom_nodes from langflow.interface.base import LangChainTypeCreator -from langflow.interface.custom_lists import utility_type_to_cls_dict from langflow.interface.importing.utils import import_class from langflow.settings import settings from langflow.template.frontend_node.utilities import UtilitiesFrontendNode diff --git a/src/backend/langflow/utils/util.py b/src/backend/langflow/utils/util.py index 9f2e53bc5..af49856d7 100644 --- a/src/backend/langflow/utils/util.py +++ b/src/backend/langflow/utils/util.py @@ -10,49 +10,6 @@ from langflow.template.constants import FORCE_SHOW_FIELDS from langflow.utils import constants -def build_template_from_parameters( - name: str, type_to_loader_dict: Dict, add_function: bool = False -): - # Retrieve the function that matches the provided name - func = None - for _, v in type_to_loader_dict.items(): - if v.__name__ == name: - func = v - break - - if func is None: - raise ValueError(f"{name} not found") - - # Process parameters - parameters = func.__annotations__ - variables = {} - for param_name, param_type in parameters.items(): - if param_name in ["return", "kwargs"]: - continue - - variables[param_name] = { - "type": param_type.__name__, - "default": parameters[param_name].__repr_args__()[0][1], - # Op - "placeholder": "", - } - - # Get the base classes of the return type - return_type = parameters.get("return") - base_classes = get_base_classes(return_type) if return_type else [] - if add_function: - base_classes.append("function") - - # Get the function's docstring - docs = inspect.getdoc(func) or "" - - return { - "template": format_dict(variables, name), - "description": docs["Description"], # type: ignore - "base_classes": base_classes, - } - - def build_template_from_function( name: str, type_to_loader_dict: Dict, add_function: bool = False ):