36 lines
1.5 KiB
Python
36 lines
1.5 KiB
Python
import os
|
|
from dotenv import load_dotenv
|
|
|
|
load_dotenv()
|
|
|
|
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
|
|
|
|
|
|
class Config:
|
|
SECRET_KEY = os.environ.get("SECRET_KEY", "change-me-in-production")
|
|
_db_uri = os.environ.get("DATABASE_URI", "")
|
|
_default_uri = f"sqlite:///{os.path.join(BASE_DIR, 'data', 'app.db')}"
|
|
# Fall back to SQLite if DATABASE_URI is empty or not a valid SQLAlchemy URL
|
|
SQLALCHEMY_DATABASE_URI = (
|
|
_db_uri if _db_uri and "://" in _db_uri else _default_uri
|
|
)
|
|
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
|
|
|
UPLOAD_FOLDER = os.environ.get("UPLOAD_FOLDER", os.path.join(BASE_DIR, "uploads"))
|
|
VECTORDB_PATH = os.environ.get("VECTORDB_PATH", os.path.join(BASE_DIR, "vectordb"))
|
|
|
|
ALLOWED_EXTENSIONS = {"pdf", "txt", "docx", "md"}
|
|
MAX_CONTENT_LENGTH = 50 * 1024 * 1024 # 50 MB
|
|
|
|
# LLM Provider: "lmstudio" or "openai"
|
|
AI_PROVIDER = os.environ.get("AI_PROVIDER", "lmstudio")
|
|
LM_STUDIO_URL = os.environ.get("LM_STUDIO_URL", "http://localhost:1234")
|
|
LM_STUDIO_MODEL = os.environ.get("LM_STUDIO_MODEL", "local-model")
|
|
LM_STUDIO_EMBEDDING_MODEL = os.environ.get("LM_STUDIO_EMBEDDING_MODEL", "local-model")
|
|
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY", "")
|
|
OPENAI_MODEL = os.environ.get("OPENAI_MODEL", "gpt-4o")
|
|
|
|
RAG_TOP_K = int(os.environ.get("RAG_TOP_K", "6"))
|
|
RAG_CHUNK_SIZE = int(os.environ.get("RAG_CHUNK_SIZE", "300"))
|
|
RAG_CHUNK_OVERLAP = int(os.environ.get("RAG_CHUNK_OVERLAP", "75"))
|