nanobot: 2026-09-13 14:37:42 - Ollama model capabilities: log + skript do ai projektu
This commit is contained in:
31
projects/ai/artifacts/ollama-model-capabilities.py
Normal file
31
projects/ai/artifacts/ollama-model-capabilities.py
Normal 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']}")
|
||||||
@@ -52,3 +52,14 @@ Klíčová designová rozhodnutí: (1) brief je psaný pro čtenáře-agenta se
|
|||||||
|
|
||||||
https://www.librechat.ai/docs/local/docker
|
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-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í.
|
||||||
|
|||||||
Reference in New Issue
Block a user