Spaces:
Running
Running
| """ | |
| Konfigurasi global lintas-modul. | |
| Berkas ini hanya menampung pengaturan yang dipakai lebih dari satu modul atau | |
| yang berkaitan dengan deployment dan kalibrasi: | |
| - mode produksi dan parameter server, | |
| - batas ukuran permintaan, | |
| - ambang confidence yang akan dikalibrasi pada tahap evaluasi. | |
| Konstanta yang hanya dipakai oleh satu detektor tetap berada di modul detektor | |
| masing-masing agar kohesinya terjaga. | |
| """ | |
| from __future__ import annotations | |
| import os | |
| def _env_flag(name: str, default: bool = False) -> bool: | |
| """Baca environment variable boolean. Nilai "1", "true", "yes" berarti True.""" | |
| value = os.environ.get(name) | |
| if value is None: | |
| return default | |
| return value.strip().lower() in {"1", "true", "yes", "on"} | |
| # Mode Produksi | |
| # | |
| # Diaktifkan dengan environment variable PROMPT_BUILDER_ENV=production. | |
| # Pada mode produksi: auto-reload dimatikan, sub-server halaman test tidak | |
| # dijalankan, dan header CORS tidak dikirim karena frontend satu origin. | |
| IS_PRODUCTION: bool = os.environ.get("PROMPT_BUILDER_ENV", "development").strip().lower() == "production" | |
| # Mengizinkan override manual bila diperlukan pada lingkungan khusus. | |
| ENABLE_AUTO_RELOAD: bool = _env_flag("PROMPT_BUILDER_AUTO_RELOAD", default=not IS_PRODUCTION) | |
| ENABLE_TEST_SUBSERVERS: bool = _env_flag("PROMPT_BUILDER_TEST_SERVERS", default=not IS_PRODUCTION) | |
| ENABLE_CORS: bool = _env_flag("PROMPT_BUILDER_CORS", default=not IS_PRODUCTION) | |
| # Parameter Server | |
| # Batas ukuran body permintaan dalam byte. Prompt normal hanya beberapa KB. | |
| MAX_BODY_BYTES: int = 1_000_000 | |
| # Profanity Layer 2 — classifier toksisitas pre-trained Indonesia (opsional). | |
| # Model dapat diganti; bila gagal dimuat, sistem otomatis kembali ke leksikon saja. | |
| PROFANITY_ML_MODEL: str = "Exqrch/IndoBERTweet-HateSpeech" | |
| PROFANITY_ML_THRESHOLD: float = 0.85 | |
| # Word Quality Layer 2 — penyaring typo kontekstual (fill-mask IndoBERT, opsional). | |
| # Menggugurkan typo false positive bila kata asli masuk akal pada konteks. | |
| WORD_QUALITY_ML_MODEL: str = "indolem/indobert-base-uncased" | |
| WORD_QUALITY_ML_TOPK: int = 20 | |
| # Field-Fit — deteksi salah-field lintas field via kemiripan embedding. | |
| # Model embedding kalimat multibahasa; bila gagal dimuat, Field-Fit tidak | |
| # mengeluarkan temuan. Aktif secara default; dimatikan oleh --fast. | |
| FIELDFIT_ML_MODEL: str = "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2" | |
| FIELDFIT_ML_COS_MIN: float = 0.50 # kemiripan minimum agar layak dipertimbangkan (dinaikkan dari 0.45) | |
| FIELDFIT_ML_MARGIN: float = 0.18 # selisih minimum field teratas vs field saat ini (dinaikkan dari 0.12) | |