import os from typing import Optional from pydantic import BaseModel from dotenv import load_dotenv # Load environment variables from .env file load_dotenv() class Settings(BaseModel): """Application settings loaded from environment variables.""" # Application information APP_NAME: str = os.getenv("APP_NAME", "Mini SpecsComply Pro") APP_VERSION: str = os.getenv("APP_VERSION", "0.1.0") DEBUG: bool = os.getenv("DEBUG", "False").lower() in ("true", "1", "t") # API keys GROQ_API_KEY: Optional[str] = os.getenv("GROQ_API_KEY") COHERE_API_KEY: Optional[str] = os.getenv("COHERE_API_KEY") # Vector database settings # Pinecone PINECONE_API_KEY: Optional[str] = os.getenv("PINECONE_API_KEY") PINECONE_INDEX_NAME: str = os.getenv("PINECONE_INDEX_NAME", "specscomply_documents") # Weaviate WEAVIATE_URL: Optional[str] = os.getenv("WEAVIATE_URL") WEAVIATE_API_KEY: Optional[str] = os.getenv("WEAVIATE_API_KEY") # Models EMBEDDING_MODEL: str = "embed-english-v3.0" # Default embedding model RERANKER_MODEL: str = "rerank-english-v2.0" # Default reranker model REASONING_MODEL: str = "llama-3.3-70b-versatile" # Default reasoning model PROCESSING_MODEL: str = "llama-3.3-70b-versatile" # Default quick processing model # Vector database selector (pinecone or weaviate) VECTOR_DB: str = os.getenv("VECTOR_DB", "pinecone").lower() class Config: env_file = ".env" case_sensitive = True # Create global settings instance settings = Settings()