import os from dataclasses import dataclass, field from pathlib import Path from dotenv import load_dotenv load_dotenv(Path(__file__).resolve().parent.parent / ".env") @dataclass(frozen=True) class Settings: # LLM 配置 llm_api_key: str = field( default_factory=lambda: os.getenv("LLM_API_KEY", ""), repr=False, ) llm_model: str = field(default_factory=lambda: os.getenv("LLM_MODEL", "")) llm_base_url: str | None = field( default_factory=lambda: os.getenv("LLM_BASE_URL") or None ) llm_timeout: float = 60.0 llm_max_retries: int = 2 # Jev typesafe_api_key: str = field( default_factory=lambda: os.getenv("TYPESAFE_API_KEY", ""), repr=False ) typesafe_model: str = field( default_factory=lambda: os.getenv("TYPESAFE_DEFAULT_MODEL") or "jev-latest" ) typesafe_base_url: str = field( default_factory=lambda: ( os.getenv("TYPESAFE_BASE_URL") or "https://api.typesafe.ai" ) ) typesafe_timeout: float = field( default_factory=lambda: float(os.getenv("TYPESAFE_TIMEOUT", "30")) ) typesafe_max_retries: int = field( default_factory=lambda: int(os.getenv("TYPESAFE_MAX_RETRIES", "2")) ) settings = Settings()