jisubae
feat: Add optional HF dataset sync for leaderboard
4a43fed
raw
history blame
3.05 kB
"""
μ„€μ • 관리 λͺ¨λ“ˆ
μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λͺ¨λ“  섀정을 μ€‘μ•™μ—μ„œ κ΄€λ¦¬ν•©λ‹ˆλ‹€.
"""
import os
from dotenv import load_dotenv
# .env 파일 λ‘œλ“œ
load_dotenv()
class Config:
"""μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„€μ • 클래슀"""
# API μ„€μ •
# λ©€ν‹° ν‚€ 지원: UPSTAGE_API_KEYS(콀마 ꡬ뢄) μš°μ„ , μ—†μœΌλ©΄ 단일 ν‚€ μ‚¬μš©
_UPSTAGE_API_KEYS_RAW = os.getenv('UPSTAGE_API_KEYS')
if _UPSTAGE_API_KEYS_RAW:
_parsed_keys = [k.strip() for k in _UPSTAGE_API_KEYS_RAW.split(',') if k.strip()]
else:
_single = os.getenv('UPSTAGE_API_KEY')
_parsed_keys = [
_single.strip()
] if (_single and _single.strip()) else []
# 곡개 속성: ν˜Έν™˜μ„±μ„ μœ„ν•΄ 첫 번째 ν‚€λ₯Ό κΈ°μ‘΄ μ΄λ¦„μœΌλ‘œ λ…ΈμΆœ
UPSTAGE_API_KEYS = _parsed_keys
UPSTAGE_API_KEY = _parsed_keys[0] if _parsed_keys else None
HF_TOKEN = os.getenv('HF_TOKEN')
# 데이터 μ„€μ •
FRESHQA_DATA_REPO_ID = os.getenv('FRESHQA_DATA_REPO_ID')
FRESHQA_DATA_FILENAME = os.getenv('FRESHQA_DATA_FILENAME', 'ko-freshqa_2025_total.csv')
# ν”„λ‘¬ν”„νŠΈ μ„€μ •
# 멀티라인 κ°’ 지원: python-dotenvκ°€ λ‘œλ“œν•œ 원문을 κ·ΈλŒ€λ‘œ μ‚¬μš©
FRESHQA_PROMPT_RELAXED = os.getenv('FRESHQA_PROMPT_RELAXED')
FRESHQA_PROMPT_STRICT = os.getenv('FRESHQA_PROMPT_STRICT')
try:
from freshqa.freshqa_prompt import FRESHQA_PROMPT_RELAXED, FRESHQA_PROMPT_STRICT
if not FRESHQA_PROMPT_RELAXED:
FRESHQA_PROMPT_RELAXED = FRESHQA_PROMPT_RELAXED
if not FRESHQA_PROMPT_STRICT:
FRESHQA_PROMPT_STRICT = FRESHQA_PROMPT_STRICT
except Exception as e:
pass
# 제좜 μ œν•œ μ„€μ •
ENABLE_SUBMISSION_LIMIT = os.getenv('ENABLE_SUBMISSION_LIMIT', 'true').lower() == 'true'
SUBMISSION_TRACKER_REPO_ID = os.getenv('SUBMISSION_TRACKER_REPO_ID')
# λ¦¬λ”λ³΄λ“œ HF μ—…λ‘œλ“œ μ„€μ •
UPLOAD_LEADERBOARD_TO_HF = os.getenv('UPLOAD_LEADERBOARD_TO_HF', 'true').lower() == 'true'
# ν™˜κ²½ μ„€μ •
IS_HUGGINGFACE_SPACES = os.getenv("SPACE_ID") is not None
@classmethod
def validate_required_configs(cls):
"""ν•„μˆ˜ 섀정듀이 λͺ¨λ‘ μžˆλŠ”μ§€ 확인"""
missing_configs = []
# λ©€ν‹°/단일 ν‚€ λͺ¨λ‘ ν—ˆμš©: μ΅œμ†Œ 1개 ν‚€κ°€ μ‘΄μž¬ν•΄μ•Ό 함
if not cls.UPSTAGE_API_KEYS:
# λ©”μ‹œμ§€λŠ” 두 λ³€μˆ˜ λͺ¨λ‘ μ•ˆλ‚΄
missing_configs.append('UPSTAGE_API_KEY or UPSTAGE_API_KEYS')
if not cls.HF_TOKEN:
missing_configs.append('HF_TOKEN')
if not cls.FRESHQA_DATA_REPO_ID:
missing_configs.append('FRESHQA_DATA_REPO_ID')
if not cls.FRESHQA_PROMPT_RELAXED:
missing_configs.append('FRESHQA_PROMPT_RELAXED')
if not cls.FRESHQA_PROMPT_STRICT:
missing_configs.append('FRESHQA_PROMPT_STRICT')
if missing_configs:
raise ValueError(f"ν•„μˆ˜ 섀정이 λˆ„λ½λ˜μ—ˆμŠ΅λ‹ˆλ‹€: {', '.join(missing_configs)}")
return True