radioflow / config.py
SamarpeetGarad's picture
Upload config.py with huggingface_hub
72d70e3 verified
"""
RadioFlow Configuration
Model settings and environment configuration
"""
import os
from dataclasses import dataclass
from typing import Optional
@dataclass
class ModelConfig:
"""Configuration for HAI-DEF models"""
# CXR Foundation Model
CXR_MODEL_ID: str = "google/cxr-foundation"
# MedGemma Models
MEDGEMMA_MODEL_ID: str = "google/medgemma-4b-it"
MEDGEMMA_MULTIMODAL_ID: str = "google/medgemma-4b-it" # Same model handles both
# Model loading settings
DEVICE: str = "auto" # "cuda", "cpu", or "auto"
TORCH_DTYPE: str = "bfloat16" # "float16", "bfloat16", or "float32"
LOW_MEMORY_MODE: bool = True # Use 4-bit quantization if needed
# Inference settings
MAX_NEW_TOKENS: int = 1024
TEMPERATURE: float = 0.3
TOP_P: float = 0.9
DO_SAMPLE: bool = True
@dataclass
class AppConfig:
"""Application configuration"""
# App settings
APP_TITLE: str = "RadioFlow: AI-Powered Radiology Workflow Agent"
APP_DESCRIPTION: str = "Multi-agent system for chest X-ray analysis using HAI-DEF models"
# Priority thresholds
CRITICAL_THRESHOLD: float = 0.8
HIGH_THRESHOLD: float = 0.6
MODERATE_THRESHOLD: float = 0.4
# Workflow settings
ENABLE_CACHING: bool = True
LOG_LEVEL: str = "INFO"
# Demo mode (uses simulated outputs for faster demos)
DEMO_MODE: bool = False
# HuggingFace settings
HF_TOKEN: Optional[str] = os.environ.get("HF_TOKEN")
# Global configuration instances
MODEL_CONFIG = ModelConfig()
APP_CONFIG = AppConfig()
# Prompt templates for agents
PROMPTS = {
"finding_interpreter": """You are a radiologist AI assistant analyzing chest X-ray findings.
Given the following image analysis results from a CXR Foundation model, provide a detailed clinical interpretation:
**Image Analysis Results:**
{cxr_analysis}
**Clinical Context:**
{clinical_context}
Please provide:
1. A summary of detected abnormalities
2. Clinical significance of each finding
3. Differential diagnoses to consider
4. Any areas of concern
Format your response in clear, professional medical language suitable for a radiology report.""",
"report_generator": """You are an expert radiologist generating a structured radiology report.
Based on the following clinical findings, generate a complete chest X-ray report:
**Clinical Findings:**
{findings}
**Patient Context:**
{patient_context}
Generate a structured report with:
1. CLINICAL INDICATION
2. TECHNIQUE
3. COMPARISON (if available)
4. FINDINGS (detailed, organized by anatomical region)
5. IMPRESSION (numbered summary of key findings)
6. RECOMMENDATIONS
Use standard radiology reporting conventions and professional terminology.""",
"priority_router": """You are a clinical decision support AI assessing radiology case priority.
Based on the following radiology report and findings, determine the urgency and appropriate routing:
**Radiology Report:**
{report}
**Key Findings:**
{findings}
Assess and provide:
1. PRIORITY LEVEL: [STAT/URGENT/ROUTINE] with justification
2. PRIORITY SCORE: A number from 0.0 to 1.0 (1.0 = most urgent)
3. RECOMMENDED ACTIONS: Immediate steps if any
4. ROUTING: Which department/specialist should be notified
5. CRITICAL FINDINGS: Any findings requiring immediate communication
Be specific about time-sensitive conditions that require immediate attention."""
}
# Finding categories for visualization
FINDING_CATEGORIES = [
"Opacity/Consolidation",
"Nodule/Mass",
"Cardiomegaly",
"Pleural Effusion",
"Pneumothorax",
"Atelectasis",
"Emphysema",
"Fracture",
"Medical Devices",
"Other"
]
# Priority level mapping
PRIORITY_LEVELS = {
"STAT": {"score_range": (0.8, 1.0), "color": "#ef4444", "description": "Immediate attention required"},
"URGENT": {"score_range": (0.5, 0.8), "color": "#f59e0b", "description": "Review within hours"},
"ROUTINE": {"score_range": (0.0, 0.5), "color": "#22c55e", "description": "Standard workflow"}
}