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)) | |