"""Configuration du STT-server — via variables d'environnement (12-factor / k8s).""" from __future__ import annotations import os class Settings: # LiteLLM (s01) — joint en IP directe depuis le cluster (cf. open-webui). litellm_url: str = os.getenv( "STT_LITELLM_URL", "http://192.168.10.1:4000/v1/chat/completions" ) litellm_key: str = os.getenv("STT_LITELLM_KEY", "lm-studio") # Modèle par défaut + alias LiteLLM autorisés (le client peut en demander un par requête) model: str = os.getenv("STT_MODEL", "hermes-default") allowed_models: list[str] = [ m.strip() for m in os.getenv( "STT_ALLOWED_MODELS", "hermes-default,qwen3-8b,claude-sonnet-4-6,claude-opus-4-7", ).split(",") if m.strip() ] system_prompt: str = os.getenv( "STT_SYSTEM_PROMPT", "Tu es Hermes, l'assistant vocal du homelab Funk. " "Réponds toujours en français, de façon concise (2-3 phrases maximum), " "sans markdown ni listes.", ) max_tokens: int = int(os.getenv("STT_MAX_TOKENS", "200")) temperature: float = float(os.getenv("STT_TEMPERATURE", "0.7")) request_timeout: float = float(os.getenv("STT_REQUEST_TIMEOUT", "60")) # Mémoire long-terme (Qdrant) — dégrade proprement si Qdrant/embeddings injoignables memory_longterm: bool = os.getenv("STT_MEMORY_LONGTERM", "true").lower() == "true" qdrant_url: str = os.getenv("STT_QDRANT_URL", "http://192.168.10.1:6333") qdrant_collection: str = os.getenv("STT_QDRANT_COLLECTION", "stt-memory") # Embeddings : Qwen3 sur llama-server gpu-01 (comme le RAG). dim 4096. embed_url: str = os.getenv("STT_EMBED_URL", "http://192.168.10.20:1234/v1/embeddings") embed_model: str = os.getenv("STT_EMBED_MODEL", "qwen3-8b") memory_top_k: int = int(os.getenv("STT_MEMORY_TOPK", "3")) settings = Settings()