Spaces:
Running
Running
| from __future__ import annotations | |
| import os | |
| from dataclasses import dataclass | |
| try: | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| except ImportError: | |
| pass | |
| 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() | |