|
import os |
|
from pydantic_settings import BaseSettings |
|
from typing import Dict, Any |
|
|
|
class Settings(BaseSettings): |
|
|
|
API_KEY: str = os.getenv("API_KEY", "your_default_api_key") |
|
OPENAI_API_KEY: str = os.getenv("OPENAI_API_KEY", "") |
|
GROQ_API_TOKEN: str = os.getenv("GROQ_API_KEY", "") |
|
|
|
|
|
|
|
API_PREFIX: str = "/api" |
|
RATE_LIMIT_PER_MINUTE: int = 10 |
|
|
|
|
|
ENGLISH_MODEL: str = "google/flan-t5-base" |
|
HINDI_MODEL: str = "google/mt5-base" |
|
HINGLISH_MODEL: str = "google/mt5-base" |
|
MAX_NEW_TOKENS: int = 256 |
|
|
|
|
|
GRADIO_SERVER_NAME: str = os.getenv("GRADIO_SERVER_NAME", "0.0.0.0") |
|
GRADIO_SERVER_PORT: int = int(os.getenv("GRADIO_SERVER_PORT", "7860")) |
|
GRADIO_SHARE: bool = os.getenv("GRADIO_SHARE", "True").lower() == "true" |
|
|
|
|
|
LOG_FILE: str = os.getenv("LOG_FILE", "logs/specter.log") |
|
LOG_LEVEL: str = os.getenv("LOG_LEVEL", "INFO") |
|
PDF_STORAGE_PATH: str = os.getenv("PDF_STORAGE_PATH", "storage/pdfs") |
|
MAX_PDF_AGE_DAYS: int = int(os.getenv("MAX_PDF_AGE_DAYS", "7")) |
|
LEGAL_DOCS_PATH: str = os.getenv("LEGAL_DOCS_PATH", "data/legal_docs") |
|
VECTOR_STORE_PATH: str = os.getenv("VECTOR_STORE_PATH", "data/vector_store") |
|
|
|
|
|
PUBLIC_BASE_URL: str = os.getenv("PUBLIC_BASE_URL", "http://localhost:8001") |
|
|
|
model_config = { |
|
"env_file": ".env", |
|
"extra": "ignore" |
|
} |
|
|
|
settings = Settings() |
|
|
|
|
|
def validate_settings(): |
|
"""Validate critical settings and warn about missing configurations.""" |
|
warnings = [] |
|
|
|
if settings.API_KEY == "your_default_api_key": |
|
warnings.append("API_KEY is using default value - set API_KEY environment variable") |
|
|
|
if not settings.GROQ_API_TOKEN: |
|
warnings.append("GROQ_API_TOKEN is not set - AI responses will not work") |
|
|
|
if warnings: |
|
print("⚠️ Configuration Warnings:") |
|
for warning in warnings: |
|
print(f" - {warning}") |
|
else: |
|
print("✅ Configuration validated successfully") |
|
|
|
validate_settings() |
|
|