MedAI_VLM / src /config.py
Jesteban247's picture
Upload 88 files
d5f2660 verified
"""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