testtest123's picture
Refactor LLM architecture to SOLID principles, add Gemini Judge, and self-reflective RAGAS logic
9748ae9
Raw
History Blame Contribute Delete
1.5 kB
from pydantic_settings import BaseSettings
from typing import Optional
class Settings(BaseSettings):
# Supabase
SUPABASE_URL: str
SUPABASE_KEY: str
SUPABASE_DB_URL: str
# Embeddings (bge-m3)
EMBED_API_URL: str = "https://lamhieu-lightweight-embeddings.hf.space/"
EMBED_MODEL: str = "bge-m3"
EMBED_DIM: int = 1024
EMBED_AUTH_KEY: str = ""
EMBED_MAX_TOKENS: int = 1000
EMBED_TIMEOUT: int = 60
EMBED_MAX_RETRIES: int = 3
# LLM β€” Tencent Hy3, Gemini & Qwen Omni
GEMINI_API_KEY: str = ""
GEMINI_MODEL_NAME: str = "gemini-3.1-flash-lite"
LLM_RESPONSE_TIMEOUT: int = 1080
MAX_LLM_RETRIES: int = 3
MAX_TIMEOUT_RETRIES: int = 10
# OCR β€” Mistral
MISTRAL_OCR_SPACE: str = "tatendachirume/Mistral-OCR"
MISTRAL_API_KEY: str = ""
# Image β€” Qwen-VL Vision
VISION_SPACE_URL: str = "Qwen/Qwen3-VL-30B-A3B-Demo"
# Redis
REDIS_URL: str = ""
CACHE_TTL_SECONDS: int = 3600
# Auth
JWT_SECRET_KEY: str
JWT_ALGORITHM: str = "HS256"
JWT_EXPIRE_MINUTES: int = 1440
# Re-ranking
RERANK_MODEL: str = "cross-encoder/ms-marco-MiniLM-L-6-v2"
# Rate limiting
RATE_LIMIT_PER_MINUTE: int = 20
RATE_LIMIT_UPLOAD_PER_DAY: int = 50
# Defaults
DEFAULT_CHUNK_SIZE: int = 512
DEFAULT_OVERLAP: int = 64
DEFAULT_TOP_K: int = 5
MAX_FILE_SIZE_MB: int = 50
# CORS
CORS_ORIGINS: str = ""
class Config:
env_file = ".env"
settings = Settings()