import os from pathlib import Path import torch HF_CACHE_DIR = "/tmp/hf_cache" WHISPER_CACHE_DIR = "/tmp/whisper_cache" TORCH_CACHE_DIR = "/tmp/torch_cache" MATPLOTLIB_CONFIG = "/tmp/matplotlib" UPLOAD_FOLDER = "/tmp/uploads" PYTHAI_NLP = "/tmp/pythainlp_data" OMP_NUM_THREADS="1" OPENBLAS_NUM_THREADS="1" MKL_NUM_THREADS="1" # Set env vars ก่อน import ใด ๆ ทั้งหมด os.environ["HUGGINGFACE_HUB_CACHE"] = HF_CACHE_DIR os.environ["HF_HOME"] = HF_CACHE_DIR os.environ["HF_CACHE"] = HF_CACHE_DIR os.environ["TRANSFORMERS_CACHE"] = HF_CACHE_DIR os.environ["TORCH_HOME"] = TORCH_CACHE_DIR os.environ["MPLCONFIGDIR"] = MATPLOTLIB_CONFIG os.environ["TMPDIR"] = "/tmp" os.environ["TEMP"] = "/tmp" os.environ["TMP"] = "/tmp" os.environ["XDG_CACHE_HOME"] = "/tmp" os.environ["HOME"] = "/tmp/home" # Force HOME to writable location os.environ["PYTHAINLP_DATA_DIR"] = PYTHAI_NLP os.environ["OMP_NUM_THREADS"] = "1" os.environ["OPENBLAS_NUM_THREADS"] = "1" os.environ["MKL_NUM_THREADS"] = "1" torch.set_num_threads(1) torch.set_num_interop_threads(1) # สร้าง directories ทั้งหมด for path in [HF_CACHE_DIR, WHISPER_CACHE_DIR, TORCH_CACHE_DIR, MATPLOTLIB_CONFIG, "/tmp/home", UPLOAD_FOLDER,PYTHAI_NLP]: os.makedirs(path, exist_ok=True) # พยายามสร้าง /.cache ถ้าทำได้ (fallback) try: os.makedirs("/.cache", exist_ok=True) os.chmod("/.cache", 0o777) print("✅ Created /.cache directory") except PermissionError: print("⚠️ Cannot create /.cache, using symbolic link fallback") try: if not os.path.exists("/.cache"): os.symlink(HF_CACHE_DIR, "/.cache") print("✅ Created symbolic link /.cache -> /tmp/hf_cache") except: print("⚠️ Cannot create symbolic link, proceeding with env vars only") token = os.environ.get('HF_TOKEN') together_api_key = os.environ.get('TOGETHER_API_KEY') ngrok_auth_token = os.environ.get('NGROK_AUTH_TOKEN') SUPABASE_URL = os.environ.get('SUPABASE_URL') SUPABASE_KEY = os.environ.get('SUPABASE_KEY') # Monkey patch huggingface_hub ก่อน import อื่น ๆ def patch_huggingface_cache(): try: import huggingface_hub.constants huggingface_hub.constants.HUGGINGFACE_HUB_CACHE = HF_CACHE_DIR huggingface_hub.constants.HF_HOME = HF_CACHE_DIR print(f"✅ Patched HuggingFace cache to: {HF_CACHE_DIR}") except ImportError: pass # Patch os.path.expanduser to redirect ~/.cache original_expanduser = os.path.expanduser def patched_expanduser(path): if hasattr(path, '__fspath__'): path_str = str(path) else: path_str = path if path_str.startswith('~/.cache'): return HF_CACHE_DIR elif path_str == '~': return '/tmp/home' return original_expanduser(path) os.path.expanduser = patched_expanduser patch_huggingface_cache()