import os
import time
import requests


class QfoxaiClient:
    def __init__(self, api_key: str, base_url: str = "https://qfoxai.com/v1", model: str = "QFOXAI"):
        self.api_key = api_key
        self.base_url = base_url.rstrip("/")
        self.model = model

    def chat(self, prompt: str, max_tokens: int = 300, retries: int = 2) -> dict:
        for attempt in range(retries + 1):
            response = requests.post(
                f"{self.base_url}/chat/completions",
                headers={
                    "Authorization": f"Bearer {self.api_key}",
                    "Content-Type": "application/json",
                },
                json={
                    "model": self.model,
                    "messages": [{"role": "user", "content": prompt}],
                    "max_tokens": max_tokens,
                },
                timeout=60,
            )
            if response.ok:
                return response.json()
            if response.status_code in (429, 500, 502, 503, 504) and attempt < retries:
                time.sleep(0.5 * (attempt + 1))
                continue
            raise RuntimeError(response.json().get("error", {}).get("message", response.text))


client = QfoxaiClient(os.environ["QFOXAI_API_KEY"])
result = client.chat("Hello QFOXAI")
print(result.get("choices", [{}])[0].get("message", {}).get("content", result))