File size: 2,523 Bytes
d5f2660
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""Configuration for MedGemma AI servers and limits"""

import os

# ============================================================================
# ENVIRONMENT DETECTION
# ============================================================================
IS_HF_SPACE = os.getenv("SPACE_ID") is not None

# ============================================================================
# DEVICE DETECTION
# ============================================================================
# Delay torch import in HF Spaces (spaces must be imported first)
if not IS_HF_SPACE:
    import torch
    DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
else:
    # Will be set after spaces is imported
    DEVICE = None  # Set by server_hf.py after spaces import

# ============================================================================
# VLM MODE - CONDITIONAL (HF Spaces or Local GGUF)
# ============================================================================
if IS_HF_SPACE:
    # HF Spaces: Use transformers with preloaded models
    HF_BASE_MODEL = "unsloth/medgemma-4b-it"
    HF_FT_MODEL = "Jesteban247/brats_medgemma"
    MAX_CONCURRENT_USERS = 5  # Lower for HF Spaces
    MAX_NUM_IMAGES = int(os.getenv("MAX_NUM_IMAGES", "5"))
else:
    # Local: Use llama-cpp servers for vision language models
    BASE_SERVER_URL = "http://localhost:8080/v1/chat/completions"  # Base MedGemma model
    FT_SERVER_URL = "http://localhost:8081/v1/chat/completions"    # Fine-tuned BraTS model
    SERVER_URL = BASE_SERVER_URL  # Default to base model
    MAX_CONCURRENT_USERS = 10  # Concurrent chat requests
    REQUEST_TIMEOUT = 300  # Total request timeout (seconds)
    CONNECT_TIMEOUT = 10  # Connection timeout (seconds)

# Session Management
HISTORY_EXCHANGES = 3  # Number of exchanges to keep (3 exchanges = 6 messages)
SESSION_TTL = 300  # Session timeout in seconds (5 minutes)

# Medical AI Models Server
MODELS_SERVER_URL = "http://localhost:8000"
MODELS_SERVER_TIMEOUT = 300  # Model inference timeout (seconds)

# UI Configuration
IMAGE_PREVIEW_HEIGHT = 400  # Standard image preview height (px)
SEG3D_PREVIEW_HEIGHT = 700  # Segmentation image preview height (px)

# Segmentation Visualization
DOWNSAMPLE_FACTOR = 4  # 3D visualization downsample factor
MAX_BRAIN_POINTS = 15000  # Max brain tissue points in 3D view
MAX_TUMOR_POINTS = 3000  # Max tumor points per class in 3D view
SLICE_OFFSETS_3 = [-10, 0, 10]  # Slice offsets for 3-slice view
SLICE_OFFSETS_5 = [-10, -5, 0, 5, 10]  # Slice offsets for 5-slice view