feat: show which model is currently loaded in Ollama
- /api/loaded backend endpoint proxies Ollama /api/ps and returns
{models: [{name, expires_at}]}
- Status line under the controls shows "Hot: gemma2:9b — unloads in 4m"
with a glowing orange dot, or "No model loaded" in muted style
- Loaded models in the dropdown get a "● " prefix
- Refreshes on page load, after every translation, and 500ms after the
user pauses typing in the input box
This commit is contained in:
17
app.py
17
app.py
@@ -49,6 +49,23 @@ async def list_models() -> list[str]:
|
||||
return sorted(names)
|
||||
|
||||
|
||||
@app.get("/api/loaded")
|
||||
async def loaded_models() -> dict[str, list[dict[str, str | None]]]:
|
||||
"""Models currently resident in Ollama's memory (from /api/ps)."""
|
||||
async with httpx.AsyncClient(timeout=5) as client:
|
||||
try:
|
||||
r = await client.get(f"{OLLAMA_URL}/api/ps")
|
||||
r.raise_for_status()
|
||||
except httpx.HTTPError as e:
|
||||
raise HTTPException(502, f"Ollama unreachable: {e}") from e
|
||||
return {
|
||||
"models": [
|
||||
{"name": m["name"], "expires_at": m.get("expires_at")}
|
||||
for m in r.json().get("models", [])
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
@app.post("/api/translate")
|
||||
async def translate(req: TranslateRequest) -> StreamingResponse:
|
||||
text = req.text.strip()
|
||||
|
||||
Reference in New Issue
Block a user