""" FILE: app/config.py DESCRIPTION: Zentrale Pydantic-Konfiguration (Env-Vars für Qdrant, LLM, Retriever). VERSION: 0.4.0 STATUS: Active DEPENDENCIES: os, functools, pathlib LAST_ANALYSIS: 2025-12-15 """ from __future__ import annotations import os from functools import lru_cache from pathlib import Path class Settings: # Qdrant QDRANT_URL: str = os.getenv("QDRANT_URL", "http://127.0.0.1:6333") QDRANT_API_KEY: str | None = os.getenv("QDRANT_API_KEY") COLLECTION_PREFIX: str = os.getenv("MINDNET_PREFIX", "mindnet") VECTOR_SIZE: int = int(os.getenv("MINDNET_VECTOR_SIZE", "384")) DISTANCE: str = os.getenv("MINDNET_DISTANCE", "Cosine") # Embeddings MODEL_NAME: str = os.getenv("MINDNET_MODEL", "sentence-transformers/all-MiniLM-L6-v2") # WP-05 LLM / Ollama OLLAMA_URL: str = os.getenv("MINDNET_OLLAMA_URL", "http://127.0.0.1:11434") LLM_MODEL: str = os.getenv("MINDNET_LLM_MODEL", "phi3:mini") PROMPTS_PATH: str = os.getenv("MINDNET_PROMPTS_PATH", "config/prompts.yaml") # NEU für WP-06 LLM_TIMEOUT: float = float(os.getenv("MINDNET_LLM_TIMEOUT", "120.0")) DECISION_CONFIG_PATH: str = os.getenv("MINDNET_DECISION_CONFIG", "config/decision_engine.yaml") # API DEBUG: bool = os.getenv("DEBUG", "false").lower() == "true" # WP-04 Retriever Defaults RETRIEVER_W_SEM: float = float(os.getenv("MINDNET_WP04_W_SEM", "0.70")) RETRIEVER_W_EDGE: float = float(os.getenv("MINDNET_WP04_W_EDGE", "0.25")) RETRIEVER_W_CENT: float = float(os.getenv("MINDNET_WP04_W_CENT", "0.05")) RETRIEVER_TOP_K: int = int(os.getenv("MINDNET_WP04_TOP_K", "10")) RETRIEVER_EXPAND_DEPTH: int = int(os.getenv("MINDNET_WP04_EXPAND_DEPTH", "1")) RETRIEVER_EDGE_TYPES: str = os.getenv("MINDNET_WP04_EDGE_TYPES", "references,belongs_to,prev,next") @lru_cache def get_settings() -> Settings: return Settings()