Capstone-RAG / src /settings.py
arbarikcp
making calls async
8405b55
Raw
History Blame Contribute Delete
2.16 kB
"""Runtime configuration for the RAG app.
Reads everything from environment variables (optionally loaded from a local
`.env` file) so the exact same code runs unmodified locally and on a Hugging
Face Space -- Space secrets are injected as environment variables.
Index artifacts (FAISS/BM25/chunks) are resolved "local cache first, Hugging
Face Hub fallback" by `src/index_registry.py`, so no separate local/HF mode
flag is needed for that either.
"""
import os
from pathlib import Path
try:
from dotenv import load_dotenv
load_dotenv()
except ImportError:
pass
PROJECT_ROOT = Path(os.environ.get("RAG_PROJECT_ROOT", Path(__file__).resolve().parents[1]))
DATA_DIR = PROJECT_ROOT / "data"
CACHE_DIR = DATA_DIR / "cache"
INDICES_DIR = CACHE_DIR / "indices"
RESULTS_DIR = PROJECT_ROOT / "results"
CONFIGS_DIR = PROJECT_ROOT / "configs"
# Local cache for benchmark eval results / query-transform results (NB6-style cache).
APP_CACHE_DIR = Path(os.environ.get("RAG_APP_CACHE_DIR", CACHE_DIR / "app"))
INDEX_CONFIG_PATH = Path(os.environ.get("RAG_INDEX_CONFIG", CONFIGS_DIR / "index_config.json"))
# Required at query/generation time. On a Space this comes from a Space secret;
# locally, set it in a .env file or the shell environment.
GROQ_API_KEY = os.environ.get("GROQ_API_KEY") or None
# Optional: used by the LLM-as-Judge evaluator when "OpenAI" eval method is selected.
# Set as a Hugging Face Space secret named OPENAI_API_KEY, or in a local .env file.
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY") or None
# Optional: OpenRouter API key for accessing models via openrouter.ai.
# Set as a Hugging Face Space secret named OPENROUTER_API_KEY, or in a local .env file.
OPENROUTER_API_KEY = os.environ.get("OPENROUTER_API_KEY") or None
# Only needed if the Hugging Face dataset repo holding precomputed indices is private.
# An empty string (e.g. an unset "HF_TOKEN=" line in .env) is treated as unset --
# huggingface_hub rejects a literal empty-string token with "Illegal header value".
HF_TOKEN = os.environ.get("HF_TOKEN") or None
for _dir in (INDICES_DIR, RESULTS_DIR, APP_CACHE_DIR):
_dir.mkdir(parents=True, exist_ok=True)