Files
2026-04-13 18:03:33 -07:00

37 lines
1.1 KiB
Python

import requests
import logging
import time
import json
from config import OLLAMA_URL, OLLAMA_MODEL
log = logging.getLogger(__name__)
def call_llm(prompt, timeout=90):
deadline = time.time() + timeout
try:
with requests.post(
OLLAMA_URL,
json={"model": OLLAMA_MODEL, "prompt": prompt, "stream": True, "format": "json"},
stream=True,
timeout=30,
) as r:
r.raise_for_status()
chunks = []
for line in r.iter_lines():
if time.time() > deadline:
log.warning("LLM call exceeded wall-clock timeout of %ds", timeout)
break
if not line:
continue
try:
data = json.loads(line)
chunks.append(data.get("response", ""))
if data.get("done"):
break
except json.JSONDecodeError:
continue
return "".join(chunks)
except requests.RequestException as e:
log.error("LLM call failed: %s", e)
return ""