Spaces:
Running
Running
File size: 2,161 Bytes
b96b498 64db9d1 8405b55 b96b498 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | """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)
|