57 lines
2.5 KiB
Python
57 lines
2.5 KiB
Python
"""
|
|
FILE: app/config.py
|
|
DESCRIPTION: Zentrale Pydantic-Konfiguration (Env-Vars für Qdrant, LLM, Retriever).
|
|
Erweitert um WP-20 Hybrid-Optionen.
|
|
VERSION: 0.5.0
|
|
STATUS: Active
|
|
DEPENDENCIES: os, functools, pathlib
|
|
LAST_ANALYSIS: 2025-12-23
|
|
"""
|
|
from __future__ import annotations
|
|
import os
|
|
from functools import lru_cache
|
|
from pathlib import Path
|
|
|
|
class Settings:
|
|
# Qdrant Verbindung
|
|
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 (lokal)
|
|
MODEL_NAME: str = os.getenv("MINDNET_MODEL", "sentence-transformers/all-MiniLM-L6-v2")
|
|
|
|
# WP-20 Hybrid LLM Provider
|
|
# Erlaubt: "ollama" oder "gemini"
|
|
MINDNET_LLM_PROVIDER: str = os.getenv("MINDNET_LLM_PROVIDER", "ollama").lower()
|
|
GOOGLE_API_KEY: str | None = os.getenv("GOOGLE_API_KEY")
|
|
GEMINI_MODEL: str = os.getenv("MINDNET_GEMINI_MODEL", "gemini-1.5-flash")
|
|
LLM_FALLBACK_ENABLED: bool = os.getenv("MINDNET_LLM_FALLBACK", "true").lower() == "true"
|
|
|
|
# WP-05 LLM / Ollama (Local)
|
|
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")
|
|
|
|
# WP-06 / WP-14 Performance & Timeouts
|
|
LLM_TIMEOUT: float = float(os.getenv("MINDNET_LLM_TIMEOUT", "120.0"))
|
|
DECISION_CONFIG_PATH: str = os.getenv("MINDNET_DECISION_CONFIG", "config/decision_engine.yaml")
|
|
BACKGROUND_LIMIT: int = int(os.getenv("MINDNET_LLM_BACKGROUND_LIMIT", "2"))
|
|
|
|
# API & Debugging
|
|
DEBUG: bool = os.getenv("DEBUG", "false").lower() == "true"
|
|
MINDNET_VAULT_ROOT: str = os.getenv("MINDNET_VAULT_ROOT", "./vault")
|
|
|
|
# WP-04 Retriever Gewichte (Semantik vs. Graph)
|
|
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() |