File size: 3,007 Bytes
9db766f 95cb26e 9db766f 95cb26e 9db766f 2da4544 9db766f 2da4544 9db766f e97ac87 9db766f 2da4544 9db766f 3a33610 f28285b f67ac7b 9db766f 70a2026 f8a4eeb 0d13811 65bf3d8 2da4544 9db766f a453c29 2da4544 9db766f 2da4544 9db766f 6e8d513 2da4544 9db766f 2da4544 674469e 2da4544 674469e 9db766f 2da4544 674469e 9db766f 9a6ab0c 674469e 918acab 674469e 2da4544 918acab 2da4544 674469e 2da4544 918acab 674469e 2da4544 a453c29 6e8d513 2da4544 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
"""Configuration settings for the API"""
import os
from pathlib import Path
from dotenv import load_dotenv
import logging
logger = logging.getLogger(__name__)
# Load .env variables
load_dotenv()
# ============ DIRECTORIES ============
API_DIR = Path(__file__).parent
PROJECT_ROOT = API_DIR # config.py is in the project root, so API_DIR is the project root
# ============ HUGGING FACE MODELS ============
HUGGINGFACE_API_KEY = os.getenv("HUGGINGFACE_API_KEY", "")
HUGGINGFACE_STANCE_MODEL_ID = os.getenv("HUGGINGFACE_STANCE_MODEL_ID")
HUGGINGFACE_LABEL_MODEL_ID = os.getenv("HUGGINGFACE_LABEL_MODEL_ID")
HUGGINGFACE_GENERATE_MODEL_ID = os.getenv("HUGGINGFACE_GENERATE_MODEL_ID")
# Use Hugging Face model ID instead of local path
STANCE_MODEL_ID = HUGGINGFACE_STANCE_MODEL_ID
LABEL_MODEL_ID = HUGGINGFACE_LABEL_MODEL_ID
GENERATE_MODEL_ID = HUGGINGFACE_GENERATE_MODEL_ID
# ============ GROQ MODELS ============
GROQ_API_KEY = os.getenv("GROQ_API_KEY", "")
# ============ GOOGLE MODELS ============
GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY", "")
# **Speech-to-Text**
GROQ_STT_MODEL = "whisper-large-v3-turbo"
# **Text-to-Speech**
GROQ_TTS_MODEL = "playai-tts"
GROQ_TTS_VOICE = "Aaliyah-PlayAI"
GROQ_TTS_FORMAT = "wav"
# **Chat Model**
GROQ_CHAT_MODEL = "llama3-70b-8192"
# ============ SUPABASE ============
SUPABASE_URL = os.getenv("SUPABASE_URL", "")
SUPABASE_KEY = os.getenv("SUPABASE_KEY", "")
# ============ API META ============
API_TITLE = "NLP Debater - Voice Chatbot"
API_DESCRIPTION = "NLP stance detection, KPA, and Groq STT/TTS chatbot"
API_VERSION = "2.0.0"
# ============ SERVER ============
HOST = os.getenv("HOST", "0.0.0.0")
PORT = int(os.getenv("PORT", 7860))
RELOAD = os.getenv("RELOAD", "false").lower() == "true"
# ============ CORS ============
CORS_ORIGINS = ["*"]
CORS_CREDENTIALS = True
CORS_METHODS = ["*"]
CORS_HEADERS = ["*"]
# ============ AUDIO SETTINGS ============
MAX_AUDIO_SIZE = 10 * 1024 * 1024 # 10MB
AUDIO_SAMPLE_RATE = 16000
AUDIO_DURATION_LIMIT = 120 # seconds
ALLOWED_AUDIO_TYPES = {
"audio/wav", "audio/x-wav",
"audio/mpeg", "audio/mp3",
"audio/mp4", "audio/m4a"
}
# ============ MODEL PRELOADING ============
PRELOAD_MODELS_ON_STARTUP = True
LOAD_STANCE_MODEL = True
LOAD_KPA_MODEL = True
LOAD_STT_MODEL = False # Groq STT = no preload
LOAD_CHATBOT_MODEL = False # Groq Chat = no preload
LOAD_TTS_MODEL = False # Groq TTS = no preload
logger.info("="*60)
logger.info("β Configuration loaded successfully")
logger.info(f" HF Stance Model : {HUGGINGFACE_STANCE_MODEL_ID}")
logger.info(f" HF Label Model : {HUGGINGFACE_LABEL_MODEL_ID}")
logger.info(f" GROQ STT Model : {GROQ_STT_MODEL}")
logger.info(f" GROQ TTS Model : {GROQ_TTS_MODEL}")
logger.info(f" GROQ Chat Model : {GROQ_CHAT_MODEL}")
logger.info(f" Google API Key : {'β Configured' if GOOGLE_API_KEY else 'β Not configured'}")
logger.info(f" Supabase URL : {'β Configured' if SUPABASE_URL else 'β Not configured'}")
logger.info("="*60)
|