#!/usr/bin/env python3 """ Test chat locale Ollama — senza RAG, senza ChromaDB. Uso: python ollama/test_ollama.py """ import json import sys import urllib.error import urllib.request from pathlib import Path sys.path.insert(0, str(Path(__file__).parent.parent)) import config as _cfg OLLAMA_URL = _cfg.OLLAMA_URL MODEL = _cfg.OLLAMA_MODEL TEMPERATURE = _cfg.TEMPERATURE NO_THINK = _cfg.NO_THINK def chat(prompt: str) -> str: payload = json.dumps({ "model": MODEL, "prompt": prompt, "stream": False, "think": not NO_THINK, "options": {"temperature": TEMPERATURE}, }).encode() req = urllib.request.Request( f"{OLLAMA_URL}/api/generate", data=payload, headers={"Content-Type": "application/json"}, method="POST", ) with urllib.request.urlopen(req, timeout=300) as resp: return json.loads(resp.read())["response"].strip() def main() -> int: print(f"─── Chat Ollama ──────────────────────────────── (exit per uscire)") print(f" Modello : {MODEL}") print(f" Thinking : {'off' if NO_THINK else 'on'}") print() while True: try: user = input("Tu: ").strip() except (EOFError, KeyboardInterrupt): print("\nUscita.") break if not user: continue if user.lower() == "exit": break try: reply = chat(user) print(f"\nAssistente: {reply}\n") except (urllib.error.URLError, OSError) as e: print(f"❌ Errore: {e}") return 0 if __name__ == "__main__": sys.exit(main())