From 899a8fbb3313b5a0590c5ee0be61edce8897a142 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Mon, 11 Sep 2023 14:05:35 -0300 Subject: [PATCH 1/5] =?UTF-8?q?=F0=9F=94=A7=20chore(=5F=5Fmain=5F=5F.py):?= =?UTF-8?q?=20change=20default=20value=20of=20cache=20option=20to=20None?= =?UTF-8?q?=20for=20better=20flexibility=20=F0=9F=90=9B=20fix(utils.py):?= =?UTF-8?q?=20handle=20ImportError=20when=20importing=20cache=20class=20an?= =?UTF-8?q?d=20log=20a=20warning=20message=20=F0=9F=94=A7=20chore(settings?= =?UTF-8?q?.py):=20change=20default=20value=20of=20CACHE=20option=20to=20N?= =?UTF-8?q?one=20for=20better=20flexibility?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #880 --- src/backend/langflow/__main__.py | 4 ++-- src/backend/langflow/interface/utils.py | 15 ++++++++++----- src/backend/langflow/settings.py | 2 +- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/backend/langflow/__main__.py b/src/backend/langflow/__main__.py index fa167f188..b67bc70f4 100644 --- a/src/backend/langflow/__main__.py +++ b/src/backend/langflow/__main__.py @@ -117,10 +117,10 @@ def serve( log_file: Path = typer.Option( "logs/langflow.log", help="Path to the log file.", envvar="LANGFLOW_LOG_FILE" ), - cache: str = typer.Option( + cache: Optional[str] = typer.Option( envvar="LANGFLOW_LANGCHAIN_CACHE", help="Type of cache to use. (InMemoryCache, SQLiteCache)", - default="SQLiteCache", + default=None, ), jcloud: bool = typer.Option(False, help="Deploy on Jina AI Cloud"), dev: bool = typer.Option(False, help="Run in development mode (may contain bugs)"), diff --git a/src/backend/langflow/interface/utils.py b/src/backend/langflow/interface/utils.py index d6c7b9023..2f971bb97 100644 --- a/src/backend/langflow/interface/utils.py +++ b/src/backend/langflow/interface/utils.py @@ -78,9 +78,14 @@ def set_langchain_cache(settings): import langchain from langflow.interface.importing.utils import import_class - cache_type = os.getenv("LANGFLOW_LANGCHAIN_CACHE") - cache_class = import_class(f"langchain.cache.{cache_type or settings.CACHE}") + if cache_type := os.getenv("LANGFLOW_LANGCHAIN_CACHE"): + try: + cache_class = import_class( + f"langchain.cache.{cache_type or settings.CACHE}" + ) - logger.debug(f"Setting up LLM caching with {cache_class.__name__}") - langchain.llm_cache = cache_class() - logger.info(f"LLM caching setup with {cache_class.__name__}") + logger.debug(f"Setting up LLM caching with {cache_class.__name__}") + langchain.llm_cache = cache_class() + logger.info(f"LLM caching setup with {cache_class.__name__}") + except ImportError: + logger.warning(f"Could not import {cache_type}. ") diff --git a/src/backend/langflow/settings.py b/src/backend/langflow/settings.py index abb391446..e28e90eea 100644 --- a/src/backend/langflow/settings.py +++ b/src/backend/langflow/settings.py @@ -32,7 +32,7 @@ class Settings(BaseSettings): DEV: bool = False DATABASE_URL: Optional[str] = None - CACHE: str = "InMemoryCache" + CACHE: Optional[str] = None REMOVE_API_KEYS: bool = False COMPONENTS_PATH: List[str] = [] From 6e7d7dfb518ead44660987331764633770cd5fe6 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Mon, 11 Sep 2023 14:19:11 -0300 Subject: [PATCH 2/5] =?UTF-8?q?=F0=9F=94=A7=20chore(langfuse.py):=20update?= =?UTF-8?q?=20debug=20log=20message=20for=20better=20clarity=20and=20accur?= =?UTF-8?q?acy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/langflow/services/plugins/langfuse.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/langflow/services/plugins/langfuse.py b/src/backend/langflow/services/plugins/langfuse.py index 98375a549..4dbd90a3d 100644 --- a/src/backend/langflow/services/plugins/langfuse.py +++ b/src/backend/langflow/services/plugins/langfuse.py @@ -16,7 +16,7 @@ class LangfuseInstance: @classmethod def create(cls): - logger.debug("Creating Langfuse instance") + logger.debug("Checking Langfuse credentials") from langflow.settings import settings from langfuse import Langfuse # type: ignore From 15cd835a0c07057f67320fa1a3480e3583a6d19c Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Mon, 11 Sep 2023 14:20:04 -0300 Subject: [PATCH 3/5] =?UTF-8?q?=F0=9F=94=A7=20chore(utils.py):=20add=20log?= =?UTF-8?q?ging=20statement=20when=20no=20LLM=20cache=20is=20set=20to=20pr?= =?UTF-8?q?ovide=20visibility=20and=20debugging=20information?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/langflow/interface/utils.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/backend/langflow/interface/utils.py b/src/backend/langflow/interface/utils.py index 2f971bb97..e14d0e464 100644 --- a/src/backend/langflow/interface/utils.py +++ b/src/backend/langflow/interface/utils.py @@ -89,3 +89,5 @@ def set_langchain_cache(settings): logger.info(f"LLM caching setup with {cache_class.__name__}") except ImportError: logger.warning(f"Could not import {cache_type}. ") + else: + logger.info("No LLM cache set.") From 250b11b5d9b7e09c37f7f0735c605c0fd0051ec5 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Mon, 11 Sep 2023 14:21:45 -0300 Subject: [PATCH 4/5] =?UTF-8?q?=F0=9F=90=9B=20fix(=5F=5Fmain=5F=5F.py):=20?= =?UTF-8?q?make=20cache=20argument=20optional=20in=20update=5Fsettings=20f?= =?UTF-8?q?unction=20to=20allow=20not=20passing=20a=20value=20for=20it?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/langflow/__main__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/langflow/__main__.py b/src/backend/langflow/__main__.py index b67bc70f4..d5472c1c9 100644 --- a/src/backend/langflow/__main__.py +++ b/src/backend/langflow/__main__.py @@ -22,7 +22,7 @@ app = typer.Typer() def update_settings( config: str, - cache: str, + cache: Optional[str] = None, dev: bool = False, remove_api_keys: bool = False, components_path: Optional[Path] = None, From 327cb0771f6e8d3ac7478ecd5aa505ac08f7baec Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Mon, 11 Sep 2023 14:23:35 -0300 Subject: [PATCH 5/5] =?UTF-8?q?=F0=9F=90=9B=20fix(inputListComponent):=20h?= =?UTF-8?q?andle=20conversion=20from=20string=20to=20array=20for=20value?= =?UTF-8?q?=20prop=20to=20ensure=20smooth=20operation=20and=20prevent=20po?= =?UTF-8?q?tential=20errors?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/frontend/src/components/inputListComponent/index.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/frontend/src/components/inputListComponent/index.tsx b/src/frontend/src/components/inputListComponent/index.tsx index a1f58789f..f415e4dbb 100644 --- a/src/frontend/src/components/inputListComponent/index.tsx +++ b/src/frontend/src/components/inputListComponent/index.tsx @@ -19,7 +19,9 @@ export default function InputListComponent({ }, [disabled]); // @TODO Recursive Character Text Splitter - the value might be in string format, whereas the InputListComponent specifically requires an array format. To ensure smooth operation and prevent potential errors, it's crucial that we handle the conversion from a string to an array with the string as its element. - typeof value === 'string' ? value = [value] : value = value; + if (typeof value === "string") { + value = [value]; + } return (