""" DAARION Memory Service Configuration """ from pydantic_settings import BaseSettings from functools import lru_cache class Settings(BaseSettings): """Application settings""" # Service service_name: str = "memory-service" debug: bool = False # PostgreSQL postgres_host: str = "daarion-pooler.daarion" postgres_port: int = 5432 postgres_user: str = "daarion" postgres_password: str = "DaarionDB2026!" postgres_db: str = "daarion_main" @property def postgres_url(self) -> str: return f"postgresql+asyncpg://{self.postgres_user}:{self.postgres_password}@{self.postgres_host}:{self.postgres_port}/{self.postgres_db}" # Qdrant qdrant_host: str = "qdrant.qdrant" qdrant_port: int = 6333 qdrant_collection_memories: str = "memories" qdrant_collection_messages: str = "messages" # Cohere (embeddings) cohere_api_key: str = "" # Must be set via MEMORY_COHERE_API_KEY env var or Vault cohere_model: str = "embed-multilingual-v3.0" # 1024 dimensions embedding_dimensions: int = 1024 # DeepSeek LLM (for summary generation) deepseek_api_key: str = "" # Must be set via MEMORY_DEEPSEEK_API_KEY env var deepseek_api_url: str = "https://api.deepseek.com/v1/chat/completions" deepseek_model: str = "deepseek-chat" summary_max_tokens: int = 800 # Memory settings short_term_window_messages: int = 20 short_term_window_minutes: int = 60 summary_trigger_tokens: int = 4000 summary_target_tokens: int = 500 retrieval_top_k: int = 10 # Confidence thresholds memory_min_confidence: float = 0.5 memory_confirm_boost: float = 0.1 memory_reject_penalty: float = 0.3 # JWT Auth jwt_secret: str = "" # Must be set via MEMORY_JWT_SECRET env var or Vault jwt_algorithm: str = "HS256" jwt_expiration: int = 3600 # 1 година class Config: env_prefix = "MEMORY_" env_file = ".env" @lru_cache() def get_settings() -> Settings: return Settings()