Spaces:
Paused
Paused
File size: 1,622 Bytes
9e65b56 1635ec4 9e65b56 1635ec4 9e65b56 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | """Feature Flag ๊ด๋ฆฌ ๋ชจ๋.
ํ๊ฒฝ๋ณ์ ๊ธฐ๋ฐ Feature Flag์ X-Feature-Flag ํค๋๋ฅผ ํตํ ์์ฒญ๋ณ ์ค๋ฒ๋ผ์ด๋๋ฅผ ์ง์ํ๋ค.
"""
import os
from dataclasses import asdict, dataclass
from typing import Optional
from loguru import logger
@dataclass(frozen=True)
class FeatureFlags:
"""๋ฐํ์ Feature Flag ์ค์ ."""
model_version: str = "v2_lora" # v1_lora | v2_lora
@classmethod
def from_env(cls) -> "FeatureFlags":
"""ํ๊ฒฝ๋ณ์์์ Feature Flag๋ฅผ ๋ก๋ํ๋ค."""
flags = cls(
model_version=os.getenv("MODEL_VERSION", "v2_lora"),
)
logger.info(f"Feature Flags ๋ก๋: {flags}")
return flags
def override_from_header(self, header_value: Optional[str]) -> "FeatureFlags":
"""X-Feature-Flag ํค๋์์ ๋ฐํ์ ์ค๋ฒ๋ผ์ด๋.
ํ์: 'MODEL_VERSION=v1_lora'
์๋ณธ ์ธ์คํด์ค๋ ๋ณ๊ฒฝ๋์ง ์์ผ๋ฉฐ ์ ์ธ์คํด์ค๋ฅผ ๋ฐํํ๋ค.
"""
if not header_value:
return self
overrides: dict = {}
for pair in header_value.split(","):
pair = pair.strip()
if "=" not in pair:
continue
key, value = pair.split("=", 1)
key = key.strip().upper()
value = value.strip()
if key == "MODEL_VERSION":
if value in ("v1_lora", "v2_lora"):
overrides["model_version"] = value
if overrides:
current = asdict(self)
current.update(overrides)
return FeatureFlags(**current)
return self
|