Spaces:
Sleeping
Sleeping
File size: 3,975 Bytes
9c69d05 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | """
HaramGuard β Central Configuration
=====================================
Edit this file to tune thresholds without touching agent code.
"""
import os
# ββ API Keys βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
GROQ_API_KEY = os.getenv('GROQ_API_KEY', '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')
ANTHROPIC_KEY = os.getenv('ANTHROPIC_KEY', 'YOUR_ANTHROPIC_KEY_HERE')
# ββ Paths βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
_HERE = os.path.dirname(os.path.abspath(__file__))
VIDEO_PATH = os.path.join(_HERE, 'hajj_multi_video_annotated.mp4')
DB_PATH = os.path.join(_HERE, 'outputs/hajjflow_rt.db')
MODEL_PATH = os.path.join(_HERE, 'crowdhuman_yolov8m_head.pt')
# ββ Cached Detection Mode ββββββββββββββββββββββββββββββββββββββββββββ
# When set, PerceptionAgent reads pre-computed detections from JSON
# instead of running YOLO live. Set to None to use live YOLO.
CACHED_DETECTIONS_PATH = os.path.join(_HERE, 'cached_hajj_multi_video_detections.json')
# ββ PerceptionAgent βββββββββββββββββββββββββββββββββββββββββββββββββββ
PERCEPTION_MAX_PERSONS = 500
PERCEPTION_MAX_DENSITY = 50.0
PERCEPTION_CONF = 0.12
PERCEPTION_IOU = 0.5
PERCEPTION_IMGSZ = 1024
# ββ RiskAgent βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# Risk is based on Fruin density computed from a K-window aggregate
# of unique track IDs per clip segment.
#
# Risk levels (density_pct):
# HIGH : density_pct > 80
# MEDIUM : density_pct > 20
# LOW : density_pct <= 20
#
RISK_WINDOW_SIZE = 30
RISK_HIGH_THRESHOLD = 150 # legacy β kept for reference
RISK_MED_THRESHOLD = 30 # legacy β kept for reference
RISK_HIGH_DENSITY = 1.0
RISK_HIGH_COUNT = 100
RISK_EMA_ALPHA = 0.6
# ββ Clip segmentation ββββββββββββββββββββββββββββββββββββββββββββββ
CLIP_JUMP_THRESHOLD = 30 # legacy β kept for reference
CLIP_P_JUMP = 40 # person count jump >= 40 β boundary candidate
CLIP_D_JUMP = 0.4 # density_score jump >= 0.4 β boundary candidate
CLIP_MIN_LEN = 10 # boundary must persist >= 10 frames (glitch filter)
CLIP_K_WINDOW = 17 # aggregate window: union of unique IDs over K frames
# ββ ReflectionAgent βββββββββββββββββββββββββββββββββββββββββββββββββββ
REFLECTION_BIAS_WINDOW = 10 # reduced: 17-frame loop, catch bias faster
REFLECTION_CROWD_LOW_THRESH = 40 # chronic LOW suspicious above 40 persons
REFLECTION_HIGH_CROWD_THRESH = 100 # 100+ persons but LOW β upgrade to MEDIUM
REFLECTION_OVER_EST_THRESH = 10 # HIGH risk but <10 persons β downgrade
# ββ OperationsAgent βββββββββββββββββββββββββββββββββββββββββββββββββββ
OPS_RATE_LIMIT_SEC = 3 # minimal cooldown: LLM fires immediately on level change
OPS_P0_SCORE = 0.80 # density_pct > 80% β P0 (HIGH)
OPS_P1_SCORE = 0.20 # density_pct > 20% β P1 (MEDIUM)
# ββ API Server βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
API_PORT = 8000 |