import os from typing import Dict, Any, List # Residency (informational; enforce via your infra) CANADA_RESIDENCY_REQUIRED = True CLOUD_REGION = os.getenv("CLOUD_REGION", "ca") # ---- Cohere API ---- COHERE_API_KEY = os.getenv("COHERE_API_KEY", "") COHERE_API_URL = os.getenv("COHERE_API_URL", "") # optional private base COHERE_TIMEOUT_S = float(os.getenv("COHERE_TIMEOUT_S", "60")) COHERE_MODEL_PRIMARY = os.getenv("COHERE_MODEL_PRIMARY", "command-a-03-2025") COHERE_EMBED_MODEL = os.getenv("COHERE_EMBED_MODEL", "embed-english-v3.0") # ---- Open-model fallback (opt-in) ---- USE_OPEN_FALLBACKS = os.getenv("USE_OPEN_FALLBACKS", "0") in ("1", "true", "True") OPEN_LLM_CANDIDATES: List[str] = [ "Qwen/Qwen2.5-72B-Instruct", "meta-llama/Meta-Llama-3.1-70B-Instruct", "mistralai/Mixtral-8x22B-Instruct-v0.1", "NousResearch/Meta-Llama-3.1-8B-Instruct", "mistralai/Mistral-7B-Instruct-v0.3", ] LOCAL_MAX_NEW_TOKENS = int(os.getenv("LOCAL_MAX_NEW_TOKENS", "1200")) # ---- App knobs ---- MODEL_SETTINGS: Dict[str, Any] = { "temperature": float(os.getenv("TEMP", "0.3")), "top_p": float(os.getenv("TOP_P", "0.9")), "repetition_penalty": float(os.getenv("REP_PEN", "1.12")), "max_new_tokens": int(os.getenv("MAX_NEW_TOKENS", "1500")), "timeout_s": COHERE_TIMEOUT_S, } HEALTHCARE_SETTINGS = { "supported_file_types": [".csv", ".txt", ".md", ".pdf"], "healthcare_keywords": [ "hospital", "clinic", "surgery", "surgical", "wait time", "consult", "triage", "beds", "occupancy", "icu", "ambulatory", "perioperative", "zone", "health authority", "province", "nova scotia", "iwk" ] } GENERAL_CONVERSATION_PROMPT = "You are a helpful, concise assistant." HEALTHCARE_SYSTEM_PROMPT = ( "You are a Canadian healthcare operations copilot. " "Follow the scenario tasks exactly. Calculations are done deterministically in code; " "do not invent numbers." ) USE_SCENARIO_ENGINE = os.getenv("USE_SCENARIO_ENGINE", "1") not in ("0", "false", "False") # Debug flags DEBUG_PLAN = os.getenv("DEBUG_PLAN", "1") in ("1", "true", "True") # Storage/local DATA_DIR = os.getenv("DATA_DIR", "./data") RAG_INDEX_DIR = os.getenv("RAG_INDEX_DIR", "./rag_index") PERSIST_CONTENT = False SNAPSHOT_PATH = os.getenv("SNAPSHOT_PATH", "./snapshots") # Existing settings you already have: # GENERAL_CONVERSATION_PROMPT = os.getenv("GENERAL_CONVERSATION_PROMPT", "You are a helpful data analyst.") # COHERE_MODEL_PRIMARY = os.getenv("COHERE_MODEL_PRIMARY", "command-r-plus") # COHERE_TIMEOUT_S = int(os.getenv("COHERE_TIMEOUT_S", "60")) #USE_OPEN_FALLBACKS = os.getenv("USE_OPEN_FALLBACKS", "false").lower() == "true" # --- HIPAA flags --- # Master switch for PHI-aware behavior PHI_MODE = os.getenv("PHI_MODE", "true").lower() == "true" # Persist history? Default OFF under PHI mode (in-memory only if True). PERSIST_HISTORY = os.getenv("PERSIST_HISTORY", "false").lower() == "true" # For persistent stores, set a non-zero TTL policy (days). 0 = no persistence. HISTORY_TTL_DAYS = int(os.getenv("HISTORY_TTL_DAYS", "0")) # Redact obvious identifiers before external LLM calls REDACT_BEFORE_LLM = os.getenv("REDACT_BEFORE_LLM", "true").lower() == "true" # Allow sending PHI to external LLM vendors (requires BAA!). Default: False ALLOW_EXTERNAL_PHI = os.getenv("ALLOW_EXTERNAL_PHI", "false").lower() == "true"