Skip to content

Configuration Classes

Pydantic V2 configuration classes for Sentimatrix.

SentimatrixConfig

Main configuration class.

class SentimatrixConfig(BaseSettings):
    llm: LLMConfig
    scrapers: ScraperConfig
    models: ModelConfig
    cache: CacheConfig
    logging: LogConfig
    output: OutputConfig
    fallback: FallbackConfig
    debug: bool = False
    dry_run: bool = False

    @classmethod
    def from_file(cls, path, **overrides) -> "SentimatrixConfig"

    @classmethod
    def from_env(cls, **overrides) -> "SentimatrixConfig"

    def to_dict(self) -> dict
    def to_yaml(self) -> str
    def save(self, path) -> None
    def with_overrides(self, **overrides) -> "SentimatrixConfig"

LLMConfig

LLM provider configuration.

class LLMConfig(BaseModel):
    provider: LLMProvider = "openai"
    model: str = "gpt-4o-mini"
    api_key: Optional[str] = None
    api_base: Optional[str] = None
    temperature: float = 0.7      # 0.0-2.0
    max_tokens: int = 1024        # 1-128000
    timeout: int = 30             # 5-300
    retry: RetryConfig
    rate_limit: RateLimitConfig

ScraperConfig

Web scraping configuration.

class ScraperConfig(BaseModel):
    provider: ScraperProvider = "playwright"
    headless: bool = True
    timeout: int = 30             # 5-120
    viewport_width: int = 1920
    viewport_height: int = 1080
    proxy: ProxyConfig
    retry: RetryConfig
    rate_limit: RateLimitConfig

ModelConfig

ML model configuration.

class ModelConfig(BaseModel):
    sentiment_model: str = "cardiffnlp/twitter-roberta-base-sentiment-latest"
    emotion_model: str = "SamLowe/roberta-base-go_emotions"
    device: Literal["auto", "cpu", "cuda", "mps"] = "auto"
    batch_size: int = 32          # 1-512
    max_length: int = 512         # 32-4096

CacheConfig

Cache backend configuration.

class CacheConfig(BaseModel):
    enabled: bool = True
    backend: CacheBackend = "memory"
    ttl: int = 3600               # 0-86400
    max_size: int = 1000
    redis_url: Optional[str] = None
    sqlite_path: Optional[str] = None