Rabbook / core /config.py
Matcry's picture
Deploy snapshot
c76423f
Raw
History Blame Contribute Delete
3.04 kB
import os
from pathlib import Path
from dotenv import load_dotenv
BASE_DIR = Path(__file__).resolve().parent.parent
DATA_DIR = BASE_DIR / "data"
UPLOAD_DIR = DATA_DIR / "uploads"
URL_IMPORT_DIR = UPLOAD_DIR / "urls"
DB_DIR = DATA_DIR / "chroma_db"
REGISTRY_PATH = DATA_DIR / "chunk_registry.json"
NOTES_PATH = DATA_DIR / "notes.json"
HISTORY_PATH = DATA_DIR / "history.json"
FLASHCARDS_PATH = DATA_DIR / "flashcards.json"
LEARNING_STATE_PATH = DATA_DIR / "learning_state.json"
TEMPLATES_DIR = BASE_DIR / "templates"
STATIC_DIR = BASE_DIR / "static"
load_dotenv(BASE_DIR / ".env")
SUPPORTED_EXTENSIONS = {".pdf", ".txt"}
DEFAULT_LLM_PROVIDER = os.getenv("RABBOOK_LLM_PROVIDER", "groq").lower()
DEFAULT_LLM_MODEL = os.getenv("RABBOOK_LLM_MODEL", "llama-3.1-8b-instant")
OLLAMA_BASE_URL = os.getenv("RABBOOK_OLLAMA_BASE_URL", "http://localhost:11434")
# RABBOOK_OLLAMA_NUM_GPU: 0 for CPU, -1 for Auto, 35+ for forcing CUDA/GPU layers
OLLAMA_NUM_GPU = int(os.getenv("RABBOOK_OLLAMA_NUM_GPU", "-1"))
OLLAMA_THINKING_MODE = os.getenv("RABBOOK_OLLAMA_THINKING", "true").lower() == "true"
DEFAULT_HOST = os.getenv("RABBOOK_HOST", "0.0.0.0")
DEFAULT_PORT = int(os.getenv("RABBOOK_PORT", "6001"))
DEFAULT_RETRIEVAL_K = int(os.getenv("RABBOOK_RETRIEVAL_K", "6"))
DEFAULT_RERANK_CANDIDATE_K = int(os.getenv("RABBOOK_RERANK_CANDIDATE_K", "40"))
DEFAULT_BM25_CANDIDATE_K = int(os.getenv("RABBOOK_BM25_CANDIDATE_K", "40"))
DEFAULT_RRF_K = int(os.getenv("RABBOOK_RRF_K", "60"))
DEFAULT_ENABLE_QUERY_TRANSFORM = os.getenv("RABBOOK_ENABLE_QUERY_TRANSFORM", "true").lower() == "true"
DEFAULT_SUBQUERY_COUNT = int(os.getenv("RABBOOK_SUBQUERY_COUNT", "3"))
DEFAULT_CONTEXT_WINDOW = int(os.getenv("RABBOOK_CONTEXT_WINDOW", "1"))
DEFAULT_MAX_EXPANDED_CHUNKS = int(os.getenv("RABBOOK_MAX_EXPANDED_CHUNKS", "12"))
DEFAULT_MIN_GROUNDED_RERANK_SCORE = float(
os.getenv("RABBOOK_MIN_GROUNDED_RERANK_SCORE", "1.0")
)
DEFAULT_MIN_GROUNDED_CHUNKS = int(os.getenv("RABBOOK_MIN_GROUNDED_CHUNKS", "1"))
DEFAULT_GROUNDED_FALLBACK_MESSAGE = os.getenv(
"RABBOOK_GROUNDED_FALLBACK_MESSAGE",
"I don't have enough support in the current documents to answer that confidently.",
)
DEFAULT_CHUNK_SIZE = int(os.getenv("RABBOOK_CHUNK_SIZE", "1200"))
DEFAULT_CHUNK_OVERLAP = int(os.getenv("RABBOOK_CHUNK_OVERLAP", "150"))
DEFAULT_SEMANTIC_MIN_CHUNK_SIZE = int(os.getenv("RABBOOK_SEMANTIC_MIN_CHUNK_SIZE", "350"))
DEFAULT_SEMANTIC_PERCENTILE = int(os.getenv("RABBOOK_SEMANTIC_PERCENTILE", "85"))
DEFAULT_RERANK_MODEL = os.getenv(
"RABBOOK_RERANK_MODEL",
"cross-encoder/ms-marco-MiniLM-L-6-v2",
)
ENABLE_LANGGRAPH_AGENT = os.getenv("RABBOOK_ENABLE_LANGGRAPH_AGENT", "true").lower() == "true"
DEFAULT_ENABLE_RESEARCH_FALLBACK = os.getenv("RABBOOK_ENABLE_RESEARCH_FALLBACK", "false").lower() == "true"
ENABLE_TOOL_AGENT = os.getenv("RABBOOK_ENABLE_TOOL_AGENT", "false").lower() == "true"
UPLOAD_DIR.mkdir(parents=True, exist_ok=True)
URL_IMPORT_DIR.mkdir(parents=True, exist_ok=True)
def get_google_api_key() -> str | None:
return os.getenv("GEMINI_KEY")