diff --git a/frigate/config/camera/genai.py b/frigate/config/camera/genai.py index 186fba4a2..9a4fb71ff 100644 --- a/frigate/config/camera/genai.py +++ b/frigate/config/camera/genai.py @@ -19,7 +19,6 @@ class GenAIProviderEnum(str, Enum): class GenAIConfig(FrigateBaseModel): """Primary GenAI Config to define GenAI Provider.""" - enabled: bool = Field(default=False, title="Enable GenAI.") api_key: Optional[EnvString] = Field(default=None, title="Provider API key.") base_url: Optional[str] = Field(default=None, title="Provider base url.") model: str = Field(default="gpt-4o", title="GenAI model.") diff --git a/frigate/util/config.py b/frigate/util/config.py index 98267b9ea..5b4671b75 100644 --- a/frigate/util/config.py +++ b/frigate/util/config.py @@ -371,6 +371,22 @@ def migrate_017_0(config: dict[str, dict[str, Any]]) -> dict[str, dict[str, Any] del new_config["record"]["retain"] + # migrate global genai to new objects config + global_genai = config.get("genai", {}) + + if global_genai: + new_genai_config = {} + new_object_config = config.get("objects", {}) + new_object_config["genai"] = {} + + for key in global_genai.keys(): + if key not in ["provider", "base_url", "api_key"]: + new_object_config["genai"][key] = global_genai[key] + else: + new_genai_config[key] = global_genai[key] + + config["genai"] = new_genai_config + for name, camera in config.get("cameras", {}).items(): camera_config: dict[str, dict[str, Any]] = camera.copy() camera_record_retain = camera_config.get("record", {}).get("retain") @@ -392,6 +408,13 @@ def migrate_017_0(config: dict[str, dict[str, Any]]) -> dict[str, dict[str, Any] del camera_config["record"]["retain"] + camera_genai = camera_config.get("genai", {}) + + if camera_genai: + new_object_config = config.get("objects", {}) + new_object_config["genai"] = camera_genai + del camera_config["genai"] + new_config["cameras"][name] = camera_config new_config["version"] = "0.17-0"