File size: 1,257 Bytes
32f259e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os
from dataclasses import dataclass


@dataclass
class Settings:
    """Global configuration for the agentic multiwriter system."""

    # ollama | openai | hf_endpoint
    llm_provider: str = os.getenv("AMW_LLM_PROVIDER", "ollama").lower()
    llm_model: str = os.getenv("AMW_LLM_MODEL", "llama3")
    temperature: float = float(os.getenv("AMW_TEMPERATURE", "0.4"))
    max_search_results: int = int(os.getenv("AMW_MAX_SEARCH_RESULTS", "8"))

    def validate(self) -> None:
        allowed = {"ollama", "openai", "hf_endpoint"}
        if self.llm_provider not in allowed:
            raise ValueError(
                f"Unsupported LLM provider '{self.llm_provider}'. "
                f"Use one of: {', '.join(sorted(allowed))}."
            )

        if self.llm_provider == "openai" and not os.getenv("OPENAI_API_KEY"):
            raise ValueError(
                "OPENAI_API_KEY is required when AMW_LLM_PROVIDER is 'openai'."
            )

        if self.llm_provider == "hf_endpoint" and not os.getenv(
            "HUGGINGFACEHUB_API_TOKEN"
        ):
            raise ValueError(
                "HUGGINGFACEHUB_API_TOKEN is required when "
                "AMW_LLM_PROVIDER is 'hf_endpoint'."
            )


settings = Settings()