from pathlib import Path
from typing import Any
import yaml
PROJECT_ROOT = Path(__file__).resolve().parents[1]
CONFIG_PATH = PROJECT_ROOT / "config.yaml"
_settings: dict[str, Any] | None = None
def load_config() -> dict[str, Any]:
if not CONFIG_PATH.exists():
raise FileNotFoundError(f"配置文件不存在:{CONFIG_PATH}")
with CONFIG_PATH.open(encoding="utf-8") as file:
data = yaml.safe_load(file) or {}
return data
def get_settings() -> dict[str, Any]:
global _settings
if _settings is None:
_settings = load_config()
return _settings
def get_project_path(relative: str) -> Path:
return PROJECT_ROOT / relative
def get_prompts_dir() -> Path:
return get_project_path(get_settings()["paths"]["prompts_dir"])
def get_data_dir() -> Path:
return get_project_path(get_settings()["paths"]["data_dir"])
def get_output_dir() -> Path:
return get_project_path(get_settings()["paths"]["output_dir"])
def get_llm_config() -> dict[str, Any]:
return get_settings()["llm"]
def get_cli_config() -> dict[str, Any]:
return get_settings()["cli"]
def get_generator_config() -> dict[str, Any]:
settings = get_settings()
return settings.get("generator", settings["llm"])