from __future__ import annotations from pydantic import Field, AliasChoices from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): # App behavior max_ai_summaries_per_day: int = 25 cache_ttl_seconds: int = 3600 # OpenAI openai_api_key: str = Field( default="", validation_alias=AliasChoices("OPENAI_API_KEY", "OPENAI_KEY"), ) openai_model: str = Field( default="gpt-4o-mini", validation_alias=AliasChoices("OPENAI_MODEL"), ) openai_timeout_seconds: int = Field(default=30, validation_alias=AliasChoices("OPENAI_TIMEOUT")) # Optional Redis backing for rate limits redis_url: str = Field(default="", validation_alias=AliasChoices("REDIS_URL")) # CTX / CompTox ctx_base_url: str = Field( default="https://comptox.epa.gov/ctx-api", validation_alias=AliasChoices("CTX_BASE_URL"), ) ctx_api_key: str = Field( default="", validation_alias=AliasChoices("CTX_API_KEY", "COMPTOX_API_KEY", "CTX_KEY"), ) # Optional Cloudflare Worker proxy (matches production) worker_base_url: str = Field( default="https://ra-proxy.chevva-harish.workers.dev", validation_alias=AliasChoices("RA_PROXY_URL", "WORKER_BASE_URL", "PROXY_BASE_URL"), ) model_config = SettingsConfigDict(env_prefix="", case_sensitive=False) settings = Settings()