From a0b82715324dfe34a999c4b57daa31650f8a1752 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Tue, 10 Mar 2026 07:35:00 -0600 Subject: [PATCH] Handle percentage as int (#22370) --- frigate/data_processing/post/types.py | 1 - frigate/genai/__init__.py | 4 ++++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/frigate/data_processing/post/types.py b/frigate/data_processing/post/types.py index beb746658..6906f4a4e 100644 --- a/frigate/data_processing/post/types.py +++ b/frigate/data_processing/post/types.py @@ -15,7 +15,6 @@ class ReviewMetadata(BaseModel): ) confidence: float = Field( ge=0.0, - le=1.0, description="Confidence in the analysis, from 0 to 1.", ) potential_threat_level: int = Field( diff --git a/frigate/genai/__init__.py b/frigate/genai/__init__.py index 95e1ca046..272420dab 100644 --- a/frigate/genai/__init__.py +++ b/frigate/genai/__init__.py @@ -181,6 +181,10 @@ Each line represents a detection state, not necessarily unique individuals. Pare try: metadata = ReviewMetadata.model_validate_json(clean_json) + # Normalize confidence if model returned a percentage (e.g. 85 instead of 0.85) + if metadata.confidence > 1.0: + metadata.confidence = min(metadata.confidence / 100.0, 1.0) + # If any verified objects (contain parentheses with name), set to 0 if any("(" in obj for obj in review_data["unified_objects"]): metadata.potential_threat_level = 0