Spaces:
Sleeping
Sleeping
| import os | |
| import logging | |
| from dotenv import load_dotenv | |
| # Configure logging | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| # Load environment variables from a .env file | |
| load_dotenv() | |
| class Config: | |
| """Application Configuration""" | |
| # API Settings | |
| API_VERSION = os.getenv("API_VERSION", "v1") | |
| API_TITLE = os.getenv("API_TITLE", "Code Review Assistant API") | |
| API_DESCRIPTION = os.getenv("API_DESCRIPTION", "An automated code review system powered by Gemma") | |
| HOST = os.getenv("HOST", "0.0.0.0") | |
| PORT = int(os.getenv("PORT", 8000)) | |
| DEBUG = os.getenv("DEBUG", "false").lower() == "true" | |
| # Model Settings | |
| MODEL_NAME = os.getenv("MODEL_NAME", "google/gemma-2b-it") # Using 2B parameter model instead of 7B | |
| MAX_INPUT_LENGTH = int(os.getenv("MAX_INPUT_LENGTH", 512)) # Reduced from 2048 | |
| MAX_OUTPUT_LENGTH = int(os.getenv("MAX_OUTPUT_LENGTH", 512)) # Reduced from 1024 | |
| TEMPERATURE = float(os.getenv("TEMPERATURE", 0.7)) | |
| TOP_P = float(os.getenv("TOP_P", 0.95)) | |
| HUGGING_FACE_TOKEN = os.getenv("HUGGING_FACE_TOKEN") | |
| # Database Settings | |
| DATABASE_URL = os.getenv("DATABASE_URL", "sqlite:///./code_review.db") | |
| # Monitoring Settings | |
| PROMETHEUS_METRICS_PORT = int(os.getenv("PROMETHEUS_METRICS_PORT", 9090)) | |
| ENABLE_METRICS = os.getenv("ENABLE_METRICS", "true").lower() == "true" | |
| # Security Settings | |
| SECRET_KEY = os.getenv("SECRET_KEY", "default-secret-key-change-in-production") | |
| ACCESS_TOKEN_EXPIRE_MINUTES = int(os.getenv("ACCESS_TOKEN_EXPIRE_MINUTES", 30)) | |
| # Logging Settings | |
| LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO") | |
| LOG_FILE = os.getenv("LOG_FILE", "logs/code_review.log") | |
| # Review History Settings | |
| MAX_HISTORY_ITEMS = int(os.getenv("MAX_HISTORY_ITEMS", 100)) # Reduced from 1000 | |
| HISTORY_RETENTION_DAYS = int(os.getenv("HISTORY_RETENTION_DAYS", 7)) # Reduced from 30 | |
| # Memory Settings | |
| MAX_MEMORY_USAGE = "2GB" # Limit memory usage | |
| BATCH_SIZE = 1 | |
| USE_CACHE = False | |
| USE_GRADIENT_CHECKPOINTING = True | |
| def validate(): | |
| """Validate configuration settings. Raise exceptions for invalid values.""" | |
| # Log configuration values for debugging | |
| logger.info("Configuration Values:") | |
| logger.info(f"MODEL_NAME: {Config.MODEL_NAME}") | |
| logger.info(f"HUGGING_FACE_TOKEN: {'Set' if Config.HUGGING_FACE_TOKEN else 'Not Set'}") | |
| logger.info(f"HOST: {Config.HOST}") | |
| logger.info(f"PORT: {Config.PORT}") | |
| logger.info(f"DEBUG: {Config.DEBUG}") | |
| logger.info(f"MAX_INPUT_LENGTH: {Config.MAX_INPUT_LENGTH}") | |
| logger.info(f"MAX_OUTPUT_LENGTH: {Config.MAX_OUTPUT_LENGTH}") | |
| if not Config.HUGGING_FACE_TOKEN: | |
| raise ValueError("HUGGING_FACE_TOKEN must be set in environment variables to access Hugging Face models.") | |
| if Config.TEMPERATURE < 0 or Config.TEMPERATURE > 1: | |
| raise ValueError("TEMPERATURE must be between 0 and 1.") | |
| if Config.TOP_P < 0 or Config.TOP_P > 1: | |
| raise ValueError("TOP_P must be between 0 and 1.") | |
| # Create settings instance | |
| settings = Config() | |
| # Validate configuration at startup | |
| settings.validate() | |