from pydantic import validator from pydantic_settings import BaseSettings from functools import lru_cache from dotenv import load_dotenv class Settings(BaseSettings): PROJECT_NAME: str = "SehaTech: Medical AI Assistant" API_V1_STR: str = "/api/v1" OPENAI_API_KEY: str PINECONE_API_KEY: str INDEX_NAME: str CLOUD: str REGION: str PDF_DIRECTORY: str # Directory containing PDF files CHUNK_SIZE: int CHUNK_OVERLAP: int DIMENSIONS: int AWS_ACCESS_KEY: str AWS_SECRET_KEY: str AWS_REGION: str AWS_BUCKET_NAME: str PUBMED_BASE_URL: str class Config: env_file = ".env" @validator("OPENAI_API_KEY") def validate_openai_key(cls, v): if not v.startswith("sk-"): raise ValueError("Invalid OpenAI API key format") return v def __init__(self, **kwargs): # Force reload of environment variables load_dotenv(override=True) super().__init__(**kwargs) def get_settings(): return Settings()