From 623412169993b4ddc119d259a9f3f1463b4680df Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Sat, 9 Nov 2024 06:03:37 -0600 Subject: [PATCH] Fix genai init when disabled at global level --- frigate/embeddings/maintainer.py | 2 +- frigate/genai/__init__.py | 23 +++++++++++++++-------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/frigate/embeddings/maintainer.py b/frigate/embeddings/maintainer.py index 1578a0fe3..12c8bac72 100644 --- a/frigate/embeddings/maintainer.py +++ b/frigate/embeddings/maintainer.py @@ -62,7 +62,7 @@ class EmbeddingMaintainer(threading.Thread): self.requestor = InterProcessRequestor() self.stop_event = stop_event self.tracked_events = {} - self.genai_client = get_genai_client(config.genai) + self.genai_client = get_genai_client(config) def run(self) -> None: """Maintain a SQLite-vec database for semantic search.""" diff --git a/frigate/genai/__init__.py b/frigate/genai/__init__.py index 74fae9fea..02377a5a4 100644 --- a/frigate/genai/__init__.py +++ b/frigate/genai/__init__.py @@ -6,7 +6,7 @@ from typing import Optional from playhouse.shortcuts import model_to_dict -from frigate.config import CameraConfig, GenAIConfig, GenAIProviderEnum +from frigate.config import CameraConfig, FrigateConfig, GenAIProviderEnum from frigate.models import Event PROVIDERS = {} @@ -25,8 +25,8 @@ def register_genai_provider(key: GenAIProviderEnum): class GenAIClient: """Generative AI client for Frigate.""" - def __init__(self, genai_config: GenAIConfig, timeout: int = 60) -> None: - self.genai_config: GenAIConfig = genai_config + def __init__(self, config: FrigateConfig, timeout: int = 60) -> None: + self.config: FrigateConfig = config self.timeout = timeout self.provider = self._init_provider() @@ -52,12 +52,19 @@ class GenAIClient: return None -def get_genai_client(genai_config: GenAIConfig) -> Optional[GenAIClient]: +def get_genai_client(config: FrigateConfig) -> Optional[GenAIClient]: """Get the GenAI client.""" - load_providers() - provider = PROVIDERS.get(genai_config.provider) - if provider: - return provider(genai_config) + genai_config = config.genai + genai_cameras = [ + c for c in config.cameras.values() if c.enabled and c.genai.enabled + ] + + if genai_cameras: + load_providers() + provider = PROVIDERS.get(genai_config.provider) + if provider: + return provider(genai_config) + return None