|
import ollama |
|
import json |
|
from pydantic import BaseModel |
|
|
|
class ChatResponse(BaseModel): |
|
response: str |
|
|
|
class OllamaChat: |
|
response: str |
|
|
|
def __init__(self): |
|
"""Initialize the Ollama model and pull it locally if needed.""" |
|
|
|
self.model = "hf.co/jnjj/vcvcvcv:Q4_0" |
|
self.system_prompt = ( |
|
"You are a concise and natural-sounding assistant. " |
|
"Answer questions briefly, in one or two sentences at most, " |
|
"as if responding for text-to-speech (TTS). Keep it natural and conversational." |
|
) |
|
|
|
|
|
try: |
|
print(f"Descargando el modelo {self.model}…") |
|
ollama.pull(model=self.model) |
|
print("Modelo descargado correctamente.") |
|
except Exception as e: |
|
print(f"No se pudo descargar el modelo: {e}") |
|
|
|
def get_response(self, user_input: str) -> str: |
|
"""Processes the input text using Ollama and returns only the response string.""" |
|
result = ollama.chat( |
|
model=self.model, |
|
messages=[ |
|
{"role": "system", "content": self.system_prompt}, |
|
{"role": "user", "content": user_input} |
|
], |
|
format=ChatResponse.model_json_schema() |
|
) |
|
|
|
response = json.loads(result["message"]["content"])["response"] |
|
return response |
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
ollama_chat = OllamaChat() |
|
user_text = input("Enter your question: ") |
|
print("\nOllama Response:\n", ollama_chat.get_response(user_text)) |
|
|