diff --git a/frigate/data_processing/post/review_descriptions.py b/frigate/data_processing/post/review_descriptions.py index 3f32fd8b2..ba34d9a20 100644 --- a/frigate/data_processing/post/review_descriptions.py +++ b/frigate/data_processing/post/review_descriptions.py @@ -256,18 +256,21 @@ def run_analysis( objects = [] verified_objects = [] + named_objects = [] for label in set(final_data["data"]["objects"] + final_data["data"]["sub_labels"]): if "-verified" in label: + verified_objects.append(label) continue if label in labelmap_objects: objects.append(label.replace("_", " ").title()) - else: - verified_objects.append(label.replace("_", " ").title()) + + for label in verified_objects: + named_objects.append(f'{label.replace("_", " ").title()} ({label.replace("-verified", "")})') analytics_data["objects"] = objects - analytics_data["recognized_objects"] = verified_objects + analytics_data["recognized_objects"] = named_objects metadata = genai_client.generate_review_description( analytics_data, diff --git a/frigate/genai/__init__.py b/frigate/genai/__init__.py index 8778b0eaa..8d7f2a559 100644 --- a/frigate/genai/__init__.py +++ b/frigate/genai/__init__.py @@ -63,6 +63,12 @@ class GenAIClient: else: return "" + def get_verified_objects() -> str: + if review_data["recognized_objects"]: + return "\n - " + "\n - ".join(review_data["recognized_objects"]) + else: + return " None" + context_prompt = f""" Please analyze the sequence of images ({len(thumbnails)} total) taken in chronological order from the perspective of the {review_data["camera"].replace("_", " ")} security camera. @@ -102,7 +108,8 @@ Sequence details: - Frame 1 = earliest, Frame {len(thumbnails)} = latest - Activity started at {review_data["start"]} and lasted {review_data["duration"]} seconds - Detected objects: {", ".join(review_data["objects"])} -- Verified recognized objects: {", ".join(review_data["recognized_objects"]) or "None"} +- Verified recognized objects (use these names when describing these objects): +{get_verified_objects()} - Zones involved: {", ".join(z.replace("_", " ").title() for z in review_data["zones"]) or "None"} **IMPORTANT:**