diff --git a/app/services/vlm_service.py b/app/services/vlm_service.py index 19942c3..06b8735 100644 --- a/app/services/vlm_service.py +++ b/app/services/vlm_service.py @@ -61,15 +61,18 @@ description要求:≤15字,直接说结论,注明大致车辆数。 仅输出JSON:{{"confirmed":true,"description":"..."}}""", "non_motor_vehicle_parking": """你是安防监控AI复核员。算法类型:非机动车违停检测,监控区域:{roi_name}。 -截图显示时间:{timestamp}。 任务:判断图中是否有非机动车(自行车、电动车、摩托车等)违规停放在禁停区域。 分析要点: 1. 是否存在非机动车(自行车、电动车、共享单车等) 2. 非机动车是否处于静止停放状态(而非骑行经过) 3. 是否在禁停区域/消防通道内 4. 停放是否造成通道阻塞 - -请用JSON回复:{{"is_real": true/false, "confidence": 0.0-1.0, "reason": "判断依据"}}""", +- confirmed=true:有非机动车违停(告警成立) +- confirmed=false:无非机动车违停(误报) +description要求:≤15字,直接说结论。 + 告警成立示例:"电动车违停在消防通道" + 误报示例:"该区域无非机动车违停" +仅输出JSON:{{"confirmed":true,"description":"..."}}""", } # 通用降级 prompt(未知算法类型时使用) @@ -184,13 +187,16 @@ class VLMService: content = content.strip() result = json.loads(content) + # 兼容不同 prompt 返回格式(is_real/reason vs confirmed/description) + confirmed = result.get("confirmed") if "confirmed" in result else result.get("is_real", True) + description = result.get("description") or result.get("reason", "") logger.info( - f"VLM 复核完成: confirmed={result.get('confirmed')}, " - f"desc={result.get('description', '')[:30]}" + f"VLM 复核完成: confirmed={confirmed}, " + f"desc={description[:30]}" ) return { - "confirmed": result.get("confirmed", True), - "description": result.get("description", ""), + "confirmed": confirmed, + "description": description, "skipped": False, }