Really-amin's picture
Upload 317 files
eebf5c4 verified
from __future__ import annotations
from fastapi import APIRouter, Query, Body
from typing import Literal, List
from backend.services.hf_registry import REGISTRY
from backend.services.hf_client import run_sentiment
router = APIRouter(prefix="/api/hf", tags=["huggingface"])
@router.get("/health")
async def hf_health():
return REGISTRY.health()
@router.post("/refresh")
async def hf_refresh():
return await REGISTRY.refresh()
@router.get("/registry")
async def hf_registry(kind: Literal["models","datasets"]="models"):
return {"kind": kind, "items": REGISTRY.list(kind)}
@router.get("/search")
async def hf_search(q: str = Query("crypto"), kind: Literal["models","datasets"]="models"):
hay = REGISTRY.list(kind)
ql = q.lower()
res = [x for x in hay if ql in (x.get("id","").lower() + " " + " ".join([str(t) for t in x.get("tags",[])]).lower())]
return {"query": q, "kind": kind, "count": len(res), "items": res[:50]}
@router.post("/run-sentiment")
async def hf_run_sentiment(texts: List[str] = Body(..., embed=True), model: str | None = Body(default=None)):
return run_sentiment(texts, model=model)