voiceCal / core /config.py
Peter Michael Gits
feat: Deploy complete VoiceCal application with all files v0.5.6
5e8a657
import os
from typing import List, Optional
from pydantic_settings import BaseSettings
from pydantic import Field
class Config(BaseSettings):
"""Configuration for ChatCal Voice-Enabled Hugging Face deployment."""
# Application
app_name: str = Field(default="ChatCal Voice Assistant", env="APP_NAME")
app_env: str = Field(default="production", env="APP_ENV")
# Groq API (primary LLM)
groq_api_key: str = Field(..., env="GROQ_API_KEY")
# Anthropic (fallback LLM)
anthropic_api_key: Optional[str] = Field(None, env="ANTHROPIC_API_KEY")
# Gemini API (fallback LLM)
gemini_api_key: Optional[str] = Field(None, env="GEMINI_API_KEY")
# Google Calendar
google_calendar_id: str = Field(default="pgits.job@gmail.com", env="GOOGLE_CALENDAR_ID")
google_client_id: Optional[str] = Field(None, env="GOOGLE_CLIENT_ID")
google_client_secret: Optional[str] = Field(None, env="GOOGLE_CLIENT_SECRET")
# Security
secret_key: str = Field(..., env="SECRET_KEY")
# Timezone
default_timezone: str = Field(default="America/New_York", env="DEFAULT_TIMEZONE")
# Working Hours Configuration
weekday_start_time: str = Field(default="07:30", env="WEEKDAY_START_TIME")
weekday_end_time: str = Field(default="18:30", env="WEEKDAY_END_TIME")
weekend_start_time: str = Field(default="10:30", env="WEEKEND_START_TIME")
weekend_end_time: str = Field(default="16:30", env="WEEKEND_END_TIME")
working_hours_timezone: str = Field(default="America/New_York", env="WORKING_HOURS_TIMEZONE")
# Chat Settings
max_conversation_history: int = Field(default=20, env="MAX_CONVERSATION_HISTORY")
session_timeout_minutes: int = Field(default=30, env="SESSION_TIMEOUT_MINUTES")
# Contact Information
my_phone_number: str = Field(..., env="MY_PHONE_NUMBER")
my_email_address: str = Field(..., env="MY_EMAIL_ADDRESS")
# Email Service Configuration
smtp_server: str = Field(default="smtp.gmail.com", env="SMTP_SERVER")
smtp_port: int = Field(default=587, env="SMTP_PORT")
smtp_username: Optional[str] = Field(None, env="SMTP_USERNAME")
smtp_password: Optional[str] = Field(None, env="SMTP_PASSWORD")
email_from_name: str = Field(default="ChatCal Voice Assistant", env="EMAIL_FROM_NAME")
# Testing Configuration
testing_mode: bool = Field(default=True, env="TESTING_MODE")
# Audio Services Configuration (Hugging Face spaces)
stt_service_url: str = Field(
default="https://huggingface.co/spaces/pgits/stt-gpu-service",
env="STT_SERVICE_URL"
)
tts_service_url: str = Field(
default="https://huggingface.co/spaces/pgits/tts-gpu-service",
env="TTS_SERVICE_URL"
)
# Voice Settings
default_voice: str = Field(default="v2/en_speaker_6", env="DEFAULT_VOICE")
enable_voice_responses: bool = Field(default=True, env="ENABLE_VOICE_RESPONSES")
class Config:
env_file = ".env"
env_file_encoding = "utf-8"
case_sensitive = False
# Global config instance
config = Config()