from ollama import Client
from walkxr_ai.models.base_model import BaseModel
from langsmith import traceable
class OllamaModel(BaseModel):
def __init__(self, model_name='llama3', host='http://localhost:11434'):
self.client = Client(host=host)
self.model_name = model_name
@traceable(
name="OllamaModel.generate_response",
tags=["llama3", "local"],
metadata={"model": "llama3"}
)
def generate_response(self, prompt: str, history: list) -> str:
try:
messages = [
{"role": "system", "content": "You are an empathetic AI agent."}
]
messages += [
{"role": "user", "content": f"User: {u}\nAssistant: {a}"}
for u, a in history
]
messages.append({"role": "user", "content": prompt})
result = self.client.chat(
model=self.model_name,
messages=messages
)
return result['message']['content']
except Exception as e:
return f"[Model error] {str(e)}"