twin / config.py
KUSHT07's picture
Upload 16 files
3618b44 verified
Raw
History Blame Contribute Delete
2.07 kB
import os
from pathlib import Path
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv()
ROOT = Path(__file__).parent
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
DEEPGRAM_API_KEY = os.getenv("DEEPGRAM_API_KEY")
PUSHOVER_USER = os.getenv("PUSHOVER_USER")
PUSHOVER_TOKEN = os.getenv("PUSHOVER_TOKEN")
OPENAI_MODEL = os.getenv("OPENAI_MODEL", "gpt-4.1-mini")
EMBEDDING_MODEL = os.getenv("EMBEDDING_MODEL", "text-embedding-3-small")
DEEPGRAM_STT_MODEL = os.getenv("DEEPGRAM_STT_MODEL", "nova-3")
DEEPGRAM_TTS_MODEL = os.getenv("DEEPGRAM_TTS_MODEL", "aura-2-thalia-en")
RAG_N_RESULTS = int(os.getenv("RAG_N_RESULTS", "3"))
RAG_CHUNK_SIZE = int(os.getenv("RAG_CHUNK_SIZE", "500"))
RAG_CHUNK_OVERLAP = int(os.getenv("RAG_CHUNK_OVERLAP", "50"))
RAG_DEBUG = os.getenv("RAG_DEBUG", "").lower() in ("1", "true", "yes")
_default_chroma = "chroma_db_twin"
if os.getenv("SPACE_ID") and not os.getenv("CHROMA_PATH"):
_default_chroma = "/tmp/chroma_db_twin"
CHROMA_PATH = Path(os.getenv("CHROMA_PATH", _default_chroma))
if not CHROMA_PATH.is_absolute():
CHROMA_PATH = ROOT / CHROMA_PATH
openai_client: OpenAI | None = None
deepgram_client = None
def ensure_openai_client() -> OpenAI:
global openai_client
if OPENAI_API_KEY is None:
raise RuntimeError("OPENAI_API_KEY is missing. Copy .env.example to .env and add your key.")
if openai_client is None:
openai_client = OpenAI(api_key=OPENAI_API_KEY)
return openai_client
def ensure_deepgram_client():
global deepgram_client
if DEEPGRAM_API_KEY is None:
raise RuntimeError("DEEPGRAM_API_KEY is missing. Copy .env.example to .env and add your key.")
if deepgram_client is None:
from deepgram import DeepgramClient
deepgram_client = DeepgramClient(api_key=DEEPGRAM_API_KEY)
return deepgram_client
def ensure_clients() -> None:
"""Validate env vars and initialize API clients (called at app startup)."""
ensure_openai_client()
ensure_deepgram_client()