| # from enum import StrEnum | |
| from pydantic import BaseModel, ConfigDict | |
| class GoogleModelID(): | |
| GEMINI_2_0_FLASH = "gemini-2.0-flash" | |
| GEMINI_2_5_FLASH_PREVIEW = "gemini-2.5-flash-preview" | |
| class OpenRouterModelID(): | |
| QWEN_3_14B_FREE = "openrouter/qwen/qwen3-14b:free" | |
| GPT_4_1_MINI = "openrouter/openai/gpt-4.1-mini" | |
| GPT_O4_MINI = "openrouter/openai/o4-mini" | |
| GROK_3_MINI_BETA = "openrouter/x-ai/grok-3-mini-beta" | |
| GROK_3_BETA = "openrouter/x-ai/grok-3-beta" | |
| class Question(BaseModel): | |
| model_config = ConfigDict(validate_by_name=True, validate_by_alias=True) | |
| task_id: str | |
| question: str | |
| file_name: str | |
| class Answer(BaseModel): | |
| task_id: str | |
| answer: str | |
| class QuestionAnswerPair(BaseModel): | |
| task_id: str | |
| question: str | |
| answer: str | |
| def get_answer(self) -> dict[str, str]: | |
| return {"task_id": self.task_id, "submitted_answer": self.answer} | |
| class Results(BaseModel): | |
| model_config = ConfigDict(from_attributes=True) | |
| username: str | |
| score: int | |
| correct_count: int | |
| total_attempted: int | |
| message: str | |
| timestamp: str | |