ngibs-ai-search / local_model.py
jaihodigital's picture
Update local_model.py
4840f8b verified
import requests
import json
from typing import Dict, Any, List
import os
class LocalModelManager:
def __init__(self):
self.base_url = os.getenv("OLLAMA_API_URL", "https://ollama-api-y8pj.onrender.com")
self.api_generate = f"{self.base_url}/api/generate"
self.api_tags = f"{self.base_url}/api/tags"
def check_ollama_status(self) -> bool:
try:
response = requests.get(self.api_tags, timeout=20)
return response.status_code == 200
except:
return False
def get_available_models(self) -> List[str]:
try:
response = requests.get(self.api_tags, timeout=20)
if response.status_code == 200:
models = response.json().get("models", [])
return [model["name"] for model in models]
except:
pass
return ["gemma3:1b"]
def query_model(self, prompt: str, model: str = "gemma3:1b") -> Dict[str, Any]:
try:
print(f"🤖 Querying {model} at {self.api_generate}")
data = {
"model": model,
"prompt": prompt,
"stream": False,
"options": {
"temperature": 0.7,
"num_predict": 400
}
}
headers = {
"Content-Type": "application/json",
"Accept": "application/json"
}
response = requests.post(
self.api_generate,
json=data,
headers=headers,
timeout=120
)
print(f"Response status: {response.status_code}")
if response.status_code == 200:
result = response.json()
return {
"success": True,
"response": result.get("response", "No response generated"),
"model": model,
"error": None
}
else:
print(f"Error response: {response.text}")
return {
"success": False,
"response": None,
"model": model,
"error": f"HTTP {response.status_code}: {response.text}"
}
except requests.exceptions.ConnectionError:
return {
"success": False,
"response": None,
"model": model,
"error": "Connection failed. Check if Ollama service is running."
}
except requests.exceptions.Timeout:
return {
"success": False,
"response": None,
"model": model,
"error": "Request timed out. Model might be busy."
}
except Exception as e:
return {
"success": False,
"response": None,
"model": model,
"error": f"Error: {str(e)}"
}
local_model_manager = LocalModelManager()