modelcourt / core /config.py
existcode's picture
reupload
f983375 verified
Raw
History Blame Contribute Delete
2.05 kB
from __future__ import annotations
import os
def _load_dotenv() -> None:
env_path = ".env"
if not os.path.exists(env_path):
return
with open(env_path, encoding="utf-8") as env_file:
for raw_line in env_file:
line = raw_line.strip()
if not line or line.startswith("#") or "=" not in line:
continue
key, value = line.split("=", 1)
os.environ.setdefault(key.strip(), value.strip().strip('"').strip("'"))
def _court_mode_from_env() -> str:
explicit = os.getenv("MODEL_COURT_MODE")
if explicit:
return explicit
mode = os.getenv("MODEL_MODE", os.getenv("MODEL_BACKEND", "mock")).lower()
if mode in {"vllm", "openai", "openai_compatible", "model"}:
return "vllm"
if mode == "hf_api":
return "hf_api"
return "deterministic"
_load_dotenv()
MODEL_BACKEND = os.getenv("MODEL_BACKEND", "mock")
MODEL_MODE = os.getenv("MODEL_MODE", MODEL_BACKEND)
_RAW_VLLM_BASE_URL = os.getenv("VLLM_BASE_URL") or os.getenv("MODEL_BASE_URL")
VLLM_BASE_URL = _RAW_VLLM_BASE_URL or "http://localhost:8000/v1"
MODEL_ENDPOINT_CONFIGURED = bool(_RAW_VLLM_BASE_URL)
VLLM_API_KEY = os.getenv("VLLM_API_KEY") or os.getenv("MODEL_API_KEY", "")
VLLM_TEXT_MODEL = os.getenv("VLLM_TEXT_MODEL") or os.getenv(
"MODEL_NAME", "Qwen/Qwen2.5-7B-Instruct"
)
VLLM_VISION_MODEL = os.getenv("VLLM_VISION_MODEL", "Qwen/Qwen2.5-VL-7B-Instruct")
HF_API_TOKEN = os.getenv("HF_API_TOKEN")
MODEL_TIMEOUT_SECONDS = float(os.getenv("MODEL_TIMEOUT_SECONDS", "90"))
MODEL_REPAIR_ATTEMPTS = int(os.getenv("MODEL_REPAIR_ATTEMPTS", "1"))
MODEL_RETRY_ATTEMPTS = int(os.getenv("MODEL_RETRY_ATTEMPTS", "1"))
MODEL_COURT_MODE = _court_mode_from_env()
MODEL_COURT_ENDPOINT = os.getenv("MODEL_COURT_ENDPOINT") or VLLM_BASE_URL
MODEL_COURT_API_KEY = os.getenv("MODEL_COURT_API_KEY") or VLLM_API_KEY
MODEL_COURT_MODEL = os.getenv("MODEL_COURT_MODEL") or VLLM_TEXT_MODEL
MODEL_COURT_EXECUTION_PROFILE = os.getenv("MODEL_COURT_EXECUTION_PROFILE", "Deterministic Review")