Spaces:
Paused
Paused
| """Feature Flag ๊ด๋ฆฌ ๋ชจ๋. | |
| ํ๊ฒฝ๋ณ์ ๊ธฐ๋ฐ Feature Flag์ X-Feature-Flag ํค๋๋ฅผ ํตํ ์์ฒญ๋ณ ์ค๋ฒ๋ผ์ด๋๋ฅผ ์ง์ํ๋ค. | |
| """ | |
| import os | |
| from dataclasses import asdict, dataclass | |
| from typing import Optional | |
| from loguru import logger | |
| class FeatureFlags: | |
| """๋ฐํ์ Feature Flag ์ค์ .""" | |
| model_version: str = "v2_lora" # v1_lora | v2_lora | |
| 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 | |