File size: 1,420 Bytes
fc29964
66a82be
fc29964
 
66a82be
 
fc29964
 
 
 
66a82be
fc29964
 
 
 
 
 
 
 
 
 
66a82be
fc29964
 
 
 
 
 
 
 
 
 
 
 
 
8c6cf05
 
 
 
 
 
fc29964
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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()