Spaces:
Configuration error
Configuration error
from __future__ import annotations | |
from fastapi import ( | |
APIRouter, | |
Response, | |
) | |
import huggingface_hub | |
from huggingface_hub.hf_api import RepositoryNotFoundError | |
from faster_whisper_server import hf_utils | |
from faster_whisper_server.dependencies import ModelManagerDependency # noqa: TCH001 | |
router = APIRouter() | |
def health() -> Response: | |
return Response(status_code=200, content="OK") | |
def pull_model(model_name: str) -> Response: | |
if hf_utils.does_local_model_exist(model_name): | |
return Response(status_code=200, content="Model already exists") | |
try: | |
huggingface_hub.snapshot_download(model_name, repo_type="model") | |
except RepositoryNotFoundError as e: | |
return Response(status_code=404, content=str(e)) | |
return Response(status_code=201, content="Model downloaded") | |
def get_running_models( | |
model_manager: ModelManagerDependency, | |
) -> dict[str, list[str]]: | |
return {"models": list(model_manager.loaded_models.keys())} | |
def load_model_route(model_manager: ModelManagerDependency, model_name: str) -> Response: | |
if model_name in model_manager.loaded_models: | |
return Response(status_code=409, content="Model already loaded") | |
with model_manager.load_model(model_name): | |
pass | |
return Response(status_code=201) | |
def stop_running_model(model_manager: ModelManagerDependency, model_name: str) -> Response: | |
try: | |
model_manager.unload_model(model_name) | |
return Response(status_code=204) | |
except (KeyError, ValueError) as e: | |
match e: | |
case KeyError(): | |
return Response(status_code=404, content="Model not found") | |
case ValueError(): | |
return Response(status_code=409, content=str(e)) | |