Spaces:
Sleeping
Sleeping
| """ | |
| Configuration settings for SupportRAG application. | |
| Loads environment variables and provides centralized config management. | |
| """ | |
| from pydantic_settings import BaseSettings | |
| from typing import List, Optional | |
| from pathlib import Path | |
| class Settings(BaseSettings): | |
| """Application settings loaded from environment variables.""" | |
| # Environment | |
| environment: str = "development" | |
| # API Keys | |
| gemini_api_key: Optional[str] = None | |
| openai_api_key: Optional[str] = None | |
| groq_api_key: Optional[str] = None | |
| # Model Configuration | |
| embedding_model: str = "all-MiniLM-L6-v2" | |
| llm_provider: str = "groq" # groq, gemini, or openai | |
| llm_model: str = "llama-3.3-70b-versatile" | |
| llm_temperature: float = 0.7 | |
| max_tokens: int = 512 | |
| # Vector Database | |
| vector_db_path: str = "data/vector_store" | |
| vector_db_type: str = "faiss" | |
| index_name: str = "faq_index" | |
| # RAG Configuration | |
| top_k_results: int = 3 | |
| confidence_threshold: float = 0.7 | |
| max_context_length: int = 2048 | |
| # API Configuration | |
| api_host: str = "0.0.0.0" | |
| api_port: int = 8000 | |
| api_prefix: str = "/api/v1" | |
| cors_origins: List[str] = ["http://localhost:3000", "http://localhost:8501"] | |
| # Logging | |
| log_level: str = "INFO" | |
| log_file: str = "logs/app.log" | |
| metrics_file: str = "logs/metrics.json" | |
| # Data Paths | |
| faq_data_path: str = "data/faqs.csv" | |
| test_data_path: str = "data/test_queries.csv" | |
| # Performance | |
| batch_size: int = 32 | |
| cache_ttl: int = 3600 | |
| class Config: | |
| env_file = ".env" | |
| case_sensitive = False | |
| def get_vector_db_full_path(self) -> Path: | |
| """Get the full path to the vector database.""" | |
| return Path(self.vector_db_path) | |
| def get_log_file_path(self) -> Path: | |
| """Get the full path to the log file.""" | |
| return Path(self.log_file) | |
| def get_metrics_file_path(self) -> Path: | |
| """Get the full path to the metrics file.""" | |
| return Path(self.metrics_file) | |
| def validate_api_keys(self) -> bool: | |
| """Validate that required API keys are present.""" | |
| if self.llm_provider == "gemini" and not self.gemini_api_key: | |
| return False | |
| if self.llm_provider == "openai" and not self.openai_api_key: | |
| return False | |
| return True | |
| # Global settings instance | |
| settings = Settings() | |