Spaces:
Runtime error
Runtime error
| import logging | |
| import os | |
| from pathlib import Path | |
| from typing import List, Optional | |
| from pydantic import Field | |
| from pydantic_settings import BaseSettings, SettingsConfigDict | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # βΊ Paths & Constants | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| PROJECT_ROOT = Path(__file__).parent.parent | |
| APP_DATA_ROOT_DIR = Path.home() / ".wellsaid_app_data" | |
| MODELS_DIR = APP_DATA_ROOT_DIR / "models" | |
| NLTK_DATA_DIR = APP_DATA_ROOT_DIR / "nltk_data" | |
| OFFLINE_MODE = os.getenv("OFFLINE_MODE", "false").lower() == "true" | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # π Ensure Directories Exist (for offline desktop usage) | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| for directory in [MODELS_DIR, NLTK_DATA_DIR]: | |
| try: | |
| directory.mkdir(parents=True, exist_ok=True) | |
| except Exception as e: | |
| logging.warning(f"Failed to create directory {directory}: {e}") | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # π Environment Variables Setup (only if not already set) | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| env_defaults = { | |
| "HF_HOME": str(MODELS_DIR / "hf_cache"), | |
| "NLTK_DATA": str(NLTK_DATA_DIR), | |
| "SPACY_DATA": str(MODELS_DIR), | |
| } | |
| for var, default in env_defaults.items(): | |
| if not os.getenv(var): | |
| os.environ[var] = default | |
| # Update nltk.data.path immediately (if nltk is installed) | |
| try: | |
| import nltk | |
| if str(NLTK_DATA_DIR) not in nltk.data.path: | |
| nltk.data.path.append(str(NLTK_DATA_DIR)) | |
| except ImportError: | |
| pass | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # βοΈ Application Settings | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| class Settings(BaseSettings): | |
| model_config = SettingsConfigDict(env_file=".env", extra="ignore") | |
| # App basics | |
| APP_NAME: str = "WellSaidApp" | |
| API_KEY: str = "your_strong_api_key_here" | |
| # OpenAI | |
| OPENAI_API_KEY: Optional[str] = None | |
| OPENAI_MODEL: str = "gpt-4o" | |
| OPENAI_TEMPERATURE: float = 0.7 | |
| OPENAI_MAX_TOKENS: int = 1500 | |
| # API server | |
| HOST: str = "127.0.0.1" | |
| PORT: int = 8000 | |
| RELOAD: bool = False | |
| WORKER_COUNT: int = 1 | |
| # NLP models | |
| SPACY_MODEL_ID: str = "en_core_web_sm" | |
| SENTENCE_TRANSFORMER_MODEL_ID: str = "all-MiniLM-L6-v2" | |
| SENTENCE_TRANSFORMER_BATCH_SIZE: int = 2 | |
| GRAMMAR_MODEL_ID: str = "visheratin/t5-efficient-mini-grammar-correction" | |
| PARAPHRASE_MODEL_ID: str = "humarin/chatgpt_paraphraser_on_T5_base" | |
| TONE_MODEL_ID: str = "boltuix/NeuroFeel" | |
| TONE_CONFIDENCE_THRESHOLD: float = 1.0 | |
| TRANSLATION_MODEL_ID: str = "Helsinki-NLP/opus-mt-en-ROMANCE" | |
| WORDNET_NLTK_ID: str = "wordnet.zip" | |
| SUPPORTED_TRANSLATION_LANGUAGES: List[str] = [ | |
| "fr", "fr_BE", "fr_CA", "fr_FR", "wa", "frp", "oc", "ca", "rm", "lld", | |
| "fur", "lij", "lmo", "es", "es_AR", "es_CL", "es_CO", "es_CR", "es_DO", | |
| "es_EC", "es_ES", "es_GT", "es_HN", "es_MX", "es_NI", "es_PA", "es_PE", | |
| "es_PR", "es_SV", "es_UY", "es_VE", "pt", "pt_br", "pt_BR", "pt_PT", | |
| "gl", "lad", "an", "mwl", "it", "it_IT", "co", "nap", "scn", "vec", | |
| "sc", "ro", "la" | |
| ] | |
| # Data dirs | |
| INCLUSIVE_RULES_DIR: str = "app/data/en" | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # π¦ App-wide constants | |
| # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| settings = Settings() | |
| # Core settings for import | |
| APP_NAME = settings.APP_NAME | |
| LOCAL_API_HOST = settings.HOST | |
| LOCAL_API_PORT = settings.PORT | |
| # Model names | |
| SPACY_MODEL_ID = settings.SPACY_MODEL_ID | |
| SENTENCE_TRANSFORMER_MODEL_ID = settings.SENTENCE_TRANSFORMER_MODEL_ID | |
| GRAMMAR_MODEL_ID = settings.GRAMMAR_MODEL_ID | |
| PARAPHRASE_MODEL_ID = settings.PARAPHRASE_MODEL_ID | |
| TONE_MODEL_ID = settings.TONE_MODEL_ID | |
| TRANSLATION_MODEL_ID = settings.TRANSLATION_MODEL_ID | |
| WORDNET_NLTK_ID = settings.WORDNET_NLTK_ID | |
| # Data | |
| INCLUSIVE_RULES_DIR = settings.INCLUSIVE_RULES_DIR | |