nanobot: 2026-09-13 14:37:42 - Ollama model capabilities: log + skript do ai projektu

This commit is contained in:
lachtan
2026-09-13 14:37:42 +02:00
parent 8e5c7b84ec
commit 9e648ff453
2 changed files with 42 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
#!/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']}")

View File

@@ -52,3 +52,14 @@ Klíčová designová rozhodnutí: (1) brief je psaný pro čtenáře-agenta se
https://www.librechat.ai/docs/local/docker
- 2026-09-11: LibreChat research done — navrh postupu spusteni pres rootless podman + systemd Quadlet, artefakt: projects/ai/artifacts/librechat-podman/ (README + librechat.network + librechat.container + librechat-mongodb.container + librechat-meilisearch.container). Minimal stack api+mongo (RAG/vectordb/admin-panel vynechany kvuli RAM — duvod odstraneni OpenWebUI). MONGO_URI/MEILI_HOST nutno prepsat na DNS jmena kontejneru (quadlet sit), trvale CREDS_KEY/CREDS_IV/JWT secrets. Quadlet zvolen nad generate systemd (deprecated) a nad podman-compose-oneshot (systemd nevidi kontejnery). Rootless + linger, port 3080. Naseptany plan: nasadit na server (ktery?), pripojit Ollama/litellm endpointy pres librechat.yaml.
- 2026-09-13: - Zjišťování tool-calling schopností Ollama modelů na `nvidia.hell:11434` — jak ověřovat a co metadata neříkají:
**Metoda:** `GET /api/tags` (seznam modelů + `size`) a pro každý model `POST /api/show` → pole `capabilities` (např. `["completion","tools","thinking","vision","embedding","insert","audio"]`). Kombinace těchto dvou endpointů dá kompletní tabulku model × velikost × schopnosti (skript: `workspace/tmp/list_ollama_models.py`, lze přesunout do artifacts).
**Co `capabilities` je a není:** je to deklarace odvozená z Modelfile/manifestu modelu — Ollama tak *inzeruje* model jako tool-capable. Není to funkční test: neznamená to, že model vrátí validní `tool_calls` v odpovědi na `POST /api/chat` se `tools` v requestu. Metadata ⇒ kandidáti; funkční test ⇒ skutečná podpora.
**Zásek: `qwen3-embedding` hlásí `tools` v capabilities, ale je to embedding model** — capabilities u něj nelze brát doslova, vždy křižovat s rodinou modelu.
**Zjištěné výsledky (2026-09-12):** 57 modelů na instanci; lokálních s `tools` pod 10 GB cca 24 (nejmenší `lfm2.5-thinking` 0.7 GB, největší `gemma4`/`gemma4:e4b` 9.6 GB). `:cloud` modely mají size 0 GB (pointer na Ollama Cloud, neběží lokálně — do kritéria velikosti na disku nepatří). `gemini-3-flash-preview:cloud` vrací `POST /api/show` HTTP 410 Gone — mrtvý pointer, Ollama Cloud model stáhla.
**Otevřené:** funkční test tool callingu (reálný `tools` request na každý kandidát a ověření validního `tool_calls` v odpovědi) ještě neproveden — nabídka visí.