Files
rag-from-scratch/ollama/test_ollama.py
T

67 lines
1.7 KiB
Python
Raw Normal View History

#!/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())