more error checking

This commit is contained in:
Jason Hunter 2023-12-14 20:42:11 -05:00
parent f8dcc24c9f
commit 0fc2047ec1
2 changed files with 22 additions and 3 deletions

View File

@ -106,7 +106,11 @@ class EventProcessor(threading.Thread):
self.handle_object_detection(event_type, camera, event_data) self.handle_object_detection(event_type, camera, event_data)
if event_type == "end" and self.config.cameras[camera].gemini.enabled: if (
event_type == "end"
and not event_data["false_positive"]
and self.config.cameras[camera].gemini.enabled
):
self.gemini_queue.put( self.gemini_queue.put(
( (
camera, camera,

View File

@ -46,7 +46,6 @@ class GeminiProcessor(threading.Thread):
camera_config = self.config.cameras[camera] camera_config = self.config.cameras[camera]
st = time.time()
thumbnail = { thumbnail = {
"mime_type": "image/jpeg", "mime_type": "image/jpeg",
"data": base64.b64decode(event_data["thumbnail"]), "data": base64.b64decode(event_data["thumbnail"]),
@ -55,6 +54,8 @@ class GeminiProcessor(threading.Thread):
event_data["label"], camera_config.gemini.prompt event_data["label"], camera_config.gemini.prompt
) )
st = time.time()
response = self.model.generate_content( response = self.model.generate_content(
[thumbnail, prompt], [thumbnail, prompt],
generation_config=genai.types.GenerationConfig( generation_config=genai.types.GenerationConfig(
@ -63,11 +64,25 @@ class GeminiProcessor(threading.Thread):
), ),
) )
sub_label = response.text.strip() logger.info("Generated sub label API took %.4f seconds", time.time() - st)
try:
sub_label = response.text.split(".")[0].strip()
except ValueError:
logger.warning(
"Failed to generate sub label for %s on %s",
event_data["id"],
camera,
)
continue
try: try:
event = Event.get(Event.id == event_data["id"]) event = Event.get(Event.id == event_data["id"])
except DoesNotExist: except DoesNotExist:
logger.warning(
"Failed to find event %s",
event_data["id"],
)
continue continue
if camera_config.gemini.override_existing or not event.sub_label: if camera_config.gemini.override_existing or not event.sub_label: