#!/usr/bin/env python3 """ Проверка деталей модели в Ollama: квантизация, размер, контекст. Использование: python docs/check_ollama_model.py OLLAMA_URL=http://192.168.88.15:11434 python docs/check_ollama_model.py OLLAMA_URL=... MODEL=qwen3:14b python docs/check_ollama_model.py """ import json import os import urllib.request OLLAMA_URL = os.environ.get("OLLAMA_URL", "http://localhost:11434") MODEL = os.environ.get("MODEL", "qwen3:14b-q8_0") def main() -> None: url = f"{OLLAMA_URL.rstrip('/')}/api/show" body = json.dumps({"model": MODEL}).encode("utf-8") req = urllib.request.Request(url, data=body, method="POST") req.add_header("Content-Type", "application/json") try: with urllib.request.urlopen(req, timeout=10) as resp: data = json.load(resp) except urllib.error.URLError as e: print(f"Ошибка подключения к {OLLAMA_URL}: {e}") raise SystemExit(1) except urllib.error.HTTPError as e: print(f"HTTP {e.code}: {e.reason}") if e.fp: try: body = e.fp.read().decode("utf-8", errors="replace") print(body[:500]) except Exception: pass raise SystemExit(1) details = data.get("details") or {} info = data.get("model_info") or {} print(f"Модель: {MODEL}") print(f"Ollama: {OLLAMA_URL}") print("-" * 40) print(f"Формат: {details.get('format', '—')}") print(f"Квантизация: {details.get('quantization_level', '—')}") print(f"Размер (params): {details.get('parameter_size', '—')}") print(f"Семейство: {details.get('family', '—')}") # Контекст из model_info (ключ зависит от семейства: qwen3.context_length и т.д.) for key, val in info.items(): if "context_length" in key: print(f"Контекст (токенов): {val}") break else: print("Контекст (токенов): —") if data.get("modified_at"): print(f"Изменён: {data['modified_at']}") if __name__ == "__main__": main()