# app/core/config.py import os from dataclasses import dataclass def get_env(key: str, default=None, required=False): value = os.getenv(key, default) if required and not value: raise ValueError(f"Missing required env var: {key}") return value @dataclass class Settings: """ Central configuration for Voice AI Platform """ # ========================= # OPENAI # ========================= OPENAI_API_KEY: str = "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" OPENAI_LLM_MODEL: str = get_env("OPENAI_LLM_MODEL", "gpt-4o-mini") OPENAI_TTS_MODEL: str = get_env("OPENAI_TTS_MODEL", "tts-1") OPENAI_TTS_VOICE: str = get_env("OPENAI_TTS_VOICE", "alloy") OPENAI_STT_MODEL: str = get_env("OPENAI_STT_MODEL", "whisper-1") # ========================= # QDRANT # ========================= QDRANT_HOST: str = "https://5eb2018a-838c-4ea4-a23a-850d81545462.sa-east-1-0.aws.cloud.qdrant.io" QDRANT_PORT: int = int(get_env("QDRANT_PORT", 6333)) QDRANT_API_KEY: str = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2Nlc3MiOiJtIiwic3ViamVjdCI6ImFwaS1rZXk6ODVkN2ZjMjItMWZlMi00NjgwLWI4ZTktZmRiNjU4YjFlMTU5In0.L5SXur8IBi1XAX43Yna-y_yPpYO7TDsrb4RI08hWepY" QDRANT_COLLECTION: str = get_env("QDRANT_COLLECTION", "voice_memory") # ========================= # LIVEKIT (FIXED) # ========================= LIVEKIT_URL: str = get_env( "LIVEKIT_URL", "wss://drrobot-vkm9d8zd.livekit.cloud" ) LIVEKIT_API_KEY: str = get_env( "LIVEKIT_API_KEY", "APIueYBKwFKo7eh" ) LIVEKIT_API_SECRET: str = get_env( "LIVEKIT_API_SECRET", "YowkBlcEZq2lLd6INz3Yx2uQlsDJt0c0HrygigHi8PP" ) # ========================= # AUDIO # ========================= SAMPLE_RATE: int = int(get_env("SAMPLE_RATE", 16000)) VAD_MODE: int = int(get_env("VAD_MODE", 2)) # ========================= # DEBUG # ========================= DEBUG: bool = ( str(get_env("DEBUG", "false")).lower() == "true" ) settings = Settings()