"""Ekstrakcja JSON z obowiązkową walidacją Pydantic."""
import json
import os

from openai import OpenAI
from pydantic import BaseModel, Field


class Ticket(BaseModel):
    category: str
    priority: int = Field(ge=1, le=5)


client = OpenAI(
    api_key=os.environ["JANUSZ_API_KEY"],
    base_url=os.getenv("JANUSZ_BASE_URL", "https://janusz.fabryka.ai/v1"),
    timeout=30.0,
)
response = client.chat.completions.create(
    model="bielik-11b-v3",
    messages=[{
        "role": "user",
        "content": (
            "Zwróć WYŁĄCZNIE JSON z polami category (sprzedaz, wsparcie, reklamacja) "
            "i priority (1-5). Zgłoszenie: Po aktualizacji nie mogę się zalogować."
        ),
    }],
    temperature=0.0,
    max_tokens=100,
)
raw = response.choices[0].message.content or ""
ticket = Ticket.model_validate(json.loads(raw))
print(ticket.model_dump_json(indent=2))
