diff --git a/cognee/base_config.py b/cognee/base_config.py index 940846128..8de42cbad 100644 --- a/cognee/base_config.py +++ b/cognee/base_config.py @@ -10,13 +10,20 @@ import pydantic class BaseConfig(BaseSettings): data_root_directory: str = get_absolute_path(".data_storage") system_root_directory: str = get_absolute_path(".cognee_system") - monitoring_tool: object = Observer.LANGFUSE + monitoring_tool: object = Observer.NONE @pydantic.model_validator(mode="after") def validate_paths(self): # 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) + + # Set monitoring tool based on available keys + if self.langfuse_public_key and self.langfuse_secret_key: + self.monitoring_tool = Observer.LANGFUSE + else: + self.monitoring_tool = Observer.NONE + 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"