GigaProjects

← Back to rag-assistant

config.py

"""Small configuration helpers for the RAG prototype."""

from __future__ import annotations

import os
from pathlib import Path


PROJECT_ROOT = Path(__file__).resolve().parents[1]
CORPUS_DIR = PROJECT_ROOT / "data" / "corpus"
INDEX_DIR = PROJECT_ROOT / "data" / "index"
EVAL_FILE = PROJECT_ROOT / "data" / "eval" / "questions.jsonl"
EVAL_RESULTS_DIR = PROJECT_ROOT / "data" / "eval" / "results"

DEFAULT_EMBEDDING_MODEL = "sentence-transformers/all-MiniLM-L6-v2"
DEFAULT_OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1"
DEFAULT_GENERATION_MODEL = "openai/gpt-5-mini"
DEFAULT_JUDGE_MODEL = "openai/gpt-5-mini"
DEFAULT_TOP_K = 7


def load_env_file() -> None:
    path = PROJECT_ROOT / ".env"
    if not path.exists():
        return

    for raw_line in path.read_text(encoding="utf-8").splitlines():
        line = raw_line.strip()
        if not line:
            continue
        if line.startswith("#"):
            continue
        if "=" not in line:
            continue

        key, value = line.split("=", 1)
        key = key.strip()
        value = value.strip().strip('"').strip("'")

        if key and key not in os.environ:
            os.environ[key] = value


def get_embedding_model_name() -> str:
    return os.getenv("EMBEDDING_MODEL", DEFAULT_EMBEDDING_MODEL)


def get_openrouter_api_key() -> str | None:
    return os.getenv("OPENROUTER_API_KEY")


def get_openrouter_base_url() -> str:
    return os.getenv("OPENROUTER_BASE_URL", DEFAULT_OPENROUTER_BASE_URL)


def get_generation_model() -> str:
    return os.getenv("GENERATION_MODEL", DEFAULT_GENERATION_MODEL)


def get_judge_model() -> str:
    return os.getenv("JUDGE_MODEL", DEFAULT_JUDGE_MODEL)


def get_top_k() -> int:
    raw_value = os.getenv("TOP_K")
    if not raw_value:
        return DEFAULT_TOP_K

    try:
        return int(raw_value)
    except ValueError:
        return DEFAULT_TOP_K

Run this code