31 lines
998 B
Python
31 lines
998 B
Python
#!/usr/bin/env python3
|
|
"""List Ollama models on nvidia.hell:11434 with size + capabilities."""
|
|
import json
|
|
import urllib.request
|
|
|
|
BASE = "http://nvidia.hell:11434"
|
|
|
|
with urllib.request.urlopen(f"{BASE}/api/tags", timeout=10) as r:
|
|
tags = json.load(r)
|
|
|
|
models = []
|
|
for m in tags.get("models", []):
|
|
name = m.get("name")
|
|
size = m.get("size", 0)
|
|
# fetch capabilities via /api/show
|
|
req = urllib.request.Request(
|
|
f"{BASE}/api/show",
|
|
data=json.dumps({"model": name}).encode(),
|
|
headers={"Content-Type": "application/json"},
|
|
)
|
|
try:
|
|
with urllib.request.urlopen(req, timeout=10) as r:
|
|
show = json.load(r)
|
|
caps = show.get("capabilities", [])
|
|
except Exception as e:
|
|
caps = [f"ERR: {e}"]
|
|
models.append({"name": name, "size_gb": round(size / 1e9, 1), "capabilities": caps})
|
|
|
|
models.sort(key=lambda x: x["size_gb"])
|
|
for m in models:
|
|
print(f"{m['size_gb']:>6.1f} GB {','.join(m['capabilities']):<40} {m['name']}") |