diff --git a/cognee/base_config.py b/cognee/base_config.py index 2e2afb2de..100262dfc 100644 --- a/cognee/base_config.py +++ b/cognee/base_config.py @@ -11,7 +11,8 @@ class BaseConfig(BaseSettings): data_root_directory: str = get_absolute_path(".data_storage") system_root_directory: str = get_absolute_path(".cognee_system") cache_root_directory: str = get_absolute_path(".cognee_cache") - monitoring_tool: object = Observer.LANGFUSE + monitoring_tool: object = Observer.NONE + @pydantic.model_validator(mode="after") def validate_paths(self): @@ -30,7 +31,10 @@ class BaseConfig(BaseSettings): # Require absolute paths for root directories self.data_root_directory = ensure_absolute_path(self.data_root_directory) self.system_root_directory = ensure_absolute_path(self.system_root_directory) - self.cache_root_directory = ensure_absolute_path(self.cache_root_directory) + # Set monitoring tool based on available keys + if self.langfuse_public_key and self.langfuse_secret_key: + self.monitoring_tool = Observer.LANGFUSE + return self langfuse_public_key: Optional[str] = os.getenv("LANGFUSE_PUBLIC_KEY") diff --git a/cognee/modules/observability/get_observe.py b/cognee/modules/observability/get_observe.py index db3655482..9ee44e46a 100644 --- a/cognee/modules/observability/get_observe.py +++ b/cognee/modules/observability/get_observe.py @@ -9,3 +9,17 @@ def get_observe(): from langfuse.decorators import observe return observe + elif monitoring == Observer.NONE: + # Return a no-op decorator that handles keyword arguments + def no_op_decorator(*args, **kwargs): + if len(args) == 1 and callable(args[0]) and not kwargs: + # Direct decoration: @observe + return args[0] + else: + # Parameterized decoration: @observe(as_type="generation") + def decorator(func): + return func + + return decorator + + return no_op_decorator diff --git a/cognee/modules/observability/observers.py b/cognee/modules/observability/observers.py index 7bd0380ec..9c4aff43b 100644 --- a/cognee/modules/observability/observers.py +++ b/cognee/modules/observability/observers.py @@ -4,6 +4,7 @@ from enum import Enum class Observer(str, Enum): """Monitoring tools""" + NONE = "none" LANGFUSE = "langfuse" LLMLITE = "llmlite" LANGSMITH = "langsmith"