Spaces:
Running
Running
| """Inference backends — dispatches to OpenRouter (UI server) or Codex (local). | |
| Backend selection (`active_backend`): | |
| * On a Hugging Face Space (``SPACE_ID``/``SPACE_HOST`` set) -> ALWAYS ``openrouter``. | |
| A Space can't hold codex's interactive OAuth and the codex CLI isn't installed there. | |
| * Otherwise -> env ``INFERENCE_BACKEND`` (``openrouter`` | ``codex``), default ``openrouter``. | |
| Local computing sets ``INFERENCE_BACKEND=codex`` in ``.env`` to bill the ChatGPT | |
| subscription via the codex CLI instead of the OpenRouter API. | |
| Both backends expose the same surface, so callers (ui/cache.py, ui/app.py) are unchanged. | |
| """ | |
| from __future__ import annotations | |
| import os | |
| _BACKENDS = {"openrouter", "codex"} | |
| def active_backend() -> str: | |
| """Resolve the inference backend for this process (see module docstring).""" | |
| if os.environ.get("SPACE_ID") or os.environ.get("SPACE_HOST"): | |
| return "openrouter" | |
| name = os.environ.get("INFERENCE_BACKEND", "openrouter").strip().lower() | |
| return name if name in _BACKENDS else "openrouter" | |
| def backend_label() -> str: | |
| """Human label for the active backend (UI health line).""" | |
| return "Codex" if active_backend() == "codex" else "OpenRouter" | |
| def _backend(): | |
| if active_backend() == "codex": | |
| from inference import codex as module | |
| else: | |
| from inference import openrouter as module | |
| return module | |
| def run_inference( | |
| system_prompt: str, user_prompt: str, *, model: str | None = None, timeout: float | None = None | |
| ) -> str: | |
| """Run one completion through the active backend. ``timeout`` is forwarded only when | |
| given, so each backend applies its own default (OpenRouter 180s, Codex 900s).""" | |
| kwargs: dict = {"model": model} | |
| if timeout is not None: | |
| kwargs["timeout"] = timeout | |
| return _backend().run_inference(system_prompt, user_prompt, **kwargs) | |
| def available_models() -> list[str]: | |
| return _backend().available_models() | |
| def default_model() -> str: | |
| return _backend().default_model() | |
| def healthcheck() -> tuple[bool, str]: | |
| return _backend().healthcheck() | |
| __all__ = [ | |
| "active_backend", | |
| "backend_label", | |
| "available_models", | |
| "default_model", | |
| "healthcheck", | |
| "run_inference", | |
| ] | |