Spaces:
Paused
Paused
Download server/insight.py from Bit-Trading-Company/ASE-GLM: direct link, hf CLI and curl.
- Browser
- Download file 1.61 kB
-
https://huggingface.co/spaces/Bit-Trading-Company/ASE-GLM/resolve/main/server/insight.py
- Command line
-
hf download hf://spaces/Bit-Trading-Company/ASE-GLM/server/insight.py
-
curl -L -o insight.py https://huggingface.co/spaces/Bit-Trading-Company/ASE-GLM/resolve/main/server/insight.py
1.61 kB
| """Live metadata from the Hub, for the panels that exist to show it. | |
| Separate from `catalog.py` because these calls can be slow or fail: the app | |
| must start and chat without them. | |
| """ | |
| from __future__ import annotations | |
| import httpx | |
| HUB = "https://huggingface.co/api/models" | |
| async def model_info(model_id: str, token: str | None) -> dict: | |
| """Provider routing and card metadata for one model.""" | |
| headers = {"Authorization": f"Bearer {token}"} if token else {} | |
| params = {"expand[]": ["inferenceProviderMapping", "pipeline_tag", "gated", "downloads"]} | |
| try: | |
| async with httpx.AsyncClient(timeout=15.0) as client: | |
| r = await client.get(f"{HUB}/{model_id}", headers=headers, params=params) | |
| if r.status_code >= 400: | |
| return {"id": model_id, "error": f"hub returned {r.status_code}"} | |
| data = r.json() | |
| except httpx.HTTPError as e: | |
| return {"id": model_id, "error": f"{type(e).__name__}: {e}"} | |
| mapping = data.get("inferenceProviderMapping") or {} | |
| providers = [] | |
| if isinstance(mapping, dict): | |
| for name, spec in mapping.items(): | |
| providers.append({ | |
| "provider": name, | |
| "status": spec.get("status"), | |
| "providerId": spec.get("providerId"), | |
| "task": spec.get("task"), | |
| "firstParty": bool(spec.get("isModelAuthor")), | |
| }) | |
| return { | |
| "id": model_id, | |
| "pipeline": data.get("pipeline_tag"), | |
| "gated": data.get("gated"), | |
| "downloads": data.get("downloads"), | |
| "providers": providers, | |
| } | |