| from functools import lru_cache |
| from pathlib import Path |
|
|
| from pydantic import Field |
| from pydantic_settings import BaseSettings, SettingsConfigDict |
|
|
|
|
| class Settings(BaseSettings): |
| model_config = SettingsConfigDict(env_file=".env", extra="ignore") |
|
|
| public_model_id: str = "glm-5.2-visual-runtime" |
| glm_base_url: str = "https://open.bigmodel.cn/api/paas/v4" |
| glm_api_key: str | None = None |
| glm_model: str = "glm-5.2" |
|
|
| vision_base_url: str = "https://open.bigmodel.cn/api/paas/v4" |
| vision_api_key: str | None = None |
| vision_model: str = "glm-5v-turbo" |
|
|
| ocr_mode: str = "maas" |
| ocr_base_url: str = "http://ocr:8080" |
| ocr_api_key: str | None = None |
| ocr_model: str = "glm-ocr" |
|
|
| database_url: str = "sqlite:///./glm_vvr.db" |
| object_store_endpoint: str = "local://./data/objects" |
| object_store_bucket: str = "glm-vvr" |
| object_store_access_key: str | None = None |
| object_store_secret_key: str | None = None |
|
|
| visual_runtime_mode: str = Field(default="test", pattern="^(cloud|hybrid|local|test)$") |
| visual_cache_ttl_days: int = 30 |
| max_image_bytes: int = 10 * 1024 * 1024 |
| max_image_pixels: int = 25_000_000 |
| reference_confidence_threshold: float = 0.72 |
| slides_service_url: str = "http://slides:8787" |
|
|
| data_dir: Path = Path("./data") |
|
|
|
|
| @lru_cache |
| def get_settings() -> Settings: |
| return Settings() |
|
|