Spaces:
Running
Running
File size: 1,813 Bytes
4040c6b | 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 | from __future__ import annotations
import os
from dataclasses import dataclass
try:
from dotenv import load_dotenv
load_dotenv()
except ImportError:
pass
@dataclass(frozen=True)
class Settings:
# Model IDs β each maps to a sponsor prize
ocr_model_id: str # MiniCPM-V 4.6 β π Best MiniCPM Build
reasoning_model_id: str # Nemotron 3 Nano 4B β π Nemotron Hardware Prize
multilingual_model_id: str # Tiny Aya 3.3B β multilingual demo
speech_model_id: str # Whisper large-v3 β voice mode
# API keys β two providers only
hf_api_key: str # HuggingFace (MiniCPM, Aya, Whisper)
featherless_api_key: str # Featherless (Nemotron)
# Generation params
max_new_tokens: int
temperature: float
# Storage
db_path: str
# Quiz config
questions_per_quest: int # regular questions per quest (boss always +1)
default_language: str
def load_settings() -> Settings:
return Settings(
ocr_model_id=os.getenv("OCR_MODEL_ID", "openbmb/MiniCPM-V-4_6"),
reasoning_model_id=os.getenv("REASONING_MODEL_ID", "nvidia/Nemotron-3-Nano-4B"),
multilingual_model_id=os.getenv("MULTILINGUAL_MODEL_ID", "CohereForAI/aya-23-35B"),
speech_model_id=os.getenv("SPEECH_MODEL_ID", "openai/whisper-large-v3"),
hf_api_key=os.getenv("HF_API_KEY", ""),
featherless_api_key=os.getenv("FEATHERLESS_API_KEY", ""),
max_new_tokens=int(os.getenv("MAX_NEW_TOKENS", "1024")),
temperature=float(os.getenv("TEMPERATURE", "0.3")),
db_path=os.getenv("DB_PATH", "studywithchampai.db"),
questions_per_quest=int(os.getenv("QUESTIONS_PER_QUEST", "3")),
default_language=os.getenv("DEFAULT_LANGUAGE", "en"),
)
SETTINGS = load_settings()
|