from __future__ import annotations from contextvars import ContextVar import os _gemini_api_key: ContextVar[str] = ContextVar("gemini_api_key", default="") _hf_api_key: ContextVar[str] = ContextVar("hf_api_key", default="") def set_runtime_api_keys(*, gemini_api_key: str = "", hf_api_key: str = "") -> None: _gemini_api_key.set(gemini_api_key.strip()) _hf_api_key.set(hf_api_key.strip()) def get_gemini_api_key() -> str: runtime_key = _gemini_api_key.get() if runtime_key or _requires_user_keys(): return runtime_key return os.getenv("GEMINI_API_KEY", "").strip() def get_hf_api_key() -> str: runtime_key = _hf_api_key.get() if runtime_key or _requires_user_keys(): return runtime_key return ( os.getenv("HF_API_KEY") or os.getenv("HG_API_KEY") or os.getenv("HUGGINGFACEHUB_API_TOKEN") or "" ).strip() def has_hf_api_key() -> bool: return bool(get_hf_api_key()) def _requires_user_keys() -> bool: return os.getenv("REQUIRE_USER_API_KEYS", "").strip().lower() in {"1", "true", "yes"}