kpn models: näyttää Ollamasta ladatut mallit + WASM-tilan

Hakee Ollaman /api/tags-endpointista ladatut mallit kokoneen,
parametreineen ja kvantisointitasoineen. WASM-tila näkyy myös.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-07 07:29:09 +03:00
parent 49a1629646
commit 3139d1ac65

View File

@@ -2493,14 +2493,36 @@ Files: ${Object.keys(generatedFiles).join(', ')}`;
}
if (sub === 'models') {
termLog(' <span style="color:#d29922">Selain (kpn load):</span>', '#c9d1d9');
termLog(' qwen-coder:0.5b <span style="color:#8b949e">~990 MB | WASM ~0.4 tok/s</span>');
termLog(' <span style="color:#d29922">Selain (kpn load 1):</span>', '#c9d1d9');
const btn = document.getElementById('agent-compute-btn');
const wasmLoaded = btn?.dataset.state === 'ready';
termLog(` qwen-coder:0.5b <span style="color:#8b949e">~990 MB | WASM ~0.4 tok/s</span>${wasmLoaded ? ' <span style="color:#3fb950">✓ ladattu</span>' : ''}`);
termLog(' <span style="color:#3fb950">Natiivi (Ollama + GPU):</span>', '#c9d1d9');
termLog(' qwen2.5-coder:7b <span style="color:#8b949e">~4.7 GB | NVIDIA ~80 tok/s | AMD ~40 tok/s | Apple ~30 tok/s</span>');
termLog(' qwen2.5-coder:3b <span style="color:#8b949e">~1.9 GB | NVIDIA ~120 tok/s</span>');
termLog(' qwen2.5-coder:1.5b <span style="color:#8b949e">~1 GB | NVIDIA ~150 tok/s</span>');
termLog(' Vaihda malli: <span style="color:#58a6ff">OLLAMA_MODEL=qwen2.5-coder:7b</span>', '#8b949e');
termLog(' Hub reitittää automaattisesti nopeimmalle solmulle', '#8b949e');
// Haetaan Ollamasta ladatut mallit
fetch('/api/v1/hardware').then(r => r.json()).then(hw => {
if (hw.gpu_name && hw.gpu_name !== 'ei natiivisolmua') {
termLog(` <span style="color:#8b949e"> GPU: ${hw.gpu_name} | VRAM: ${Math.round((hw.vram_mb||0)/1024)} GB</span>`);
}
}).catch(() => {});
fetch('http://' + window.location.hostname + ':11434/api/tags').then(r => r.json()).then(data => {
const models = data.models || [];
if (models.length === 0) {
termLog(' <span style="color:#8b949e">Ei ladattuja malleja — kpn load &lt;numero&gt;</span>');
} else {
for (const m of models) {
const sizeGB = (m.size / 1024 / 1024 / 1024).toFixed(1);
const params = m.details?.parameter_size || '?';
const quant = m.details?.quantization_level || '';
termLog(` <span style="color:#3fb950">✓</span> ${m.name} <span style="color:#8b949e">${sizeGB} GB | ${params} ${quant}</span>`);
}
}
termLog(' Vaihda: <span style="color:#58a6ff">kpn load &lt;numero&gt;</span>', '#8b949e');
}).catch(() => {
termLog(' qwen2.5-coder:7b <span style="color:#8b949e">~4.7 GB</span>');
termLog(' qwen2.5-coder:3b <span style="color:#8b949e">~1.9 GB</span>');
termLog(' qwen2.5-coder:1.5b <span style="color:#8b949e">~1 GB</span>');
termLog(' <span style="color:#8b949e">Ollama ei saatavilla — näytetään oletuslista</span>');
});
return;
}