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()