import json
from openai import OpenAI


class LLMService:
    def __init__(self, base_url: str, api_key: str, model: str, timeout_seconds: int):
        self.base_url = base_url
        self.api_key = api_key
        self.timeout_seconds = timeout_seconds
        self.client = None
        self.model = model

    def _get_client(self):
        if self.client is None:
            self.client = OpenAI(
                base_url=self.base_url,
                api_key=self.api_key,
                timeout=self.timeout_seconds,
            )
        return self.client

    def generate_json(self, prompt: str) -> dict:
        resp = self._get_client().chat.completions.create(
            model=self.model,
            response_format={'type': 'json_object'},
            messages=[
                {'role': 'system', 'content': 'You output strict valid JSON only.'},
                {'role': 'user', 'content': prompt},
            ],
            temperature=0.1,
        )
        content = resp.choices[0].message.content or '{}'
        return json.loads(content)

    def answer(self, prompt: str) -> str:
        resp = self._get_client().chat.completions.create(
            model=self.model,
            messages=[
                {'role': 'system', 'content': 'You are a call quality advisor assistant.'},
                {'role': 'user', 'content': prompt},
            ],
            temperature=0.2,
        )
        return resp.choices[0].message.content or ''
