File size: 1,726 Bytes
e251d62
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
47
48
49
"""Runtime configuration for the KORA backend."""

from __future__ import annotations

from functools import lru_cache
from pathlib import Path

from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict

BASE_DIR = Path(__file__).resolve().parents[2]


class Settings(BaseSettings):
    """Environment-driven settings with safe defaults."""

    model_config = SettingsConfigDict(
        env_file=str(BASE_DIR / ".env"),
        env_file_encoding="utf-8",
        extra="ignore",
    )

    app_name: str = Field(default="KORA AI Backend", alias="APP_NAME")
    app_env: str = Field(default="production", alias="APP_ENV")
    log_level: str = Field(default="INFO", alias="LOG_LEVEL")

    model_name: str = Field(default="ProfessorCEO/KORA-v1", alias="MODEL_NAME")
    trust_remote_code: bool = Field(default=True, alias="TRUST_REMOTE_CODE")
    low_cpu_mem_usage: bool = Field(default=True, alias="LOW_CPU_MEM_USAGE")
    max_input_tokens: int = Field(default=3072, alias="MAX_INPUT_TOKENS")
    torch_num_threads: int = Field(default=0, alias="TORCH_NUM_THREADS")
    torch_num_interop_threads: int = Field(default=0, alias="TORCH_NUM_INTEROP_THREADS")

    default_temperature: float = Field(default=0.7, alias="DEFAULT_TEMPERATURE")
    default_top_p: float = Field(default=0.9, alias="DEFAULT_TOP_P")
    default_max_tokens: int = Field(default=512, alias="DEFAULT_MAX_TOKENS")

    system_prompt_file: Path = Field(default=BASE_DIR / "prompts" / "system_prompt.txt")
    knowledge_file: Path = Field(default=BASE_DIR / "knowledge" / "kontyra.md")


@lru_cache
def get_settings() -> Settings:
    """Return a cached settings instance."""
    return Settings()


settings = get_settings()